RDMA技术总结
1、RDMA概述随着高性能计算、大数据分析、人工智能以及物联网等技术的飞速发展,集中式存储、分布式存储以及云数据库的普及等原因,业务应用有越来越多的数据需要从网络中获取,这对数据中心网络的交换速度和性能要求越来越高。传统的TCP/IP软硬件架构及应用存在着网络传输和数据处理的延迟过大、存在多次数据拷贝和中断处理、复杂的TCP/IP协议处理等问题。RDMA(Remote Direct Memory
1、RDMA概述
随着高性能计算、大数据分析、人工智能以及物联网等技术的飞速发展,集中式存储、分布式存储以及云数据库的普及等原因,业务应用有越来越多的数据需要从网络中获取,这对数据中心网络的交换速度和性能要求越来越高。
传统的TCP/IP软硬件架构及应用存在着网络传输和数据处理的延迟过大、存在多次数据拷贝和中断处理、复杂的TCP/IP协议处理等问题。RDMA(Remote Direct Memory Access,远程直接内存访问)是一种为了解决网络传输中服务器端数据处理延迟而产生的技术。RDMA将用户应用中的数据直接传入服务器的存储区,通过网络将数据从一个系统快速传输到远程系统的存储器中,消除了传输过程中多次数据复制和文本交换的操作,降低了CPU的负载。
RDMA技术实现了在网络传输过程中两个节点之间数据缓冲区数据的直接传递,在本节点可以直接将数据通过网络传送到远程节点的内存中,绕过操作系统内的多次内存拷贝,相比于传统的网络传输,RDMA无需操作系统和TCP/IP协议的介入,可以轻易的实现超低延时的数据处理、超高吞吐量传输,不需要远程节点CPU等资源的介入,不必因为数据的处理和迁移耗费过多的资源。
1.1 RDMA技术分类
RDMA技术主要包括:
- IB(InfiniBand):基于InfiniBand架构的RDMA技术,由IBTA(InfiniBand Trade Association)提出。搭建基于IB技术的RDMA网络需要专用的IB网卡和IB交换机。
- iWARP(Internet Wide Area RDMA Protocal):基于TCP/IP协议的RDMA技术,由IETF标准定义。iWARP支持在标准以太网基础设施上使用RDMA技术,但服务器需要使用支持iWARP的网卡。
- RoCE(RDMA over Converged Ethernet):基于以太网的RDMA技术,也是由IBTA提出。RoCE支持在标准以太网基础设施上使用RDMA技术,但是需要交换机支持无损以太网传输,需要服务器使用RoCE网卡。
1.2 IB技术简介
InfiniBand是一种基于InfiniBand架构的RDMA技术,它提供了一种基于通道的点对点消息队列转发模型,每个应用都可通过创建的虚拟通道直接获取本应用的数据消息,无需其他操作系统及协议栈的介入。InfiniBand架构的应用层采用了RDMA技术,可以提供远程节点间RDMA读写访问,完全卸载CPU工作负载;网络传输采用了高带宽的传输;链路层设置特定的重传机制保证服务质量,不需要数据缓冲。InfiniBand必须运行在InfiniBand网络环境下,必须使用IB交换机及IB网卡才可实现。
1.3 iWARP技术
iWARP是基于以太网和TCP/IP协议的RDMA技术,可以运行在标准的以太网基础设施上。iWARP由MPA、DDP、RDMAP三层子协议组成:
- RDMAP层协议负责RDMA读、写操作和RDMA消息的转换,并将RDMA消息转发到DDP层。
- DDP层协议负责将过长的RDMA消息分片分装成DDP数据包继续转发到MPA层。
- MPA层在DDP数据段的固定标识位置增加转发后向标识、数据报文的长度以及CRC校验数据等字段构成MPA数据段交由TCP传输。
1.4 ROCE技术
RoCE技术支持在以太网上承载IB协议,实现RDMA over Ethernet。RoCE与InfiniBand技术有相同的软件应用层及传输控制层,仅网络层及以太网链路层存在差异。
RoCE协议分为两个版本:
- RoCE v1协议:基于以太网承载RDMA,只能部署于二层网络,它的报文结构是在原有的IB架构的报文上增加二层以太网的报文头,通过Ethertype 0x8915标识RoCE报文。
- RoCE v2协议:基于UDP/IP协议承载RDMA,可部署于三层网络,它的报文结构是在原有的IB架构的报文上增加UDP头、IP头和二层以太网报文头,通过UDP目的端口号4791标识RoCE报文。RoCE v2支持基于源端口号hash,采用ECMP实现负载分担,提高了网络的利用率。
2 构建无损以太网络
在RoCE网络中,我们需要构建无损以太网用于保证网络传输过程中不丢包。构建无损以太网需支持以下关键特性:
- (必选)PFC(Priority-based Flow Control,基于优先级的流量控制):逐跳提供基于优先级的流量控制,能够实现在以太网链路上运行多种类型的流量而互不影响。
- (必选)ECN(Explicit Congestion Notification,显示拥塞通知):设备发生拥塞时,通过对报文IP头中ECN域的标识,由接收端向发送端发出降低发送速率的CNP(Congestion Notification Packet,拥塞通知报文),实现端到端的拥塞管理,减缓拥塞扩散恶化。
- (建议)DCBX(Data Center Bridging Exchange Protocol,数据中心桥能力交换协议):使用LLDP自动协商DCB能力参数,包括PFC和ETS等。一般用在接入交换机连接服务器的端口,与服务器网卡进行能力协商。
- (可选)ETS(Enhanced Transmission Selection,增强传输选择):将流量按服务类型分组,在提供不同流量的最小带宽保证的同时提高链路利用率,保证重要流量的带宽百分比。需要逐跳提供。
对于必选特性,PFC与ECN的功能如下:
2.1 PFC机制
PFC是构建无损以太网的必选手段之一,能够逐跳提供基于优先级的流量控制。设备在进行报文转发时,根据报文的优先级进入对应映射关系的队列中进行调度转发。当某一优先级报文发送速率超过接收速率,导致接收方可用数据缓冲空间不足时,设备通过PFC PAUSE帧反馈给上一跳设备,上一跳设备收到PAUSE帧报文后停止发送本优先级报文,直到再收到PFC XON帧或经过一定的老化时间后才能恢复流量发送。通过使用PFC功能,使得某种类型的流量拥塞不会影响其他类型流量的正常转发,从而达到同一链路上不同类型的报文互不影响。
2.1.1 PFC PAUSE帧生成机制
过程如下:
- Device B的端口1收到来自Device A的报文后,MMU(Memory Manage Unit,存储器管理单元)会为该报文分配cell资源,当设备的PFC功能处于开启状态时,会根据报文中的dot1p优先级统计占用的cell资源。
- 当Device B端口1的某个优先级的报文占用的cell资源统计计数达到设置的门限后,再收到新的该优先级报文后,端口1会发送对应优先级的PFC PAUSE帧给Device A。
- Device A收到该优先级的PFC PAUSE帧后停止发送对应优先级的报文,对该优先级的报文进行缓存,如果触发了缓存门限,则也向其上游设备发送PFC PAUSE帧。
2.1.2 报文优先级与队列映射的关系
设备在进行报文转发时,将不同优先级的报文放入不同的队列中进行调度转发。报文优先级与队列映射关系与设备配置的优先级映射方式有关。设备支持的优先级映射配置方式包括:优先级信任模式方式、端口优先级方式。
接口配置PFC功能时,必须配置接口信任报文自带的802.1p优先级或DSCP优先级。接口收到以太网报文,根据优先级信任模式和报文的802.1Q标签状态,设备为不同优先级的报文标记不同的本地优先级(LP),根据本地优先级进行队列调度,具体过程如下图所示:
需要注意的是:配置PFC功能时,必须配置接口信任报文自带的802.1p优先级或DSCP优先级,并且转发路径上所有端口的802.1p优先级与本地优先级映射关系以及DSCP优先级与802.1p优先级映射关系必须一致,否则PFC功能将无法正常工作。
2.1.3 PFC的扩展功能
一、PFC门限配置
通过配置PFC缓存门限可以有效解决因缓冲空间不足和入流量队列数量过大,导致发送数据缓冲区尾丢弃等问题。我们先来了解一下接口的缓冲空间设置。接口的缓冲空间分为以下几种:
- Guaranteed存储空间:固定缓冲区,为每一个优先级队列和端口提供最小的缓存保证。系统会根据用户的配置给队列预留指定大小的空间,即便该队列没有报文存储需求,其他队列也不能抢占。给队列预留的空间均分给每个端口的,即使某端口的某队列没有报文存储需求,其他端口也不能抢占。
- Shared存储空间:共享缓冲区,当端口或优先级的固定缓冲区不够用时,使用Shared存储空间,系统会根据用户配置以及实际需要收发报文的数量决定每个队列实际可占用的缓冲区的大小。如果某个队列没有报文存储需求,则其他队列会抢占该队列的配额。对于某个队列的缓冲区,所有端口接收或发送的报文采用抢占的方式,先到先得,如果资源耗尽,则后到达的报文将被丢弃。
- Headroom存储空间:Headroom缓冲区,当端口PFC功能生效并触发PFC反压帧门限后,本端设备发送PFC PAUSE帧到对端设备让对端停止流量发送的过程中,已经在途的这部分流量的缓存空间,设备需要这些缓冲空间来保证PFC流程的不丢包。
PFC目前提供以下门限设置:
1、Headroom缓存门限:Headroom存储空间中某802.1p优先级报文的最大使用cell资源。当达到使用的cell资源后,该接口会丢弃收到的报文。
2、反压帧触发门限:Shared存储空间中某802.1p优先级报文在该存储空间使用cell资源上限。达到上限后,会触发PFC功能发送PAUSE帧。反压帧触发门限又分为动态反压帧触发门限和静态反压帧触发门限:
- 动态反压帧触发门限:设置某802.1p优先级报文触发PFC PAUSE帧的可用cell资源的百分比。
- 静态反压帧触发门限:设置某802.1p优先级报文触发PFC PAUSE帧的可用cell资源门限为一个固定值。
3、反压帧停止门限与触发门限间的偏移量:当某802.1p优先级报文使用的cell资源减小了一个固定值时,停止发送PFC PAUSE帧,使对端设备恢复流量发送。
4、PFC预留门限:Guaranteed存储空间中为某802.1p优先级报文预留的cell资源。
5、Headroom最大可用的cell资源:配置某缓存池(pool,产品具体支持的poolID与产品型号有关,请以设备的实际情况为准)中,分配给Headroom存储空间的cell资源的大小。
二、PFC的死锁检测功能
当指定优先级的报文形成环路时,会导致数据缓冲区内报文无法转发,设备间反复发送和接收PFC帧,导致设备接口的缓冲区cell资源一直被占用无法释放,此时设备进入PFC死锁状态。设备处于PFC死锁状态后,采用关闭PFC功能或者忽略接收到的PFC XOFF帧(表示停止流量发送)的方式使设备继续转发数据报文即可解除死锁。通过配置PFC死锁检测功能,可以定期检测设备是否处于PFC死锁状态。当设备检测到PFC死锁状态后,设备会在恢复周期内自动解除死锁状态。此时设备会自动暂时禁用PFC死锁检测功能,以便报文能够正常转发,解除死锁状态。
PFC死锁状态解除后,用户可采用自动或手工方式来恢复PFC死锁检测功能。恢复PFC死锁检测功能会让PFC功能继续生效。
三、PFC一件逃生功能
当设备的PFC功能出现紧急故障时,用户不用逐个接口去关闭PFC功能,可以通过命令行一键关闭所有接口的PFC功能。当故障恢复后,可以通过命令行一键开启所有接口的PFC功能。
四、PFC报文的预警门限
用户可根据实际组网情况,配置接口入方向或者出方向PFC报文的预警门限。预警门限用于PFC报文传输速率处于正常范围内,但需要提醒用户提前关注的情况。
五、配合grpc实现信息统计,报警上报
PFC配合gRPC可以实现丢包主动上报告警,超限主动上报告警,同时提供各种丢包和瞬时使用值供统计查询。
2.2 ECN功能
ECN是构建无损以太网的必选手段之一。ECN定义了一种基于IP层及传输层的流量控制及端到端拥塞通知机制。ECN功能利用IP报文头中的DS域来标记报文传输路径上的拥塞状态。支持该功能的终端设备可以通过报文内容判断出传输路径上发生了拥塞,从而调整报文的发送方式,避免拥塞加剧。
2.2.1 ECN工作机制
ECN功能对IP报文头中DS域的最后两个比特位(称为ECN域)进行了如下定义:
- 比特位6用于标识发送端设备是否支持ECN功能,称为ECT位(ECN-Capable Transport);
- 比特位7用于标识报文在传输路径上是否经历过拥塞,称为CE位(Congestion Experienced);
在实际应用中,设备将ECT位为1、CE位为0的报文,以及ECT位为0,CE位为1的报文都识别为由支持ECN功能的终端发出的报文。
在设备上开启ECN功能后,拥塞管理功能将按如下方式对报文进行处理:
- 如果队列长度小于下限,不丢弃报文,也不对ECN域进行识别和标记。
- 如果队列长度在上限和下限之间,当设备根据丢弃概率计算出需要丢弃某个报文时,将检查该报文的ECN域。如果ECN域显示该报文由支持ECN的终端发出,设备会将报文的ECT位和CE位都标记为1,然后转发该报文;如果ECN域显示报文传输路径中已经经历过拥塞(即ECT和CE位都为1),则设备直接转发该报文,不对ECN域进行重新标记;如果ECT位和CE位都为0,设备会将该报文丢弃。
- 如果队列长度超过上限,将队列中所有报文的ECN域都标记为11,当队列长度达到队列尾丢弃门限后,报文将被丢弃。
ECN功能工作机制:
- (1) 发送端设置ECN域为10,告知路径上的设备及接收端,发送端设备支持ECN功能。
- (2) 中间设备发生拥塞并达到门限,拥塞设备将发生拥塞的报文ECN域设置为11,报文正常转发。
- (3) 接收端收到ECN置位为11的报文,由传输层发送CNP(Congestion Notification Packet,拥塞通知报文)通知发送端。
- (4) 发送端收到CNP报文,对对应的优先级的队列进行降速处理。
- (5) 经过一段可配置的时间或者发送一定数量数据,发送端恢复原来的速率。
2.3 DCBX
DCBX是实现无损以太网传输的关键手段之一,用于DCE中各网络单元进行桥能力协商以及远程配置。通过DCBX,交换机之间以及交换机和网卡之间可以协商和自动配置DCB参数,以实现简化配置以及保证配置一致性的目的。
DCBX通过LLDP(Link Layer Discovery Protocol,链路层发现协议)来完成信息交互的过程,支持交互链路双方的ETS、PFC以及应用的优先级等配置信息。
在设备全局和接口上都开启LLDP功能并允许接口发布DCBX TLV即可开启设备的DCBX功能,再根据实际应用需求配置设备通过该接口发布APP(Application Protocol,应用协议)、ETS和PFC参数。在本文的应用需求中,主要用于发布ETS参数。
配置DCBX时,还需要注意配置DCBX的版本,可手工配置或自协商DCBX版本。DCBX版本需要视对端设备支持的版本而定,要求两端端口的DCBX版本一致,否则版本无法兼容,将会导致DCBX无法正常工作。
2.4 ETS
ETS是基于优先级组的带宽分配处理,ETS用于实现承诺带宽。设备通过ETS参数与对端进行协商,控制对端指定类型数据的发送带宽,保证其在接口的承诺带宽范围之内,从而不会因流量拥塞而导致数据丢失。
更多推荐
所有评论(0)