在过去的几年中,针对Overlay是否需要使用RDMA和Segment Routing进行了一些争论。

究竟是SD-WAN在Segment Routing之上,还是Segment Routing在SD-WAN之上?进一步扩展这个话题,涉及到Overlay网络。究竟是需要在覆盖网络上使用分段路由(Segment Routing over Overlay),还是在分段路由上使用覆盖网络(Overlay over Segment Routing)?Ruta 和 SR over UDP 是两种不同的路由技术,而 SRv6 则是一种新型的路由技术。从本质上讲,应用程序的观点与网络的观点是相对应的。大约半个月前,一些与我认识的网络工程师朋友向我发出抱怨,说云原生技术的普及已经导致了网工们的失业情况,语气中流露出一份沮丧和悲凉。每一次科技变革都有其影响。如果你不能成为推动发展的一股力量,只能沦为一条被铺设路面上又一块被推平,碾压的石子。孔乙己曾经做过网工,可是最后没有通过工业英语考试,也不擅长生意;于是日渐变得更加穷困,差点儿要去乞讨了。幸运的是,我能熟练地安装水晶灯,然后换取一顿饭。他还有个坏毛病,就是爱贪杯懒惰。只坐了几天,就连人带网线钳一起消失了。他喊了好几次,但是没人理着。孔乙己深知不能和那些人交谈,只好转而和孩子们说话。他望着他们天真的面庞,心中仿佛也变得纯真起来。他曾问我:“你学过网络吗?”我微微点头。他说:"既然你学过网络,那我就来考考你了。网线中的8根线是如何排列的?“我认为,像讨饭者一样的人,也有资格考虑到我的问题吗?”他掉过头去,不再理睬。孔乙己等了很长时间,非常真心地说:“不能放过吗?”记住,我会教给你。这些线的顺序应该记住。在未来从事网络工程师的职业中,需要使用打水晶头。我心里感叹我和网络工程师的级别还有很远,而且我们网络工程师也从来不再做水晶头了。既觉得好笑又有些不耐烦,我懒洋洋地回答他说:“谁让你教,不是橙白橙绿白蓝蓝白绿棕白棕吗?”孔乙己显得非常高兴,用两个长指甲敲打着柜台,并点头说,“是啊是啊!”你知道吗,水晶头有两种制作方法。我越来越不耐烦了,嘴唇紧抿着,走得更远了。自从那天起,很久很久都没有再见到孔乙己了。年关到了,掌柜拿下账簿说道:“孔乙己还欠着十九块钱呢!等到来年的端午节,又有人说:"孔乙己还欠着十九个钱呢!中秋时他没来,到了年关也没出现。我至今都没有见到孔乙己,很可能他已经去世了。在过去三十多年中,由于其重资产的特点,网络一直处于几个大寡头的控制之下,步伐蹒跚,遭遇了许多严重的技术失误。三十年前的网络是相当复杂的,使用的是x.25/FR/ATM等技术,甚至普通用户连接网络还需要通过AT指令拨号163、169。网络的神秘面纱使应用开发人员望而却步,即使是《计算机网络》这样的入门书对应用开发者来说也是难以理解的,更不用说复杂的路由协议以及可能导致广播风暴或路由环路的问题了。这些技术曾经是网工们引以为豪的。如今,到处都可以看到以太网,似乎配置也不是很复杂。而网络工程师们在玩SDN时,伴随着几十年前的BGP却也引发了不少事故。所以当应用出现问题时,第一条报错信息就是请检查您的网络。在云计算的推动下,网络工程师的地位日益下降。许多公司的云计算资源都在计算团队的掌控下,使得网络工程师对于云网络的认知越来越模糊,最终迫使他们自行探索云原生领域。这使得网络工程师的地位雪上加霜,难以脱离困境。尽管过去几年,网络工程师们不遗余力地学习Python和DevOps,并利用Python编写BGP等路由协议,但这些技术越来越偏离实际应用,因此自然产生的技术难以应用。因此,SDN的失败是必然的。需要注意的是,下图中的两个X都与网络有关。对于从事SD-WAN领域的人来说,有些人好像连分布式数据库一致性的发展都没弄明白,因此在软件复杂度方面可能会遇到困难。Overlay技术是否需要使用远程直接内存访问(RDMA)?

让我们先讨论一个简单的问题,有人说RDMA技术非常宝贵,AWS并不关心。这实质上也是网络工作者的思维方式。然而,背后的推理应该是Overlay是否需要使用RDMA技术?不清楚这个写这段代码的人是否熟悉SRD的驱动程序代码,如果不了解,至少可以理解前面的#include部分吧?在虚拟机层面实现Kernel bypass的

RDMA具有相对良好的生态,必然需要考虑这一点。从这个角度来看,SRD和eRDMA本质上都是在追求相同的目标。由于发现了DDIO等一系列问题和存算一体化的结构中的内存指令扩展以及未来CXL能够很容易操作各种适配器上的内存和I/O隔离控制Jitter,以及在某个400G的项目上遇到了内存瓶颈,因此希望通过CXL.cache直接访问网卡内存来缓解DDIO和PCIe总线带来的jitter,并且为这样的内存操作增加一些向量化的指令集,以省掉最后一个DMA的buffer拷贝。因此,NetDAM创建了一个可编程的多机共享内存的抽象层。然而,为虚拟机提供SMC(共享内存通信)仍然是必要的基础。只是将RDMA的QP机制转换为IP地址+内存地址寻址操作,并增加了一些指令集扩展空间,同时将系统容量扩展到更大的程度。下一个问题是SRD简单哈希是否有效?在标准的脊柱叶架构下,原本使用的TCP需要采用flowlet方式进行转发,并且保序需求可能导致重排和抖动。与QUIC相似的SRD,将通信拆分成更小的块,并且无需在传输层维护顺序性,这一点非常优秀。我很高兴地看到AWS强调Jitter的重要性,而不是仅关注延迟。这一点真是太棒了。在可靠传输的过程中,Jitter对于影响的程度要比延迟还要大。然而,AWS或许忽略了一个事实,即许多数据处理具有明显的链式特征。利用RDMA实现如下通信可能会很困难:

