当前位置: 首页 > 科技观察

说说SR的图灵完备性

时间:2023-03-21 16:58:43 科技观察

本文转载自微信公众号“zartbot”,作者Zabot的网线剪。转载本文请联系zartbot公众号。昨天在公司看到一个PPT,上面写着两个大字:SRforAnything,NetworkasaComputer。这个ppt不用问是谁口述的,对错不做评论。我只是想用网络工程师的技术帮助穷人可计算性和图灵完备性的知识留给你自己判断。图灵机图灵机是英国数学家艾伦·图灵在1936年的文章?中提出的一种抽象计算模型,在论文的第三章中描述了一个计算机的例子,即一个机器包含一个无穷大长长的纸带,纸带被分成了一些正方形,然后上面有一些二进制编码的符号。有一个预先约定的命令。例如,R表示机器将扫描右侧的方块。同理,L表示左边,E表示擦除,P表示打印等。计算是根据读写头和规则表来决定动作。当读写头停止时,输出的就是计算结果:图灵完备图灵完备是指当你设计一套操作数据的规则时,这套指令或语言可以模拟一个图灵机,那么这套规则就是图灵完备。通常,很多编程语言的图灵完备性的影响主要需要考虑分支和循环的问题。当然,有些语言是故意设计成非图灵完备的。例如,很多区块链合约执行指令不支持分支跳转和循环。主要用途由其使用场景和安全考虑决定。SR的图灵完备SR本身在编码方面并不是图灵完备的。因为SRLabel只能顺序执行。当然也可以做一些特殊的处理。比如Binding-SID可以看成是一个特殊的函数调用,然后可以借用MPLSStack结构将函数压入栈中。同时,我们也可以定义一些特殊的Label行为来进行Label跳转,但是还有一个缺陷,在处理消息的时候,我们没有设计相应的状态机。如果要设计成Stateful转发特性,需要相应的流表和动态状态更新。从某种意义上说,因为MPLS-SR具有栈结构,所以标签的添加和弹出都相对容易。然而,SRv6是一场工程灾难。由于必须保留数据包的源IP地址,一方面存在uRPF的缺陷,另一方面同时维护IP头和操作SRH导致了一系列问题。例如,交换机通常无法处理如此大量的数据,SRv6标签堆栈的深度是有限的。对于栈结构,SRv6的SRH在消息的中间。堆叠和弹出对于P4等开关来说很容易,只需在Deparser上插入或切断即可。但是传统的CPU架构需要大量的内存移动操作。我还在开玩笑。Intel什么时候能够生产用于批量操作I/O的解析器?可以集成在网卡上,也可以集成在CPU上。。。在设计时,如果可以丢弃原有的IPv6报头,基于SRH信息重构是一个较好的方案。这样一来,标签堆叠堆叠的处理就容易多了,同时也可以避免uRPF的缺陷。所以反过来,你就能理解为什么RFC8663MPLS-SRoverUDP在很多场景下都能被接受。但是很抱歉,MPLS-SR的问题来自标签栈的长度,没有SRv6中定义的P4的图灵完备性。让我们来看另一个问题。P4的设计一开始完全是基于硬件能力。一旦涉及分支很容易带来pipelinestall,所以P4早期的MAU并没有打算支持分支预测,更多的是通过使用不同的匹配表产生新的action来分担流量给另一个MAU来实现。Torfino-2增加了一些功能,为了实现更灵活多样的计算,Pensando的实现直接增加了寄存器/PC/Branch设备。NanoPU直接在P4MAU旁边堆叠了一颗处理器。网络是否需要图灵完备的编程很多人总喜欢一招打天下,但真的有必要面面俱到吗?前段时间某云同学发朋友圈说目标应该是世界第一,我补充说价格一定是世界第一。当成年人有足够的支持时,他们可以轻松地说他们不需要选择,他们想要。但技术总是需要权衡取舍。这就是为什么加法容易减法难的原因。计算、存储和网络的结合有其内在的巧思。InMemoryComputing和边缘计算提出的算力网络就是为了解决冯·诺依曼架构的缺陷,让计算规模进一步提升。一步。但是可信计算的另一个问题会困扰大家。在架构上,我不认同网络可以实现大量图灵完备的计算,而是可以通过一系列的组合,为计算和存储搭建更好的桥梁。