一、传统TCP/IP网络传输困境
1.1 传统以太网端到端传输系统开销过大
在描述通信过程时的软硬件关系时,我们通常将模型划分为用户层Userspace、内核Kernel以及硬件Hardware。
Userspace和Kernel实际上使用的是同一块物理内存,但是出于安全考虑,Linux将内存划分为用户空间和内核空间。用户层没有权限访问和修改内核空间的内存内容,只能通过系统调用陷入内核态,Linux的内存管理机制比较复杂。
一次典型的基于传统以太网的通信过程的可以如下图所示进行分层:
这个模型的数据流向大致是像上图这个样子,数据首先需要从用户空间复制一份到内核空间,这一次复制由CPU完成,将数据块从用户空间复制到内核空间的Socket Buffer中。内核中软件TCP/IP协议栈给数据添加各层头部和校验信息。最后网卡会通过DMA从内存中复制数据,并通过物理链路发送给对端的网卡。
而对端是完全相反的过程:硬件将数据包DMA拷贝到内存中,然后CPU会对数据包进行逐层解析和校验,最后将数据复制到用户空间。上述过程中的关键点是需要CPU全程参与整个数据的处理过程,即从用户空间拷贝数据到内核空间、以及对数据进行组装和解析等,数据量大的情况下,这将对CPU将造成很大的负担。
传统网络中,“节点A给节点B发消息”实际上做的是“把节点A内存中的一段数据,通过网络链路搬移到节点B的内存中”,而这一过程无论是发端还是收段,都需要CPU的指挥和控制,包括网卡的控制,中断的处理,报文的封装和解析等等。
上图中左边的节点在内存用户空间中的数据,需要经过CPU拷贝到内核空间的缓冲区中,然后才可以被网卡访问,这期间数据会经过软件实现的TCP/IP协议栈,加上各层头部和校验码,比如TCP头,IP头等。网卡通过DMA拷贝内核中的数据到网卡内部的缓冲区中,进行处理后通过物理链路发送给对端。
对端收到数据后,会进行相反的过程:从网卡内部存储空间,将数据通过DMA拷贝到内存内核空间的缓冲区中,然后CPU会通过TCP/IP协议栈对其进行解析,将数据取出来拷贝到用户空间中。可以看到,即使有了DMA技术,上述过程还是对CPU有较强的依赖。
1.2 TCP协议本身在长肥管道场景下存在天然不足
- TCP长肥管道的两大特征
①传输时延(发送时延)很小:收发包速度很快,非常短的时间就能把大量的数据发送到网络上。
②传播时延很大:数据包从发送到网络上开始,要经过很长的时间(相比于发送时延)才能传送到接收端。
- LFN对TCP性能的影响
①LFN的带宽延时积很大(发送很快,传播到另外一端需要很长时间),导致会有大量的数据包滞留在传播途中TCP流控算法会在窗口变成0时停止发送。但原始的TCP头部的窗口大小字段是16位的,因此窗口大小最大为65535字节,这就将发送方发送但未被确认的数据的总长度限制到了65536字节。参考计算65535*8/1024/1024=0.5Mbps,那么假设发送速度足够快的前提下,在传播时延为100毫秒的网络里,只要5Mbps的带宽就可以做到在第一个bit还没有到达接收端时,发送端就已经发送完了最后一个bit, 然后窗口变成0,停止发送数据,还要等待至少100毫秒发送端才能收到接收端发回来的接收窗口通告,然后才能打开窗口继续发送,意味着最多只能使用到5Mbps的带宽,因此不能充分利用网络。------由此提出了窗口扩大选项以声明更大的窗口。
②LFN的高延时会导致管道枯竭
据TCP的拥塞控制,丢失分组会导致连接进行拥塞控制,即便是由于冗余ACK而进入了快速恢复,也会使得拥塞窗口降低一半,而如果是由于超时进入了慢启动,则拥塞窗口会变为1,无论是哪一种情形,发送方允许被发送的数据量都大量减小了,这会使得管道枯竭,网络通信速度急剧下降。
③LFN不利于TCP协议的RTT测量
按TCP协议,每个TCP连接只有一个RTT计时器, 同一时间,只有一个报文做RTT测量,启动RTT计时的数据在没有被ACK前, TCP无法进行下一次RTT的测量。而在长肥管道中,传播时延很大,这意味着RTT的测试周期很大。
④LFN导致收端tcp乱序
长肥管的发送速度非常快(发送时延),TCP对每个字节数据使用一个32bit无符号的序号来进行标识。TCP定义了最大的报文段生存时间(MSL)来限制报文段在网络中的生存时间。但是在LFN网络上,由于序号空间是有限的,在已经传输了4294967296个字节以后序号会被重用。如果网络快到在不到一个MSL的时候序号就发生了回绕,网络中就会有两个具有相同序号的不同的报文段,接收方将无法区分它们的顺序。在一个千兆比特网络(1000Mb/s)中只需要34秒就可以完成4294967296个字节的发送。
二、XDP的整体框架
2.1 基本原理
RDMA(Remote Direct Memory Access)意为远程直接地址访问,通过RDMA,本端节点可以“直接”访问远端节点的内存。所谓“直接”,指的是可以像访问本地内存一样,绕过传统以太网复杂的TCP/IP网络协议栈读写远端内存,而这个过程对端是不感知的,而且这个读写过程的大部分工作是由硬件而不是软件完成的。而使用了RDMA技术之后,这一过程可以简单的表示成下面的示意图:
同样是把本端内存中的一段数据,复制到对端内存中,在使用了RDMA技术时,两端的CPU几乎不用参与数据传输过程(只参与控制面)。本端的网卡直接从内存的用户空间DMA拷贝数据到内部存储空间,然后硬件进行各层报文的组装后,通过物理链路发送到对端网卡。对端的RDMA网卡收到数据后,剥离各层报文头和校验码,通过DMA将数据直接拷贝到用户空间内存中。RDMA将服务器应用数据直接由内存传输到智能网卡(固化RDMA协议),由智能网卡硬件完成RDMA传输报文封装,解放了操作系统和CPU。
2.2 核心优势
1)Zero Copy(零拷贝):无需将数据拷贝到操作系统内核态并处理数据包头部的过程,传输延迟会显著减小。
2)Kernel Bypass(内核旁路) :不需要操作系统内核参与,数据通路中没有繁琐的处理报头逻辑,不仅会使延迟降低,而且也大大节省了CPU的资源。
3)Protocol Offload(协议卸载):RDMA通信可以在远端节点CPU不参与通信的情况下,对内存进行读写,这实际上是把报文封装和解析放到硬件中做了。对比传统的以太网通信,双方CPU都必须参与各层报文的解析,如果数据量大且交互频繁,对CPU来讲将是一笔不小的开销,而这些被占用的CPU计算资源本可以做一些更有价值的工作。
相比于传统以太网,RDMA技术同时做到了更高带宽和更低时延,所以其在带宽敏感的场景——比如海量数据的交互,时延敏感——比如多个计算节点间的数据同步的场景下得以发挥其作用。
2.3 RDMA网络基本分类
目前,大致有三类RDMA网络,分别是InfiniBand、RoCE(RDMA over Converged Ethernet,RDMA过融合以太网)和iWARP(RDMA over TCP,互联网广域RDMA协议)。RDMA最早专属于Infiniband网络架构,从硬件级别保证可靠传输,而RoCE和iWARP都是基于以太网的RDMA技术。
1)InfiniBand
InfiniBand是一种专为RDMA设计的网络, 由IBTA(InfiniBand Trade Association)在2000年提出,其规定了一整套完整的链路层到传输层(非传统OSI七层模型的传输层,而是位于其之上)规范,主要采用Cut-Through转发模式(直通转发模式)以减少转发时延,基于Credit的流控机制(基于信用的流控机制)以保证无丢包。但IB也存在不可避免的成本缺陷。由于其无法兼容现有以太网,除了需要支持IB的网卡之外,企业如果想部署的话还要重新购买配套的交换设备。
2)RoCE
RoCE有两个版本:RoCEv1基于以太网链路层实现,v1版本网络层仍然使用了IB规范,而v2使用了UDP+IP作为网络层,使得数据包也可以被路由,只能在L2层传输;RoCEv2基于UDP承载RDMA,可部署于三层网络。
RoCE可以被认为是IB的“低成本解决方案”,部署RoCE网络需要支持RDMA专用智能网卡,不需要专用交换机和路由器(支持ECN/PFC等技术,降低丢包率),其建网成本在三种rdma网络模型中最低。
3)iWARP
传输层为iWARP协议,iWARP是以太网TCP / IP协议中TCP层实现,支持L2 / L3层传输,大型组网TCP连接会消耗大量CPU,所以应用很少。
iWARP只要求网卡支持RDMA,不需要专用交换机和路由器,建网成本介于InfiniBand和RoCE之间。
2.4 实现对比
Infiniband技术先进,但是价格高昂,应用局限在HPC高性能计算领域,随着RoCE和iWARPC的出现,RDMA的使用成本进一步,从而推动了RDMA技术普及。
在高性能存储、计算数据中心中采用这三类RDMA网络,都可以大幅度降低数据传输时延,并为应用程序提供更高的CPU资源可用性。
其中InfiniBand网络为数据中心带来极致的性能,传输时延低至百纳秒,比以太网设备延时要低一个量级;
RoCE和iWARP网络为数据中心带来超高性价比,基于以太网承载RDMA,充分利用了RDMA的高性能和低CPU使用率等优势,同时网络建设成本也不高;
基于UDP协议的RoCE比基于TCP协议的iWARP性能更好,结合无损以太网的流控技术,解决了丢包敏感的问题,RoCE网络已广泛应用于各行业高性能数据中心中。
三、RDMA在家宽网络中的应用探索
在“网络强国、数字中国、智慧社会”等国家战略的全面推进下,数字化、网络化、智能化的数字家庭已经成为智慧城市理念在家庭层面的体现,“十四五”规划和2035远景目标中,数字家庭被定位为构筑“美好数字生活新图景”的重要组成部分,在新一代信息技术的支持下,数字家庭正向智慧家庭不断演进,完成从“数字”到“智慧”的转变。当前,中国智慧家庭市场规模逐年扩大,中国已成为全球最大的智能家居市场消费国,占据全球约50%~60%的市场份额(数据来源:CSHIA,艾梅数据,国家统计局)。据赛迪顾问研究预计,2030年中国智慧家庭市场规模将会达到15700亿元,2021—2030年平均复合增长率(CAGR)高达14.6%。
伴随着家宽市场规模的快速发展是:
① 家宽无差异化、尽力而为的服务方式与业务差异化、确定性网络质量需求间的矛盾
当前宽带接入对不同业务网络连接不做差异化区别,以尽力而为方式提供服务,在拥塞时所有业务优先级相同,采用的处理策略相同。但业务对网络质量要求不同,对时延丢包等敏感度不同,部分时延敏感业务如游戏、云电脑等需要确定性网络保障,为确保用户体验,在网络拥塞丢包时,用户体验急剧下降,因此在拥塞时对此类业务需要不同的处理策略。
② 带宽提升与长肥管道场景体验劣化间的矛盾
根据工信部统计数据,全国100Mbps以上宽带用户占比超过94%,但用户在访问远距离内容时仍存在卡顿、下载速度慢的问题。其原因不是接入带宽不足,而是底层TCP协议拥塞控制算法在长肥管道(LFN)场景下的天然不足。TCP为几十年前的协议,已无法适应目前的网络状态与应用需求,亟需新的协议与算法来确保长肥管道场景下的业务体验。
综上,从行业趋势上来看,在家宽网络算力化升级的浪潮之下,RDMA技术相比于TCP而言,能够实现计算和网络的深度融合。将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入,不需要经过处理器耗时的处理,最终达到高带宽、低时延和低资源占用率的效果。