。这也是为什么nVidia在收购卖螺丝公司后,宁愿将以前的环形全局约简算法改为基于树的全局约简算法。本质上,链式反应会扩大Jitter(即通信延迟),如果每一跳都通过主机的PCIe,Jitter会更加放大:

。然而,我们必须意识到,目前最快的超级计算机大量使用2D-Torus、3D-Torus,甚至有6D-Torus等拓扑结构。这个问题的本质是关于如何通过总线连接多个机器网络的片网NOC问题。然而,RDMA的QP结构决定了它的寻址和链式反应能力是行不通的。NetDAM的本质是利用了Segment-Routing的概念,来消除QP结构。未来,基于UDP的SMC通信标准将成为IoT等场景中十分实用的互联网终端通信方式。至于为什么Segment-Routing在这里是有用的,我们可以看一看CHI总线。本质上,由于功耗和布线的问题,数据中心内部存在着与NOC相似的问题。通过分析得出如下结论:Overlay和虚机对RDMA的需求是由SMC和已有Kernel Bypass的生态所带来的,无论是eRDMA还是SRD,在目前阶段这是唯一的可选方法。能否对底层实现进行更多的优化,比如内存操作时考虑保序、丢包容错、一致性问题,并实现事务化处理等。如果要进行比较,应该将RDMA与NetDAM进行比较,而不是简单地比较节奏。NetDAM本身也需要等待CXL逐渐成熟,例如Linux中对于CXL的网卡内存和显卡显存的操作驱动将逐步完善,但这个过程至少需要3至5年的时间。可能CXL还需要像CHI那样定义更加灵活的拓扑结构。如想了解更多,请参考NetDAM的论文:https://arxiv.org/abs/2110.14902。在这个变化的时期,我们是否需要SR作为Overlay呢?许多网络团队都对

Ruta这样的项目评价不高,因为SRv6更棒呀!为什么需要再设计另一套系统来解决SID过于冗长的问题呢?事实上,我们可以通过压缩SID的方式来解决这个问题。然而,他们忽略了本质的区别是Segment Routing是放在覆盖层还是基础层?为了谋取自身利益,网络团队必然会选择能够控制覆盖层的协议。对于寻求我来进行Ruta方面工作的团队来说,大多数是应用团队,尤其是那些提供音视频和CDN服务的团队,以及一些容器网络方面的团队。基于Overlay网络实现SR技术是不可避免的选择,因为它可以实现对业务流量的调度和多云互联。在混合云环境中,当我们为客户部署SD-WAN时,常常会面临许多挑战。举例来说,如果要连接到AWS,则需要建立一个IPSec隧道,这需要我们拥有自己的SD-WAN路由器并与AWS进行通信。而要连接到Azure,则需重分布BGP并使用专用的NVA节点才能实现。其他云服务也面临着VPC处于静态路由时代的挑战,比如对于某些客户要接入阿里云,需要自行编写BGP+aliyun-cloud-shell的小程序来帮助双方重新分发路由。因此,在渣的论文中,使用分段路由构建透明VPC的效果比传统的Transit VPC技术更为显著,能够更好地实现云无关性。这是因为大量的云原生K8S节点和容器网络本身就是基于VPC构建一个覆盖层。难道网络团队被云原生所取代,陷入接近失业的境地的根本原因不是明显得很吗?在传统的VPC架构下,业务往往需要进行服务链路调用,但是VPC架构难以支持这种链式触发的需求。比如对于超级计算等业务,如何在Overlay上实现MPI-RingAllreduce等低延迟场景的调用,是一个很大的挑战。能否利用协议编码在覆盖网络上降低API网关的负担?这些问题需要网络团队的协助来解决,但遗憾的是,网络团队仍然沉迷于自己提供的SR Overlay中,做着白日梦。结论:在VPC上构建SegmentRouting是关键。在面对新变化时,舍弃SRv6信仰,去接受它并应用于应用程序。另一个问题则是运营商通常会遇到的——当你已经构建好SRv6或SR-MPLS网络后,常常会发现业务没有立即迁移过来。这个问题非常明显,谁会有那么多时间和无聊,为了你而修改代码,还必须要求应用程序有Root权限,并且需要通过Kernel进行转发呢?他们费了很大的力气,才完成了 Kernel Bypass,现在又让你去 Kernel 部分再耽误一番……尤其是那些家庭路由器上的小终端,国内有数千万台,值得为了一个 SRv6 技术全部更换吗?从设备商的角度来看,他们自然会有动力;但对于运营商而言,则势必不行。在大量宽带接入设备难以升级改造的情况下,为何不考虑使用4over6技术呢?通过使用Ruta在接入侧实现Binding-SID映射,可以轻松将传统网络引入SRv6或SR-MPLS网络。许多技术都在不断地轮回更新,架构师要考虑整个生态系统和历史遗留问题。即使架构师已经了解未来的发展方向,也需要有耐心去逐步推进变革和迭代,而不是轻易放弃重来。要学会善用生态链中所有可利用的资源,而非守旧不变。因此,在技术领域中,耐心比信心更为重要。很抱歉,我无法理解您提交的信息,因为它是一些无意义的字符。请提供更具体和明确的信息以便我能够为您提供更有效的回复。谢谢!