RDMA技术白皮书
Copyright © 2019 新华三技术有限公司 版权所有,保留一切权利。 非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部, 并不得以任何形式传播。本文档中的信息可能变动,恕不另行通知。 |
|
目 录
随着高性能计算、大数据分析、人工智能以及物联网等技术的飞速发展,集中式存储、分布式存储以及云数据库的普及等原因,业务应用有越来越多的数据需要从网络中获取,这对数据中心网络的交换速度和性能要求越来越高。
传统的TCP/IP软硬件架构及应用存在着网络传输和数据处理的延迟过大、存在多次数据拷贝和中断处理、复杂的TCP/IP协议处理等问题。RDMA(Remote Direct Memory Access,远程直接内存访问)是一种为了解决网络传输中服务器端数据处理延迟而产生的技术。RDMA将用户应用中的数据直接传入服务器的存储区,通过网络将数据从一个系统快速传输到远程系统的存储器中,消除了传输过程中多次数据复制和文本交换的操作,降低了CPU的负载。
图1 传统TCP/IP数据传输过程
图2 RDMA数据传输过程
RDMA技术实现了在网络传输过程中两个节点之间数据缓冲区数据的直接传递,在本节点可以直接将数据通过网络传送到远程节点的内存中,绕过操作系统内的多次内存拷贝,相比于传统的网络传输,RDMA无需操作系统和TCP/IP协议的介入,可以轻易的实现超低延时的数据处理、超高吞吐量传输,不需要远程节点CPU等资源的介入,不必因为数据的处理和迁移耗费过多的资源。
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网卡。
H3C以太网交换机能够支持iWARP,其中部分系列(具体系列请咨询市场技术人员或查看产品配套资料)支持无损以太网传输的关键技术,能够支持RoCE。
InfiniBand是一种基于InfiniBand架构的RDMA技术,它提供了一种基于通道的点对点消息队列转发模型,每个应用都可通过创建的虚拟通道直接获取本应用的数据消息,无需其他操作系统及协议栈的介入。InfiniBand架构的应用层采用了RDMA技术,可以提供远程节点间RDMA读写访问,完全卸载CPU工作负载;网络传输采用了高带宽的传输;链路层设置特定的重传机制保证服务质量,不需要数据缓冲。
InfiniBand必须运行在InfiniBand网络环境下,必须使用IB交换机及IB网卡才可实现。
图3 InfiniBand架构
InfiniBand技术具有以下特点:
· 应用层采用RDMA技术,降低了在主机侧数据处理的延迟。
· 消息转发控制由子网管理器完成,没有类似以太网复杂的协议交互计算。
· 链路层通过重传机制保证服务质量,不需要数据缓冲,无丢包。
· 具有低延迟、高带宽、低处理开销的特点。
iWARP是基于以太网和TCP/IP协议的RDMA技术,可以运行在标准的以太网基础设施上。
iWARP由MPA、DDP、RDMAP三层子协议组成:
· RDMAP层协议负责RDMA读、写操作和RDMA消息的转换,并将RDMA消息转发到DDP层。
· DDP层协议负责将过长的RDMA消息分片分装成DDP数据包继续转发到MPA层。
· MPA层在DDP数据段的固定标识位置增加转发后向标识、数据报文的长度以及CRC校验数据等字段构成MPA数据段交由TCP传输。
iWARP从以下几个方面降低了主机侧网络负载:
· TCP/IP处理流程从CPU卸载到RDMA网卡处理,降低了CPU负载。
· 消除内存拷贝:应用程序可以直接将数据传输到对端应用程序内存中,显著降低CPU负载。
· 减少应用程序上、下文切换:应用程序可以绕过操作系统,直接在用户空间对RDMA网卡下发命令,降低了开销,显著降低了应用程序上、下文切换造成的延迟。
由于TCP协议能够提供流量控制和拥塞管理,因此iWARP不需要以太网支持无损传输,仅通过普通以太网交换机和iWARP网卡即可实现,因此能够在广域网上应用,具有较好的扩展性。
RoCE技术支持在以太网上承载IB协议,实现RDMA over Ethernet。RoCE与InfiniBand技术有相同的软件应用层及传输控制层,仅网络层及以太网链路层存在差异。
图4 RoCE架构
RoCE协议分为两个版本:
· RoCE v1协议:基于以太网承载RDMA,只能部署于二层网络,它的报文结构是在原有的IB架构的报文上增加二层以太网的报文头,通过Ethertype 0x8915标识RoCE报文。
· RoCE v2协议:基于UDP/IP协议承载RDMA,可部署于三层网络,它的报文结构是在原有的IB架构的报文上增加UDP头、IP头和二层以太网报文头,通过UDP目的端口号4791标识RoCE报文。RoCE v2支持基于源端口号hash,采用ECMP实现负载分担,提高了网络的利用率。
RoCE使得基于以太网的数据传输能够:
· 提高数据传输吞吐量。
· 减少网络延时。
· 降低CPU负载。
RoCE技术可通过普通以太网交换机实现,但服务器需要支持RoCE网卡,网络侧需要支持无损以太网络,这是由于IB的丢包处理机制中,任意一个报文的丢失都会造成大量的重传,严重影响数据传输性能。
在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,增强传输选择):将流量按服务类型分组,在提供不同流量的最小带宽保证的同时提高链路利用率,保证重要流量的带宽百分比。需要逐跳提供。
图5 构建无损以太网络关键特性组网示意图
在RoCE环境中,PFC与ECN需要同时使用,以在无丢包情况下带宽得到保证。二者的功能对比如表1所示。
表1 PFC与ECN对比
比较项目 |
PFC |
ECN |
网络位置 |
二层 |
网络层及传输层 |
作用范围 |
点到点 |
端到端 |
是否需要全网支持 |
是 |
否 |
被控制对象 |
网络中上一节点,如果服务器网卡支持PFC,PFC对网卡也能生效 |
发送主机 |
报文缓存位置 |
中间网络节点及发送端 |
发送端 |
受影响的流量 |
网络设备中8个转发队列中某个队列的所有流量 |
发生拥塞应用的连接 |
响应速度 |
快 |
慢 |
PFC是构建无损以太网的必选手段之一,能够逐跳提供基于优先级的流量控制。设备在进行报文转发时,根据报文的优先级进入对应映射关系的队列中进行调度转发。当某一优先级报文发送速率超过接收速率,导致接收方可用数据缓冲空间不足时,设备通过PFC PAUSE帧反馈给上一跳设备,上一跳设备收到PAUSE帧报文后停止发送本优先级报文,直到再收到PFC XON帧或经过一定的老化时间后才能恢复流量发送。通过使用PFC功能,使得某种类型的流量拥塞不会影响其他类型流量的正常转发,从而达到同一链路上不同类型的报文互不影响。
图6 PFC功能PAUSE帧产生示意图
如图6所示,PAUSE帧产生过程:
(1) Device B的端口1收到来自Device A的报文后,MMU(Memory Manage Unit,存储器管理单元)会为该报文分配cell资源,当设备的PFC功能处于开启状态时,会根据报文中的dot1p优先级统计占用的cell资源。
cell资源:用来存储数据包的内容,端口会根据报文的实际大小占用相应大小的cell资源。比如一个cell资源是208字节,当发送的报文是128字节时,端口会给它分配一个cell资源,当发送的报文是300字节时,端口会给它分配两个cell资源。
(2) 当Device B端口1的某个优先级的报文占用的cell资源统计计数达到设置的门限后,再收到新的该优先级报文后,端口1会发送对应优先级的PFC PAUSE帧给Device A。
(3) Device A收到该优先级的PFC PAUSE帧后停止发送对应优先级的报文,对该优先级的报文进行缓存,如果触发了缓存门限,则也向其上游设备发送PFC PAUSE帧,如图7所示。
设备在进行报文转发时,将不同优先级的报文放入不同的队列中进行调度转发。报文优先级与队列映射关系与设备配置的优先级映射方式有关。设备支持的优先级映射配置方式包括:优先级信任模式方式、端口优先级方式。
· 优先级信任模式方式
配置端口的优先级信任模式后,设备将信任报文自身携带的优先级。通过优先级映射表,使用所信任的报文携带优先级进行优先级映射,根据映射关系完成对报文优先级的修改,以及实现报文在设备内部的调度。端口的优先级信任模式分为:
- dot1p:信任报文自带的802.1p优先级,以此优先级进行优先级映射。
- dscp:信任IP报文自带的DSCP优先级,以此优先级进行优先级映射。
· 端口优先级方式
未配置端口的优先级信任模式时,设备会将端口优先级作为报文自身的优先级。通过优先级映射表,对报文进行映射。用户可以配置端口优先级,通过优先级映射,使不同端口收到的报文进入对应的队列,以此实现对不同端口收到报文的差异化调度。
接口配置PFC功能时,必须配置接口信任报文自带的802.1p优先级或DSCP优先级。接口收到以太网报文,根据优先级信任模式和报文的802.1Q标签状态,设备为不同优先级的报文标记不同的本地优先级(LP),根据本地优先级进行队列调度,具体过程如图8所示。
本文仅介绍接口信任报文自带的802.1p优先级或DSCP优先级的情况下,报文优先级到本地优先级的映射情况,关于端口采用端口优先级时的映射情况和报文丢弃时参考的丢弃优先级请参考产品配置指导。
需要注意的是:配置PFC功能时,必须配置接口信任报文自带的802.1p优先级或DSCP优先级,并且转发路径上所有端口的802.1p优先级与本地优先级映射关系以及DSCP优先级与802.1p优先级映射关系必须一致,否则PFC功能将无法正常工作。
通过配置PFC缓存门限可以有效解决因缓冲空间不足和入流量队列数量过大,导致发送数据缓冲区尾丢弃等问题。
我们先来了解一下接口的缓冲空间设置。接口的缓冲空间分为以下几种:
· Guaranteed存储空间:固定缓冲区,为每一个优先级队列和端口提供最小的缓存保证。系统会根据用户的配置给队列预留指定大小的空间,即便该队列没有报文存储需求,其他队列也不能抢占。给队列预留的空间均分给每个端口的,即使某端口的某队列没有报文存储需求,其他端口也不能抢占。
· Shared存储空间:共享缓冲区,当端口或优先级的固定缓冲区不够用时,使用Shared存储空间,系统会根据用户配置以及实际需要收发报文的数量决定每个队列实际可占用的缓冲区的大小。如果某个队列没有报文存储需求,则其他队列会抢占该队列的配额。对于某个队列的缓冲区,所有端口接收或发送的报文采用抢占的方式,先到先得,如果资源耗尽,则后到达的报文将被丢弃。
· Headroom存储空间:Headroom缓冲区,当端口PFC功能生效并触发PFC反压帧门限后,本端设备发送PFC PAUSE帧到对端设备让对端停止流量发送的过程中,已经在途的这部分流量的缓存空间,设备需要这些缓冲空间来保证PFC流程的不丢包。
PFC目前提供以下门限设置:
· Headroom缓存门限:Headroom存储空间中某802.1p优先级报文的最大使用cell资源。当达到使用的cell资源后,该接口会丢弃收到的报文。
· 反压帧触发门限:Shared存储空间中某802.1p优先级报文在该存储空间使用cell资源上限。达到上限后,会触发PFC功能发送PAUSE帧。反压帧触发门限又分为动态反压帧触发门限和静态反压帧触发门限:
¡ 动态反压帧触发门限:设置某802.1p优先级报文触发PFC PAUSE帧的可用cell资源的百分比。
¡ 静态反压帧触发门限:设置某802.1p优先级报文触发PFC PAUSE帧的可用cell资源门限为一个固定值。
· 反压帧停止门限与触发门限间的偏移量:当某802.1p优先级报文使用的cell资源减小了一个固定值时,停止发送PFC PAUSE帧,使对端设备恢复流量发送。
· PFC预留门限:Guaranteed存储空间中为某802.1p优先级报文预留的cell资源。
· Headroom最大可用的cell资源:配置某缓存池(pool,产品具体支持的poolID与产品型号有关,请以设备的实际情况为准)中,分配给Headroom存储空间的cell资源的大小。
具体配置命令行请参见对应产品的配置指导和命令参考。
Headroom缓存门限的建议配置值与接口传输速率和距离有关,具体建议值请参考产品命令手册。对于其他门限值,开启指定802.1p优先级的PFC功能后,设备会为PFC的各种门限设置一个缺省值,此缺省值在一般的组网环境下是效果较好的参数组合,一般不建议调整。如组网环境或流量背景确实非常复杂,建议咨询专业人员进行调整。
当指定优先级的报文形成环路时,会导致数据缓冲区内报文无法转发,设备间反复发送和接收PFC帧,导致设备接口的缓冲区cell资源一直被占用无法释放,此时设备进入PFC死锁状态。设备处于PFC死锁状态后,采用关闭PFC功能或者忽略接收到的PFC XOFF帧(表示停止流量发送)的方式使设备继续转发数据报文即可解除死锁。
通过配置PFC死锁检测功能,可以定期检测设备是否处于PFC死锁状态。当设备检测到PFC死锁状态后,设备会在恢复周期内自动解除死锁状态。此时设备会自动暂时禁用PFC死锁检测功能,以便报文能够正常转发,解除死锁状态。
PFC死锁状态解除后,用户可采用自动或手工方式来恢复PFC死锁检测功能。恢复PFC死锁检测功能会让PFC功能继续生效。所以,通常情况下,使用自动恢复方式即可。当报文环路无法消除,设备频繁处于PFC死锁状态时,用户可以进入以太网接口视图配置PFC死锁检测功能的恢复方式为手工恢复方式,并尽快排除故障,再手工恢复PFC死锁检测功能。
更多PFC死锁检测功能的配置命令请参见对应产品的配置指导和命令参考。
当设备的PFC功能出现紧急故障时,用户不用逐个接口去关闭PFC功能,可以通过命令行一键关闭所有接口的PFC功能。当故障恢复后,可以通过命令行一键开启所有接口的PFC功能。具体的命令行形式与设备的支持情况及版本有关,请以设备的实际情况为准。
用户可根据实际组网情况,配置接口入方向或者出方向PFC报文的预警门限。预警门限用于PFC报文传输速率处于正常范围内,但需要提醒用户提前关注的情况。
当接口接收或发送PFC报文的速率达到预警门限时,系统会生成Trap和日志信息来提醒用户,以提前发现网络中的一些异常问题。例如:
· 对端设备网卡故障,不停地持续高速发送PFC帧,可以配置入方向预警门限进行监控。
· 本设备故障后不停发送PFC帧,可以配置出方向预警门限进行监控。
· 如果有双向监控需求的,可以在入和出方向都配置预警门限进行监控。
PFC报文的预警门限配置的具体命令介绍请参见产品命令手册。
PFC配合gRPC可以实现丢包主动上报告警,超限主动上报告警,同时提供各种丢包和瞬时使用值供统计查询。
支持上报的统计信息包括:
· ingress/egress丢包总量
· RX/TX PFC帧总量及速率
· ingress/egress buffer使用
· headroom buffer使用
· ingress/egress buffer超限次数
· headroom超限次数。
· 基于XPE统计的buffer利用率
· ECN功能marked次数
· WERD丢包总量
支持上报的告警信息包括:
· ingress/egress丢包
· headroom buffer超限
· ingress buffer超限
· egress buffer超限。
使用display priority-flow-control命令可以显示查看PFC功能在端口上的配置情况及每端口和每队列的PFC帧的收发总量和收发速率。
使用display packet-drop命令可以对接收及发送端丢包的总信息及各端口丢包信息进行诊断查询。
使用display qos queue-statistics interface outbound命令可以显示端口队列出方向的统计信息。
ECN是构建无损以太网的必选手段之一。ECN定义了一种基于IP层及传输层的流量控制及端到端拥塞通知机制。ECN功能利用IP报文头中的DS域来标记报文传输路径上的拥塞状态。支持该功能的终端设备可以通过报文内容判断出传输路径上发生了拥塞,从而调整报文的发送方式,避免拥塞加剧。
ECN功能对IP报文头中DS域的最后两个比特位(称为ECN域)进行了如下定义:
· 比特位6用于标识发送端设备是否支持ECN功能,称为ECT位(ECN-Capable Transport)
· 比特位7用于标识报文在传输路径上是否经历过拥塞,称为CE位(Congestion Experienced)
在实际应用中,设备将ECT位为1、CE位为0的报文,以及ECT位为0,CE位为1的报文都识别为由支持ECN功能的终端发出的报文。
图9 DS域位置信息
图10 ECN域位置信息
在设备上开启ECN功能后,拥塞管理功能将按如下方式对报文进行处理:
· 如果队列长度小于下限,不丢弃报文,也不对ECN域进行识别和标记。
· 如果队列长度在上限和下限之间,当设备根据丢弃概率计算出需要丢弃某个报文时,将检查该报文的ECN域。如果ECN域显示该报文由支持ECN的终端发出,设备会将报文的ECT位和CE位都标记为1,然后转发该报文;如果ECN域显示报文传输路径中已经经历过拥塞(即ECT和CE位都为1),则设备直接转发该报文,不对ECN域进行重新标记;如果ECT位和CE位都为0,设备会将该报文丢弃。
· 如果队列长度超过上限,将队列中所有报文的ECN域都标记为11,当队列长度达到队列尾丢弃门限后,报文将被丢弃。
图11 ECN工作机制示意图
ECN功能工作机制:
(1) 发送端设置ECN域为10,告知路径上的设备及接收端,发送端设备支持ECN功能。
(2) 中间设备发生拥塞并达到门限,拥塞设备将发生拥塞的报文ECN域设置为11,报文正常转发。
(3) 接收端收到ECN置位为11的报文,由传输层发送CNP(Congestion Notification Packet,拥塞通知报文)通知发送端。
(4) 发送端收到CNP报文,对对应的优先级的队列进行降速处理。
(5) 经过一段可配置的时间或者发送一定数量数据,发送端恢复原来的速率。
DCBX是实现无损以太网传输的关键手段之一,用于DCE中各网络单元进行桥能力协商以及远程配置。通过DCBX,交换机之间以及交换机和网卡之间可以协商和自动配置DCB参数,以实现简化配置以及保证配置一致性的目的。
图12 图2-2 DCBX功能配置组网图
DCBX通过LLDP(Link Layer Discovery Protocol,链路层发现协议)来完成信息交互的过程,支持交互链路双方的ETS、PFC以及应用的优先级等配置信息。
在设备全局和接口上都开启LLDP功能并允许接口发布DCBX TLV即可开启设备的DCBX功能,再根据实际应用需求配置设备通过该接口发布APP(Application Protocol,应用协议)、ETS和PFC参数。在本文的应用需求中,主要用于发布ETS参数。
配置DCBX时,还需要注意配置DCBX的版本,可手工配置或自协商DCBX版本。DCBX版本需要视对端设备支持的版本而定,要求两端端口的DCBX版本一致,否则版本无法兼容,将会导致DCBX无法正常工作。
ETS是基于优先级组的带宽分配处理,ETS用于实现承诺带宽。设备通过ETS参数与对端进行协商,控制对端指定类型数据的发送带宽,保证其在接口的承诺带宽范围之内,从而不会因流量拥塞而导致数据丢失。
ETS机制将网络中的流量优先级分成不同的优先级组(Priority Group),为每个优先级组分配一定的带宽,如果一个优先级组未消耗为其分配的带宽其他优先级组可以使用这些未使用的带宽。保证重要流量在传输过程中具有承诺带宽。
配置ETS功能的具体实现过程为:
(1) 配置802.1p优先级到本地优先级的映射使报文进入特定的队列。有以下两种方式:
¡ QoS策略方式。
¡ 优先级映射表方式。
如果同时配置了这两种方式,则前者的配置优先生效。有关QoS策略命令的详细介绍,请参见“ACL和QoS命令参考”中的“QoS策略”。有关优先级映射表命令的详细介绍,请参见“QoS命令参考”中的“优先级映射”。
(2) 配置分组WRR队列,以实现不同队列带宽的分配。有关WRR队列命令的详细介绍,请参见“QoS命令参考”中的“拥塞管理”。
为了更好的理解为什么ETS能够实现重要流量的带宽保证,这里我们详细介绍一下分组WRR队列。
我们先来了解一下WRR队列。WRR队列在队列之间进行轮流调度,保证每个队列都得到一定的服务时间。以端口有8个输出队列为例,WRR可为每个队列配置一个加权值(依次为w7、w6、w5、w4、w3、w2、w1、w0),加权值表示获取资源的比重。如一个100Mbps的端口,配置它的WRR队列的加权值为50、50、30、30、10、10、10、10(依次对应w7、w6、w5、w4、w3、w2、w1、w0),这样可以保证最低优先级队列至少获得5Mbps的带宽。
WRR队列还有一个优点是,虽然多个队列的调度是轮询进行的,但对每个队列不是固定地分配服务时间片——如果某个队列为空,那么马上换到下一个队列调度,这样带宽资源可以得到充分的利用。
WRR队列分为:
· 基本WRR队列:基本WRR队列包含多个队列,用户可以定制各个队列的权重,WRR按用户设定的参数进行加权轮询调度。
· 分组WRR队列:所有队列全部采用WRR调度,用户可以根据需要将输出队列划分为WRR优先级队列组1和WRR优先级队列组2。进行队列调度时,设备首先在WRR优先级队列组1中进行轮询调度;优先级队列组1中没有报文发送时,设备才在优先级队列组2中进行轮询调度。当前设备仅支持WRR优先级队列组1。
在分组WRR队列中,也可以配置队列加入SP分组,采用严格优先级调度算法(即只有较高优先级队列为空时,才会发送较低优先级队列中的分组,最大限度保证关键业务流量的发送)。调度时先调度SP组,然后调度其他WRR优先组。
在ETS的配置中,为了保证重要流量的发送带宽,我们可以采用如下两种方式之一配置分组WRR队列:
· 配置WRR优先组1的WRR队列调度权重,使重要流量所在队列拥有较高权重。
qos wrr queue-id group 1 byte-count schedule-value
· 配置端口队列采用严格优先级调度算法,使重要流量所在队列优先调度。
qos wrr queue-id group sp
如图13所示,服务器Server 1、Server 2和Server 3上均安装RoCE网卡,Server 1和Server 2均通过以太网交换机Device A和Device B连接Server 3。
为支持RoCE技术,现要求将整个网络搭建为无损以太网,具体要求为:
· 报文转发路径的所有端口都开启PFC功能,本例以实现802.1p优先级为5的报文的无损传输为例。
· 交换机连接服务器的端口开启DCBX功能,使设备和服务器网卡可以协商ETS和PFC参数。
· Device A的Twenty-FiveGigE1/0/3和Device B的Twenty-FiveGigE1/0/2端口配置ETS功能,保证802.1p优先级为5的报文的发送带宽。
本例所示的组网中,我们认为Server 1、Server 2发往Server 3的流量大于反向流量,所以仅在上述端口配置ETS功能,实际应用中如果无法预测流量发送情况,可以在组网中的所有端口上配置ETS功能。
· Device A的Twenty-FiveGigE1/0/3端口配置ECN功能,使设备在发生拥塞时能够通知发送端调整发送速率。
本例所示的组网中,拥塞的可能发生位置为Device A的Twenty-FiveGigE1/0/3端口,因此仅在该端口配置ECN功能。实际应用中如果无法预测拥塞发生的可能位置,可以在组网中的所有端口上配置ECN功能。
图13 RoCE功能配置组网图
(1) 配置Device A
# 在接口Twenty-FiveGigE1/0/1、Twenty-FiveGigE1/0/2、Twenty-FiveGigE1/0/3上配置接口信任报文自带的的802.1p优先级,开启接口的PFC功能,并对802.1p优先级5开启PFC功能。
<DeviceA> system-view
[DeviceA] interface range twenty-fivegige 1/0/1 to twenty-fivegige 1/0/3
[DeviceA-if-range] qos trust dot1p
[DeviceA-if-range] priority-flow-control enable
[DeviceA-if-range] priority-flow-control no-drop dot1p 5
[DeviceA-if-range] quit
# 全局开启LLDP功能。
[DeviceA] lldp global enable
# 在接口Twenty-FiveGigE1/0/1、Twenty-FiveGigE1/0/2上开启LLDP功能,并允许发布DCBX TLV,配置接口Twenty-FiveGigE1/0/1、Twenty-FiveGigE1/0/2的DCBX版本为预标准版1.01。
[DeviceA] interface range twenty-fivegige 1/0/1 to twenty-fivegige 1/0/2
[DeviceA-if-range] lldp enable
[DeviceA-if-range] lldp tlv-enable dot1-tlv dcbx
[DeviceA-if-range] dcbx version rev101
[DeviceA-if-range] quit
# 在接口Twenty-FiveGigE1/0/3上开启WRR队列,并按照每次轮询可发送的字节数进行计算,同时配置端口队列5(802.1p优先级5到本地优先级5为默认映射关系)采用严格优先级调度算法。
[DeviceA] interface twenty-fivegige 1/0/3
[DeviceA-Twenty-FiveGigE1/0/3] qos wrr byte-count
[DeviceA-Twenty-FiveGigE1/0/3] qos wrr 5 group sp
[DeviceA-Twenty-FiveGigE1/0/3] quit
# 创建WRED表queue-table5,同时进入WRED表视图配置队列5的平均队列长度指数及WRED表参数并开启ECN功能。在接口Twenty-FiveGigE1/0/3上应用WRED表queue-table5。
[DeviceA] qos wred queue table queue-table5
[DeviceA-wred-table-queue-table5] queue 5 weighting-constant 12
[DeviceA-wred-table-queue-table5] queue 5 drop-level 0 low-limit 10 high-limit 20 discard-probability 30
[DeviceA-wred-table-queue-table5] queue 5 ecn
[DeviceA-wred-table-queue-table5] quit
[DeviceA] interface twenty-fivegige 1/0/3
[DeviceA-Twenty-FiveGigE1/0/3] qos wred apply queue-table5
(2) 配置Device B
# 在接口Twenty-FiveGigE1/0/1、Twenty-FiveGigE1/0/2上配置接口信任报文自带的802.1p优先级,开启接口的PFC功能,并对802.1p优先级5开启PFC功能。
<DeviceB> system-view
[DeviceB] interface range twenty-fivegige 1/0/1 to twenty-fivegige 1/0/2
[DeviceB-if-range] qos trust dot1p
[DeviceB-if-range] priority-flow-control enable
[DeviceB-if-range] priority-flow-control no-drop dot1p 5
[DeviceB-if-range] quit
# 全局开启LLDP功能。
[DeviceB] lldp global enable
# 在接口Twenty-FiveGigE1/0/2上开启LLDP功能,并允许发布DCBX TLV,配置接口Twenty-FiveGigE1/0/2的DCBX版本为预标准版1.01。
[DeviceB]interface twenty-fivegige 1/0/2
[DeviceB-Twenty-FiveGigE1/0/2] lldp enable
[DeviceB-Twenty-FiveGigE1/0/2] lldp tlv-enable dot1-tlv dcbx
[DeviceB-Twenty-FiveGigE1/0/2] dcbx version rev101
[DeviceB-Twenty-FiveGigE1/0/2] quit
# 在接口Twenty-FiveGigE1/0/2上开启WRR队列,并按照每次轮询可发送的字节数进行计算,同时配置端口队列5(802.1p优先级5到本地优先级5为默认映射关系)采用严格优先级调度算法。
[DeviceB] interface twenty-fivegige 1/0/2
[DeviceB-Twenty-FiveGigE1/0/2] qos wrr byte-count
[DeviceB-Twenty-FiveGigE1/0/2] qos wrr 5 group sp
# 在Device B上显示丢弃报文信息。
<DeviceB> display packet-drop summary
All interfaces:
Packets dropped due to Fast Filter Processor (FFP): 0
Packets dropped due to STP non-forwarding state: 0
Packets dropped due to insufficient data buffer. Input dropped: 0 Output dropp
ed: 0
Packets of ECN marked: 1622267130
Packets of WRED droped: 0
以上信息表明,网络中丢包数为0,报文零丢弃。
# 在Device B上显示端口Twenty-FiveGigE1/0/2的带宽利用率。
<DeviceB> display counters rate outbound interface Twenty-FiveGigE 1/0/2
Usage: Bandwidth utilization in percentage
Interface Usage (%) Total (pps) Broadcast (pps) Multicast (pps)
WGE1/0/2 100 2825427 -- --
Overflow: More than 14 digits.
--: Not supported.
以上信息表明,端口Twenty-FiveGigE1/0/2的带宽利用率为100%。