H3C无损网络最佳实践
S6805系列
S6825系列
S6850系列
S9825系列
S9850系列
S9855系列
S9820系列(S9820-64H/S9820-8C)
资料版本:6W102-20230310
Copyright © 2021-2023 新华三技术有限公司 版权所有,保留一切权利。 非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部, 并不得以任何形式传播。本文档中的信息可能变动,恕不另行通知。 |
随着高性能计算、大数据分析、人工智能以及物联网等技术的飞速发展,集中式存储、分布式存储以及云数据库的普及等原因,业务应用有越来越多的数据需要从网络中获取,这对数据中心网络的交换速度和性能要求越来越高。
传统的TCP/IP软硬件架构及应用存在着网络传输和数据处理的延迟过大、存在多次数据拷贝和中断处理、复杂的TCP/IP协议处理等问题。RDMA(Remote Direct Memory Access,远程直接内存访问)是一种为了解决网络传输中服务器端数据处理延迟而产生的技术。RDMA将用户应用中的数据直接传入服务器的存储区,通过网络将数据从一个系统快速传输到远程系统的存储器中,消除了传输过程中多次数据复制和文本交换的操作,降低了CPU的负载。
图1-1 传统TCP/IP数据传输过程
图1-2 RDMA数据传输过程
但是RDMA专用的InfiniBand网络架构封闭,必须使用IB交换机及IB网卡才可实现,无法兼容现网,使用成本较高。RoCE(RDMA over Converged Ethernet)技术的出现有效解决了这些难题。RoCE技术支持在以太网上承载IB协议,实现RDMA over Ethernet。RoCE协议分为两个版本:
· RoCE v1协议:基于以太网承载RDMA,只能部署于二层网络。
· RoCE v2协议:基于UDP/IP协议承载RDMA,可部署于三层网络。
当前RDMA应用均采用RoCEv2协议。然而,由于RDMA起初是基于无损的InfiniBand网络设计的,RoCEv2协议缺乏完善的丢包保护机制,任意一个报文的丢失都会造成大量的重传,严重影响数据传输性能。同时,高性能计算、分布式存储相关应用的特征是多对一通信的Incast流量模型,容易造成以太网交换机队列缓存的瞬时突发拥塞甚至丢包,导致应用时延增加和吞吐下降,降低分布式应用的性能。因此,以太网交换机需要支持无损网络的部署才能支持RoCEv2协议及其相关应用。
在RoCE网络中,我们需要构建无损以太网用于保证网络传输过程中不丢包。构建无损以太网需支持以下关键特性:
· 数据缓冲区管理和监控:根据流量特点调整端口、队列能够使用的缓冲区大小,并通过命令行方式或gRPC上报缓冲区使用情况。
数据缓冲区大小调整请根据需要在专业人士指导下进行,数据缓冲区监控建议配置。
· (必选)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,增强传输选择):将流量按服务类型分组,在提供不同流量的最小带宽保证的同时提高链路利用率,保证重要流量的带宽百分比。需要逐跳提供。
图1-3 构建无损以太网络示意图
在RoCE环境中,PFC与ECN需要同时使用,以在无丢包情况下带宽得到保证。二者的功能对比如表1-1所示。
表1-1 PFC与ECN对比
比较项目 |
PFC |
ECN |
网络位置 |
二层 |
网络层及传输层 |
作用范围 |
点到点 |
端到端 |
是否需要全网支持 |
是 |
否 |
被控制对象 |
网络中上一节点,如果服务器网卡支持PFC,PFC对网卡也能生效 |
发送主机 |
报文缓存位置 |
中间网络节点及发送端 |
发送端 |
受影响的流量 |
网络设备中8个转发队列中某个队列的所有流量 |
发生拥塞应用的连接 |
响应速度 |
快 |
慢 |
本文将简要介绍构建无损网络的关键技术,包括数据缓冲区、PFC和ECN功能。各功能的具体配置方法以及其他无损网络相关技术请参考产品的配置指导和命令参考。
数据缓冲区用来临时存储报文,如图2-1所示,数据缓冲区分为接收缓冲区、发送缓冲区和Headroom缓冲区:
· 接收缓冲区:用来缓存接收的数据。
· 发送缓冲区:用来缓存发送的数据。当网络拥塞时,端口不能立即发送数据,为防止数据丢失,会将数据暂时存储到发送缓冲区。
· Headroom缓冲区:在PFC生效后用来缓存在途报文的一块缓存空间。
缺省情况下,所有队列均分共享区域/固定区域。用户可以手工调整指定队列最多可使用的共享区域/固定区域的大小,其它未配置的队列最多可使用的共享区域/固定区域的大小仍遵循缺省值。
PFC是构建无损以太网的必选手段之一,能够逐跳提供基于优先级的流量控制。设备在进行报文转发时,根据报文的优先级进入对应映射关系的队列中进行调度转发。当某一优先级报文发送速率超过接收速率,导致接收方可用数据缓冲空间不足时,设备通过PFC PAUSE帧反馈给上一跳设备,上一跳设备收到PAUSE帧报文后停止发送本优先级报文,直到再收到PFC XON帧或经过一定的老化时间后才能恢复流量发送。通过使用PFC功能,使得某种类型的流量拥塞不会影响其他类型流量的正常转发,从而达到同一链路上不同类型的报文互不影响。
图3-1 PFC功能PAUSE帧产生示意图
如图3-1所示,当Device B的端口2发生拥塞时,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帧,如图3-2所示。
设备在进行报文转发时,将不同优先级的报文放入不同的队列中进行调度转发。报文优先级与队列映射关系与设备配置的优先级映射方式有关。设备支持的优先级映射配置方式包括:优先级信任模式方式、端口优先级方式。
· 优先级信任模式方式
配置端口的优先级信任模式后,设备将信任报文自身携带的优先级。通过优先级映射表,使用所信任的报文携带优先级进行优先级映射,根据映射关系完成对报文优先级的修改,以及实现报文在设备内部的调度。端口的优先级信任模式分为:
- dot1p:信任报文自带的802.1p优先级,以此优先级进行优先级映射。
- dscp:信任IP报文自带的DSCP优先级,以此优先级进行优先级映射。
· 端口优先级方式
未配置端口的优先级信任模式时,设备会将端口优先级作为报文自身的优先级。通过优先级映射表,对报文进行映射。用户可以配置端口优先级,通过优先级映射,使不同端口收到的报文进入对应的队列,以此实现对不同端口收到报文的差异化调度。
接口配置PFC功能时,必须配置接口信任报文自带的802.1p优先级或DSCP优先级。接口收到以太网报文,根据优先级信任模式和报文的802.1Q标签状态,设备为不同优先级的报文标记不同的本地优先级(LP),根据本地优先级进行队列调度,具体过程如图3-3所示。
本文仅介绍接口信任报文自带的802.1p优先级或DSCP优先级的情况下,报文优先级到本地优先级的映射情况,关于端口采用端口优先级时的映射情况和报文丢弃时参考的丢弃优先级请参考产品配置指导。
配置PFC功能时,必须配置接口信任报文自带的802.1p优先级或DSCP优先级(qos trust { dot1p | dscp }),并且转发路径上所有端口的802.1p优先级与本地优先级映射关系以及DSCP优先级与802.1p优先级映射关系必须一致,否则PFC功能将无法正常工作。
用户可以在系统视图和接口视图下配置以太网接口PFC功能,多次在系统视图和接口视图下配置PFC功能,最后一次配置生效。
不建议在802.1p优先级为0,6或7时配置PFC功能,以免影响设备IRF功能及其它协议正常运行。
如果设备处于IRF模式时,IRF物理端口也需要开启PFC功能。IRF相关内容的详细介绍,请参见“虚拟化技术配置指导”中的“IRF”。
在Overlay网络中,需要配置qos trust tunnel-dot1p命令,PFC功能才能生效。有关Overlay网络的详细介绍,请参见“VXLAN配置指导”中的“VXLAN”。有关qos trust tunnel-dot1p命令的详细介绍,请参见“ACL和QoS命令参考”中的“QoS/优先级映射”。
为了避免报文在传输过程中因拥塞而发生丢包,请在报文流经的所有端口上都进行相同的PFC功能配置。
通过配置PFC缓存门限可以有效解决因缓冲空间不足和入流量队列数量过大,导致发送数据缓冲区尾丢弃等问题。
图3-4 PFC缓存门限示意图
PFC目前提供以下门限设置:
· Headroom缓存门限(如图3-4中的headroom):Headroom存储空间中某802.1p优先级报文的最大使用cell资源。当达到使用的cell资源后,该接口会丢弃收到的报文。
· 反压帧触发门限(如图3-4中的XOFF):Shared存储空间中某802.1p优先级报文在该存储空间使用cell资源上限。达到上限后,会触发PFC功能发送PAUSE帧。反压帧触发门限又分为动态反压帧触发门限和静态反压帧触发门限:
¡ 动态反压帧触发门限:设置某802.1p优先级报文触发PFC PAUSE帧的可用cell资源的百分比。
¡ 静态反压帧触发门限:设置某802.1p优先级报文触发PFC PAUSE帧的可用cell资源门限为一个固定值。
可以通过display buffer usage interface verbose命令的“XoffThres”和“IsDynamic”字段查看当前的反压帧触发门限和类型。
· 反压帧停止门限与触发门限间的偏移量(如图3-4中的ingress-threshold-offset):当某802.1p优先级报文使用的cell资源减小了一个固定值时,停止发送PFC PAUSE帧,使对端设备恢复流量发送。
· PFC预留门限(如图3-4中的reserved-buffer):Guaranteed存储空间中为某802.1p优先级报文预留的cell资源。
· Headroom最大可用的cell资源:配置Headroom存储空间某缓存池(目前仅支持pool 0)cell资源的大小。
开启指定802.1p优先级的PFC功能后,设备会为PFC的各种门限设置一个缺省值,此缺省值在一般的组网环境下是效果较好的参数组合,一般不建议调整。如组网环境或流量背景非常复杂确实需要调整,请参考本节的建议配置方式或咨询专业人员进行调整。
可以根据如下方法计算Headroom缓存门限值:
(1) 计算从接收端发送PFC Pause帧到发送端收到PFC Pause帧并真正停止流量发送期间,在途流量大小。公式为:在途流量(bytes)=MTUR+MTUs+Response+2*link_delay。其中,
¡ MTUR:队列触发反压帧门限到发送Pause帧之间,如果芯片有大包要发,这个大包的长度。由于这个大包可能来自其它任何队列,所以这个大包的长度应该等于设备允许的最大帧长度9216字节。
¡ MTUs:如果上游设备在准备停止流量发送前,刚好开始发送上一个包,这个包的长度。由于只有PFC指定优先级的报文影响接收端的门限,所以MTUs的长度应该为PFC指定优先级报文的长度。
¡ Response:上游设备收到PFC Pause帧到停止发送的反应时间产生的数据长度,该值固定为3840字节。
¡ 2*link_delay:线路来、回方向上缓冲的报文长度如下:
端口速率 |
每100米线缆缓冲报文字节数 |
10Gbits/s |
1300 |
25Gbits/s |
3250 |
40Gbits/s |
5200 |
100 Gbits/s |
13000 |
综上:在途流量(bytes)=9216+MTUs+3840+N*每百米线缆缓冲字节数,N等于线缆长度(百米)。
(2) 计算在途流量需要占用的cell数。这里还需要考虑不同包长对cell资源的影响。极端情况下,每个数据包都为64字节的小包,此时占用的cell资源是最多的。
¡ S6805系列、S6825系列、S6850系列、S9850系列:每个cell 256字节
¡ S9820-64H交换机:每个cell 208字节
¡ S9820-8C交换机:每个cell 254字节
¡ S9825系列:每个cell 254字节。
¡ S9855系列:每个cell 318字节。
设备的Headroom资源为所有端口所有优先级抢占的模式,请综合考虑各端口需要的headroom大小和端口数量确定一个满足需要的前提下较小的值。
分析网络流量模型,确保所有入接口的反压帧触发门限之和不大于出接口的尾丢弃门限值。出接口的尾丢弃门限值由buffer egress cell queue shared ratio(缺省20%)命令的配置决定,在无损以太网中可以配置该值为100%。计算每个入接口的流量可以占到总缓存的比例为多少,然后根据表3-1得到动态反压帧触发门限的百分比值,最后在实际的流量环境中调试确定一个最佳值配置到入接口上。
表3-1 PFC动态反压帧触发门限
百分比(动态反压帧触发门限值) |
Alpha值(芯片寄存器配置值,表示队列中cell个数和可用cell个数比值) |
占可用总缓存的实际比例 |
0 |
1/128 |
0.77 |
1 |
1/64 |
1.53 |
2~3 |
1/32 |
3.03 |
4~5 |
1/16 |
5.88 |
6~11 |
1/8 |
11.11 |
12~20 |
1/4 |
20.00 |
21~33 |
1/2 |
33.33 |
34~50 |
1 |
50.00 |
51~66 |
2 |
66.66 |
67~80 |
4 |
80.00 |
81~100 |
8 |
88.88 |
另外,PFC功能与ECN功能同时使用时,需要注意反压帧触发门限值(这里指cell数)需要大于ECN功能配置的high-limit值(queue queue-id [ drop-level drop-level ] low-limit low-limit high-limit high-limit [ discard-probability discard-prob ]),以使ECN功能先生效。
反压帧触发门限的cell数请根据公式Used=Total*Alpha/(1+N*Alpha)计算,其中:
· Used:多条流量拥塞时,单条流量占用的buffer大小
· Total:设备总的buffer大小(S6805、S6825、S6850系列、S9850系列为128K个cell,S9820-64H为204K个cell,S9820-8C为258K个cell,S9825系列为451K个cell,S9855系列为264K个cell)
S9825系列交换机支持2个ITM(Ingress Traffic Manager),相同ITM的端口共享入方向buffer资源。S9825-64D交换机编号1~32的端口共享一个ITM,编号33~64的端口共享一个ITM。
· Alpha:队列中cell个数和可用cell个数比值
· N:当前网络支持处理N条拥塞的流量
配置ingress-threshold-offset的值大于对应优先级报文的最大帧长,稍大一些即可,该值配置过大会影响反压帧停止快慢,影响流量发送速度。
建议配置为大于对应优先级报文的最大帧长度并稍有余量,可以根据此公式计算:(对应优先级报文的最大帧长度+报文头长度(即64字节)+1个cell字节数)/(每个cell的字节数)。
正常情况下,当设备的端口出现拥塞并触发PFC的反压帧触发门限(XOFF)时,设备将向数据进入的方向发送PAUSE帧反压,上游设备接收到PAUSE帧后停止发送数据,如果其本地端口缓存消耗超过阈值,则继续向上游反压。如此逐级向上反压,直到发出流量的服务器收到PAUSE帧后,在PAUSE帧中指定的Pause Time内暂停发送数据,从源头上减少流量的发送,从而消除网络节点因拥塞造成的丢包。
但在特殊情况下,例如发生链路故障或设备故障时,路由重新收敛期间可能会出现短暂环路。此时,设备间反复发送和接收PFC帧,报文无法转发,接口缓冲区的cell资源一直被占用无法释放,设备进入PFC死锁状态。
如图3-5所示:Server 1到Server 2的流量转发路径原本为Server1—〉Device C—〉Device A—〉Device D—〉Server 2;假设Device D到Server 2的链路发生故障,在路由重新收敛的过程中形成一条Server1—〉Device C—〉Device A—〉Device D—〉Device B—--〉Device C--〉 Server 2的转发路径,使设备间形成一条Device C—〉Device A—〉Device D—〉Device B—--〉Device C的环路;此时如果Device C连接Server 2的端口发生拥塞,设备向上游发送PFC Pause帧,PFC Pause帧将在上述环路中循环发送,使环路上所有设备都停止流量发送,等待对端释放资源,进入PFC死锁状态。
图3-5 PFC死锁产生示意图
设备处于PFC死锁状态后,采用关闭PFC功能或者忽略接收到的PFC PAUSE帧(PFC XOFF,表示停止流量发送)的方式,同时对buffer中的报文执行转发或者丢弃动作,就可以规避掉PFC死锁这种极端现象。设备的PFC死锁检测间隔可以达到毫秒级别,可以最大程度的降低PFC死锁带来的影响。
本功能中指定的Cos优先级对应的802.1p优先级必须开启了PFC功能。Cos与802.1p优先级的对应关系请通过display qos map-table dot1p-lp命令查看。
指定优先级报文死锁检测周期的具体时间等于priority-flow-control deadlock cos interval命令配置的interval值*priority-flow-control deadlock precision命令配置的时间精度值。例如配置priority-flow-control deadlock cos 5 interval 10表示Cos优先级为5的报文的死锁检测周期为10个精度单位,同时priority-flow-control deadlock precision命令配置精度为高精度(代表10毫秒),则Cos优先级为5的报文的死锁检测周期时间为10*10毫秒=100毫秒。
设备检测到PFC死锁后,在自动恢复延迟时间内,设备将忽略接收到的PFC XOFF帧并关闭PFC死锁检测功能,以便报文能够正常转发。
指定优先级报文死锁检测自动恢复的延迟时间等于 = 100ms + delay-interval * 100ms。例如配置priority-flow-control deadlock auto-recover cos 5 delay 10表示Cos优先级为5的报文的死锁检测自动恢复延迟周期为10,则Cos优先级为5的报文的死锁检测自动恢复延迟时间为100毫秒 + 10*100毫秒=1100毫秒。
设备解除PFC死锁后,需要恢复PFC死锁检测功能,同时恢复正常的PFC功能。死锁检测功能的恢复方式分为自动恢复和手工恢复。
通常情况下,使用自动恢复方式即可。当环路无法消除,设备频繁处于PFC死锁状态时,可以使用手工恢复方式,待排除故障后执行priority-flow-control deadlock recover命令恢复PFC死锁检测功能。
通过配置在指定周期内发生PFC死锁的上限次数,可以判断设备是否频繁处于PFC死锁状态。需要注意的是:设备检测到指定时间内PFC死锁次数超限后,会自动关闭PFC功能,请尽快排除网络故障,然后执行undo priority-flow-control deadlock threshold命令恢复PFC功能。
用户可根据实际组网情况,配置接口入方向或者出方向PFC报文的预警门限。预警门限用于PFC报文传输速率处于正常范围内,但需要提醒用户提前关注的情况。
当接口接收或发送PFC报文的速率达到预警门限时,系统会生成Trap和日志信息来提醒用户,以提前发现网络中的一些异常问题。例如:
· 对端设备网卡故障,不停地持续高速发送PFC帧,可以配置入方向预警门限进行监控。
· 本设备故障后不停发送PFC帧,可以配置出方向预警门限进行监控。
· 如果有双向监控需求的,可以在入和出方向都配置预警门限进行监控。
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功能的终端发出的报文。
图4-1 DS域位置信息
图4-2 ECN域位置信息
ECN功能工作机制:
(1) 发送端设置ECN域为10,告知路径上的设备及接收端,发送端设备支持ECN功能。
(2) 中间设备发生拥塞并达到门限,拥塞设备将发生拥塞的报文ECN域设置为11,报文正常转发。
(3) 接收端收到ECN置位为11的报文,由传输层发送CNP(Congestion Notification Packet,拥塞通知报文)通知发送端。
(4) 发送端收到CNP报文,对对应的优先级的队列进行降速处理。
(5) 经过一段可配置的时间或者发送一定数量数据,发送端恢复原来的速率。
图4-3 ECN工作机制示意图
部署了ECN功能的转发设备对接收到的数据报文进行识别和处理的具体方式如下:
· 当转发设备的报文在出方向进入队列排队,该队列的长度小于下限(也称为ECN门限)时,不对报文进行任何处理,转发设备直接将报文从出接口转发。
· 当转发设备的报文在出方向进入队列排队,该队列的长度大于下限但小于上限时:
¡ 如果设备接收到的报文中ECN域取值为00,表示报文发送端不支持ECN功能,转发设备按照丢弃概率计算是否丢弃该接收的报文。
¡ 如果设备接收到的报文中ECN域取值为01或者10,表示报文发送端支持ECN功能,将按照丢弃概率来修改部分入方向报文的ECN域为11后继续转发该报文,所有入方向接收到的报文均不丢弃。
¡ 如果设备接收到的报文中ECN域取值为11,表示该报文在之前的转发设备上已经出现拥塞,此时转发设备不处理报文,直接将报文从出接口转发。
· 当转发设备的报文在出方向进入队列排队,该队列的长度大于上限时:
¡ 如果设备接收到的报文中ECN域取值为00,表示报文发送端不支持ECN功能,转发设备丢弃接收的报文。
¡ 如果设备接收到的报文中ECN域取值为01或者10,表示报文发送端支持ECN功能,将入方向报文的ECN域修改为11后继续转发该报文,所有入方向接收到的报文均不丢弃。
¡ 如果设备接收到的报文中ECN域取值为11,表示该报文在之前的转发设备上已经出现拥塞,此时转发设备不处理报文,直接将报文从出接口转发。
通常情况下,建议参考最佳实践/配置指导书组网,并采用PFC和ECN的推荐配置值。推荐值在一般的组网环境下是效果较好的参数组合,一般不需要调整。PFC和ECN的推荐值如5.2 推荐值所示。
有些情况下,由于组网需求或网络中的设备、服务器存在特殊性,需要进一步调整参数时,请参考5.4 参数调整。
对于S6805 & S6825 & S6850 & S9850、S9820-64H、S9820-8C、S9825&S9855设备,开启指定802.1p优先级的PFC功能后,设备会为PFC的各种门限设置一个缺省值,具体请参考表5-1、表5-2、表5-3和表5-4。
此缺省值在一般的组网环境下是效果较好的参数组合,一般不建议调整。
表5-1 S6805 & S6825 & S6850 & S9850 PFC门限缺省值
PFC门限(右) 接口类型(下) |
Headroom缓存门限(cell) |
动态反压帧触发门限(%) |
反压帧停止门限与触发门限间的偏移量(cell) |
PFC预留门限(cell) |
1GE/10GE |
100 |
5 |
12 |
17 |
25GE |
125 |
5 |
12 |
17 |
40GE |
200 |
5 |
12 |
17 |
50GE |
308 |
5 |
12 |
17 |
100GE |
491 |
5 |
12 |
17 |
表5-2 S9820-64H PFC门限缺省值
PFC门限(右) 接口类型(下) |
Headroom缓存门限(cell) |
动态反压帧触发门限(%) |
反压帧停止门限与触发门限间的偏移量(cell) |
PFC预留门限(cell) |
25GE |
125 |
5 |
12 |
20 |
100GE |
491 |
5 |
12 |
20 |
表5-3 S9820-8C PFC门限缺省值
PFC门限(右) 接口类型(下) |
Headroom缓存门限(cell) |
动态反压帧触发门限(%) |
反压帧停止门限与触发门限间的偏移量(cell) |
PFC预留门限(cell) |
100GE |
491 |
5 |
12 |
20 |
200GE |
705 |
5 |
12 |
20 |
400GE |
1000 |
5 |
12 |
20 |
表5-4 S9825&S9855 PFC门限缺省值
PFC门限(右) 接口类型(下) |
Headroom缓存门限(cell) |
动态反压帧触发门限(%) |
反压帧停止门限与触发门限间的偏移量(cell) |
PFC预留门限(cell) |
100GE |
491 |
缺省3,建议配置为5 |
缺省48,建议配置为12 |
缺省0,建议配置为16 |
200GE |
750 |
缺省3,建议配置为5 |
缺省48,建议配置为12 |
缺省0,建议配置为16 |
400GE |
1000 |
缺省3,建议配置为5 |
缺省48,建议配置为12 |
缺省0,建议配置为16 |
对于ECN功能,RoCE队列推荐使用表5-5的配置值,其他队列可按需配置较大的平均长度下限值和平均长度上限值。
表5-5 ECN各门限推荐值
PFC门限(右) 接口类型(下) |
队列平均长度的下限 |
队列平均长度的上限 |
丢弃概率 |
计算平均队列长度的指数 |
25GE |
400 |
1625 |
20 |
0 |
50GE |
600 |
1500 |
20 |
0 |
100GE |
1000 |
2000 |
20 |
0 |
200GE |
1500 |
3000 |
20 |
0 |
400GE |
2100 |
5000 |
20 |
0 |
确认服务器网卡是否支持和启用了PFC和ECN功能(具体操作方式请参考服务器的资料说明),并查看服务器的RoCE队列报文是否携带ECN标志位。
本文以Mellanox ConnectX-6 Lx网卡的配置作为示例。
需要注意的是:网卡配置在服务器重启和网卡重启后会失效,重启服务器或重启网卡后需要重新配置(网卡配置没有写到配置文件中,因此重启会失效)。
项目 |
信息 |
网卡型号 |
Ethernet controller: Mellanox Technologies MT2894 Family [ConnectX-6 Lx] |
网卡驱动版本 |
MLNX_OFED_LINUX-5.4-3.2.7.2.3-rhel8.4-x86_64 |
网卡固件版本 |
driver: mlx5_core version: 5.4-3.2.7.2.3 firmware-version: 26.31.2006 (MT_0000000531) |
执行mst start命令开启MST(Mellanox Software Tools)服务。
执行mst status查看Mellanox设备状态信息。
(可选)执行show_gids命令查看网卡名称、GID值、IP地址。
执行mlnx_qos -i ifname --trust dscp命令配置接口信任报文的DSCP优先级,ifname为网卡接口名称。
另外需要注意,网卡上设置的报文的DSCP值需要与设备上RoCE报文的DSCP优先级对应,即设备上开启PFC和ECN功能的802.1p优先级映射的DSCP优先级等于网卡发出报文的802.1p优先级。
步骤如下:
(1) 使用ethtool -i ifname bus-info命令查看接口的bus-info值。例如查看ens1f0接口的bus-info值执行ethtool -i ens1f0 bus-info,查询到ens1f0接口的bus-info为0000:86:00.0。
(2) 进入设置DSCP优先级的路径cd /sys/kernel/debug/mlx5/0000:86:00.0/cc_params
(3) 执行echo priority_value > np_cnp_dscp命令设置CNP报文的DSCP优先级,例如设置CNP报文的DSCP优先级为48执行echo 48 > np_cnp_dscp。
(4) 执行cat np_cnp_dscp命令查看CNP报文优先级是否修改成功。
执行mlnx_qos -i ifname -–pfc 0,1,2,3,4,5,6,7命令开启RoCE队列的PFC功能。ifname为网卡接口名称。0,1,2,3,4,5,6,7对应位置的值设置为0表示数值代表的优先级不开启PFC,设置为1表示数值代表的优先级开启PFC。
例如,开启接口ens1f0 802.1P优先级为5的报文的PFC命令为mlnx_qos -i ens1f0 --pfc 0,0,0,0,0,1,0,0。
执行mlnx_qos -i ifname命令可以查看接口PFC功能开启情况。值为1表示该优先级的报文开启PFC。
执行如下命令开启指定优先级报文的ECN功能:
echo 1 > /sys/class/net/ifname/ecn/roce_np/enable/priority_value
echo 1 > /sys/class/net/ifname/ecn/roce_rp/enable/priority_value
例如开启接口ens1f0优先级为5的报文的ECN功能执行:
echo 1 > /sys/class/net/ens1f0/ecn/roce_np/enable/5
echo 1 > /sys/class/net/ens1f0/ecn/roce_rp/enable/5
执行下面命令查看ECN是否开启成功,返回1表示开启成功,返回为0表示没有开启。
cat /sys/class/net/ifname/ecn/roce_np/enable/priority_value
cat /sys/class/net/ifname/ecn/roce_rp/enable/priority_value
在进行参数调整的过程中,配置如下PFC、QoS、数据缓冲区相关命令时会导致端口流量中断。
· buffer apply
· buffer egress cell queue shared(配置本命令本身不丢包,执行buffer apply应用配置时丢包)
· qos wred apply
· qos wrr weight
· qos wrr group weight
· qos wfq byte-count
· qos wfq queue-id group { 1 | 2 } byte-count
· priority-flow-control no-drop dot1p
· priority-flow-control dot1p headroom
· priority-flow-control dot1p ingress-buffer dynamic
· priority-flow-control dot1p ingress-buffer static
· priority-flow-control dot1p ingress-threshold-offset
· priority-flow-control dot1p reserved-buffer
查看接口HundredGigE1/0/25丢弃报文的信息。
<Sysname> display packet-drop interface hundredgige 1/0/25
HundredGigE1/0/25:
Packets dropped due to Fast Filter Processor (FFP): 0
Packets dropped due to Egress Filter Processor (EFP): : 0
Packets dropped due to STP non-forwarding state: 0
Packets dropped due to insufficient data buffer. Input dropped: 0 Output dropped: 0
Packets of ECN marked: 0
Packets of WRED droped: 0
(1) 若出现Input dropped类型的丢包,可以增加端口Headroom缓存门限值的大小,建议按照当前配置值的倍数进行调整,直到不再出现Input dropped类型的丢包。例如:
# 配置Headroom缓存门限为982。
<sysname> system-view
[Sysname] interface hundredgige 1/0/25
[Sysname-HundredGigE1/0/25] priority-flow-control dot1p 5 headroom 982
如果调整至最大值仍然丢包,请排查服务器网卡是否支持和启用PFC功能。
(2) 若出现Output dropped类型的丢包,需要检查队列出方向最大共享区域占用比是否配置为100%和是否执行了buffer apply命令。例如:
# 配置队列5在cell资源中的最大共享缓存占用比为100%并应用配置。
<sysname> system-view
[Sysname] buffer egress cell queue 5 shared ratio 100
[Sysname] buffer apply
如果出方向队列配置为100%后仍然有Output dropped类型的丢包,则可能存在组网或配置问题,请排查组网和配置问题或联系技术支持。
(1) 若出现WRED droped丢包,请查看RoCE队列的ECN功能是否已开启。
<Sysname> display qos wred table
Table name: 1
Table type: Queue based WRED
QID gmin gmax gprob ymin ymax yprob rmin rmax rprob exponent ECN
----------------------------------------------------------------------------
0 100 1000 10 100 1000 10 100 1000 10 9 N
1 100 1000 10 100 1000 10 100 1000 10 9 N
2 100 1000 10 100 1000 10 100 1000 10 9 N
3 100 1000 10 100 1000 10 100 1000 10 9 N
4 100 1000 10 100 1000 10 100 1000 10 9 N
5 100 1000 10 100 1000 10 100 1000 10 9 N
6 100 1000 10 100 1000 10 100 1000 10 9 N
7 100 1000 10 100 1000 10 100 1000 10 9 N
(2) 若RoCE队列的ECN功能未开启(显示信息中ECN字段显示为N),则需要开启RoCE队列的ECN功能。
<Sysname> system-view
[Sysname] interface hundredgige 1/0/25
[Sysname-HundredGigE1/0/25] qos wred queue 5 ecn
(3) 若RoCE队列的ECN功能开启后WRED类型的丢包继续增加,则需要查看服务器的RoCE队列报文是否携带ECN标志位。若未携带,请排查服务器网卡是否启用了PFC和ECN功能。
(4) 如果仍然存在丢包,请联系技术支持。
为了满足时延需求,在不丢包的情况下,可以调整ECN和PFC的部分参数,进而降低时延。调整时延会影响吞吐,可以认为的原则是:在拥塞网络环境下,占用的buffer越小,时延越低,吞吐量较小;占用的buffer越大,时延越大,吞吐量较大。请根据具体组网需求平衡时延和吞吐的关系。
不拥塞网络环境下,PFC和ECN等功能不生效。触发ECN、PFC后,报文转发降速。调整的原则是尽量在低buffer占用,不丢包的情况下触发ECN和PFC。建议优先调整ECN。
另外需要注意的是,参数调整还需要考虑服务器网卡的支持情况,包括网卡对PFC、ECN报文的响应机制,是否有PFC、ECN相关的特殊能力。例如有些网卡支持自降速功能(时延大的情况自动降速)。此时如果我们想要加大吞吐,但是调整后加大了时延,服务器自降速了,反而起到了和预期相反的效果。建议调整前先查阅服务器的相关资料,了解服务器网卡PFC、ECN功能的支持情况和相关功能,并在调整过程中实际验证调整是否合适。
可以调整WRED表中各队列的如下参数,控制时延与吞吐量:
· Low-limit(队列平均长度的下限)和high-limit(队列平均长度的上限):通过调低low-limit和high-limit值,可以更快的触发ECN标记,使时延更低,但可能会影响吞吐量。
· Weighting-constan(计算平均队列长度的指数):表示的是队列深度的计算方式,为0表示实时队列深度,对ECN的标记会更灵敏。平均队列长度的指数越大,计算平均队列长度时对队列的实时变化越不敏感。建议保持推荐值。仅在完成其他调整项后仍然无效的情况下再尝试调整。
· discard-probability(丢弃概率):在使能了ECN后,代表的是标记概率,该值越大,表示在上下限门限之间被标记的报文数越多。建议保持推荐值,仅在完成其他调整项后仍然无效的情况下再尝试调整。可以按照当前值20%的幅度进行调整。
配置举例:
# 配置队列5的WRED参数:队列平均长度的下限为800,队列平均长度的上限为1800。
<Sysname> system-view
[Sysname] qos wred queue table queue-table1
[Sysname-wred-table-queue-table1] queue 5 drop-level 0 low-limit 800 high-limit 1800
[Sysname-wred-table-queue-table1] queue 5 drop-level 1 low-limit 800 high-limit 1800
[Sysname-wred-table-queue-table1] queue 5 drop-level 2 low-limit 800 high-limit 1800
PFC是ECN后的一层屏障,保证设备不丢包。PFC一般不被触发,对时延影响不大,并且PFC门限调整过低会影响吞吐量,所以一般不建议调整。
但如果想进一步降低时延,可以尝试调整ingress-buffer参数(反压帧触发门限)。
需要注意的是,在设备有流量收发的情况下调整PFC门限会引起丢包。
(1) 减小ingress-buffer门限值,建议跟随WRED的high-limit门限进行调整(按当前值10%的幅度减小),但要保证该门限值大于WRED的high-limit门限值,保证设备优先触发ECN功能。
# 配置动态反压帧触发门限为4。
<sysname> system-view
[Sysname] interface hundredgige 1/0/25
[Sysname-HundredGigE1/0/25] priority-flow-control dot1p 5 ingress-buffer dynamic 4
(2) 调整完成后,可以通过命令行多次查看接口的PFC信息,尽量保证设备上PFC的收发数量较少,即不触发或偶尔触发PFC。如果多次查看发现存在PFC报文收发,则表示ingress-buffer值配置过低,建议回调。
# 显示接口的PFC信息。
<Sysname> display priority-flow-control interface
Conf -- Configured mode Ne -- Negotiated mode P -- Priority
Interface Conf Ne Dot1pList P Recv Sent Inpps Outpps
HGE1/0/25 Auto On 0,2-3,5-6 0 178 43 12 15
如图6-1所示:
· RDMA网络采用Spine、Leaf两级架构,Spine设备为S9820-8C,Leaf设备为S6850-56HF。
· Leaf设备作为服务器的网关,Spine、Leaf之间为三层ECMP网络,在进行数据高速转发的同时支持转发路径的冗余备份。
· 同一组Leaf设备的成员设备之间运行S-MLAG(Simple Multichassis Link Aggregation,简单跨设备链路聚合),服务器使用动态聚合接口双上行接入Leaf设备。
· 服务器网卡采用bond4工作模式(动态聚合模式)。
现要求实现RDMA应用报文使用队列5进行无损传输。
本文以4台Spine设备、4台Leaf设备示例。实际应用中Spine层部署8台S9820-8C设备、Leaf层部署96台S6850-56HF设备可以实现收敛比1.5:1的RDMA网络。
服务器网卡使用bond4工作模式时,其接入交换机需要配置动态聚合,且服务器需要支持两个上行口双发ARP使两台接入交换机都能学到服务器的ARP。当服务器侧聚合组任一成员口发生down->up的状态变化时都要发送ARP给接入交换机以便交换机刷新ARP表项并生成主机路由。
服务器网卡使用bond1工作模式(主备模式)时有如下要求:
· 接入交换机采用动态聚合或静态聚合都可以。服务器网卡需要支持接口发生inactive-active状态变化时发送ARP给接入交换机以便交换机刷新ARP表项并生成主机路由。
· 当交换机配置动态聚合时,需要将接入交换机聚合接口配置为聚合边缘接口(lacp edge-port命令)。
· 建议将ARP老化时间配置为30秒,使得服务器网卡接口切换为inactive,但是状态没有down的情况下,交换机能够尽快刷新ARP表项并生成主机路由以减少丢包时间。ARP老化时间不建议配置更小,否则会加重CPU负担。
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
说明: Spine 2、Spine 3、Spine 4端口编号规则与Spine 1一样;Leaf 1-2、Leaf 2-1、Leaf 2-2端口编号规则与Leaf 1-1一样。为图形简洁起见,图中不再一一标注。 |
|||||
Leaf 1-1 |
HGE1/0/25 |
9.179.56.1/31 |
Spine 1 |
HGE1/1/1 |
9.179.56.0/31 |
HGE1/0/26 |
9.179.56.193/31 |
HGE1/1/2 |
9.179.56.2/31 |
||
HGE1/0/27 |
9.179.57.129/31 |
HGE1/1/3 |
9.179.56.4/31 |
||
HGE1/0/28 |
9.179.58.65/31 |
HGE1/1/4 |
9.179.56.6/31 |
||
Vlan-int2 |
9.179.64.1/26 |
Spine 2 |
HGE1/1/1 |
9.179.56.192/31 |
|
Leaf 1-2 |
HGE1/0/25 |
9.179.56.3/31 |
HGE1/1/2 |
9.179.56.194/31 |
|
HGE1/0/26 |
9.179.56.195/31 |
HGE1/1/3 |
9.179.56.196/31 |
||
HGE1/0/27 |
9.179.57.131/31 |
HGE1/1/4 |
9.179.56.198/31 |
||
HGE1/0/28 |
9.179.58.67/31 |
Spine 3 |
HGE1/1/1 |
9.179.57.128/31 |
|
Vlan-int2 |
9.179.64.1/26 |
HGE1/1/2 |
9.179.57.130/31 |
||
Leaf 2-1 |
HGE1/0/25 |
9.179.56.5/31 |
HGE1/1/3 |
9.179.57.132/31 |
|
HGE1/0/26 |
9.179.56.197/31 |
HGE1/1/4 |
9.179.57.134/31 |
||
HGE1/0/27 |
9.179.57.133/31 |
Spine 4 |
HGE1/1/1 |
9.179.58.64/31 |
|
HGE1/0/28 |
9.179.58.69/31 |
HGE1/1/2 |
9.179.58.66/31 |
||
Vlan-int2 |
9.179.64.64/26 |
HGE1/1/3 |
9.179.58.68/31 |
||
Leaf 2-2 |
HGE1/0/25 |
9.179.56.7/31 |
HGE1/1/4 |
9.179.58.70/31 |
|
HGE1/0/26 |
9.179.56.199/31 |
- |
|||
HGE1/0/27 |
9.179.57.135/31 |
||||
HGE1/0/28 |
9.179.58.71/31 |
||||
Vlan-int2 |
9.179.64.64/26 |
Leaf设备配置S-MLAG实现服务器双上行接入(组网需求不允许使用IRF技术)。
Leaf设备配置ARP生成32位主机路由功能,当其中一台成员设备链路故障时,可以及时更新路由信息,使流量切换到同组Leaf的另一台成员设备上。
由于服务器发送ARP报文请求同一组Leaf设备连接的同一网段其他服务器的MAC地址时,会造成Leaf设备上ARP广播报文泛洪。为了抑制Leaf设备上的广播报文,进行如下配置:
· Leaf设备配置QoS策略,只允许设备业务网段VLAN接口发送的ARP报文,禁止其他ARP报文转发。
· Leaf设备业务报文所在VLAN的VLAN接口开启本地ARP代理功能,使同组Leaf设备同一网段的主机之间可以三层互通。
Leaf设备配置Monitor Link,当上行接口全部down时联动连接服务器的下行接口down,使流量可以切换至同组Leaf的另一台成员设备上,从而保护业务流量。
配置BGP路由协议。配置Spine设备的AS号为805。每台Leaf成员设备需要配置不同的AS号(本文配置为AS 5001、AS 5002、AS 5003…),否则Leaf设备无法学习其他Leaf发布的路由(设备收到BGP邻居发布的路由会检查AS_PATH属性,如果路由的AS_PATH中包含自身AS号,则不会学习该路由)。
通过配置路由/路由策略实现Spine设备学习所有网段路由和主机路由,Leaf设备学习网段路由和同组另一台成员设备发送的主机路由以节约路由资源。
为实现RDMA应用报文的无损传输,我们需要部署PFC功能和ECN功能:
· PFC功能基于优先级队列对报文进行流量控制。RDMA报文携带802.1P优先级5,我们对802.1P优先级为5的报文开启PFC功能。
RDMA报文转发路径的所有端口都需要配置PFC功能,因此我们在Spine设备与Leaf设备互连的端口、Leaf设备连接服务器的端口均开启PFC功能。
· ECN功能提供端到端的拥塞控制。设备检测到拥塞后,对报文的ECN域进行标记。接收端收到ECN标记的报文后,向发送端发送拥塞通知报文,使发送端降低流量发送速率。本例中,我们在Spine设备与Leaf设备互连的端口、Leaf设备连接服务器的端口均开启ECN功能。
ECN功能配置的high-limit值(queue queue-id [ drop-level drop-level ] low-limit low-limit high-limit high-limit [ discard-probability discard-prob ])需要小于PFC反压帧触发门限值,以使ECN功能先生效。
配置PFC功能时:必须配置接口信任报文自带的802.1p优先级或DSCP优先级(qos trust { dot1p | dscp }),并且转发路径上所有端口的802.1p优先级与本地优先级映射关系以及DSCP优先级与802.1p优先级映射关系必须一致,否则PFC功能将无法正常工作。
同一组Leaf的两台成员设备上作为网关的VLAN接口需要配置相同的IP地址和MAC地址。
(1) 配置Leaf 1-1
# 配置HundredGigE1/0/25~HundredGigE1/0/28工作在三层模式,并配置各接口的IP地址。
<Leaf 1-1> system-view
[Leaf 1-1] interface hundredgige 1/0/25
[Leaf 1-1-HundredGigE1/0/25] port link-mode route
[Leaf 1-1-HundredGigE1/0/25] ip address 9.179.56.1 31
[Leaf 1-1-HundredGigE1/0/25] quit
[Leaf 1-1] interface hundredgige 1/0/26
[Leaf 1-1-HundredGigE1/0/26] port link-mode route
[Leaf 1-1-HundredGigE1/0/26] ip address 9.179.56.193 31
[Leaf 1-1-HundredGigE1/0/26] quit
[Leaf 1-1] interface hundredgige 1/0/27
[Leaf 1-1-HundredGigE1/0/27] port link-mode route
[Leaf 1-1-HundredGigE1/0/27] ip address 9.179.57.129 31
[Leaf 1-1-HundredGigE1/0/27] quit
[Leaf 1-1] interface hundredgige 1/0/28
[Leaf 1-1-HundredGigE1/0/28] port link-mode route
[Leaf 1-1-HundredGigE1/0/28] ip address 9.179.58.65 31
[Leaf 1-1-HundredGigE1/0/28] quit
# 创建VLAN 2,并配置VLAN 2接口的IP地址和MAC地址。
[Leaf 1-1] vlan 2
[Leaf 1-1] interface vlan-interface 2
[Leaf 1-1-Vlan-interface2] 9.179.64.1 26
[Leaf 1-1-Vlan-interface2] mac-address 0000-5e00-0001
(2) 配置Leaf 1-2、Leaf 2-1和Leaf 2-2。
配置设备各接口工作在三层模式,并参考图6-1配置各接口的IP地址,具体步骤略。
需要特别说明的是,Leaf 1-2的VLAN 2接口需要配置与Leaf 1-1的VLAN 2接口相同的IP地址和MAC地址。Leaf 2-1和Leaf 2-2同理。
(3) 配置Spine 1
# 配置HundredGigE1/1/1~HundredGigE1/1/4工作在三层模式,并配置各接口的IP地址。
<Spine 1> system-view
[Spine 1] interface hundredgige 1/1/1
[Spine 1-HundredGigE1/1/1] port link-mode route
[Spine 1-HundredGigE1/1/1] ip address 9.179.56.0 31
[Spine 1-HundredGigE1/1/1] quit
[Spine 1] interface hundredgige 1/1/2
[Spine 1-HundredGigE1/1/2] port link-mode route
[Spine 1-HundredGigE1/1/2] ip address 9.179.56.2 31
[Spine 1-HundredGigE1/1/2] quit
[Spine 1] interface hundredgige 1/1/3
[Spine 1-HundredGigE1/1/3] port link-mode route
[Spine 1-HundredGigE1/1/3] ip address 9.179.56.4 31
[Spine 1-HundredGigE1/1/37] quit
[Spine 1] interface hundredgige 1/1/4
[Spine 1-HundredGigE1/1/4] port link-mode route
[Spine 1-HundredGigE1/1/4] ip address 9.179.56.6 31
[Spine 1-HundredGigE1/1/4] quit
(4) Spine 2、Spine 3和Spine 4
配置与Spine 1类似,请参考图6-1所示的接口和IP地址进行配置,具体步骤略。
(1) 配置Leaf 1-1
# 配置LACP的系统地址为0001-0001-0001。在开启S-MLAG功能的一组设备上,LACP的系统MAC地址需要配置一致。
<Leaf 1-1> system-view
[Leaf 1-1] lacp system-mac 1-1-1
# 配置LACP的系统优先级为123。在开启S-MLAG功能的一组设备上,LACP的系统优先级需要配置一致。
[Leaf 1-1] lacp system-priority 123
# 配置LACP的系统编号为1。在开启S-MLAG功能的一组设备上,不同设备上配置的LACP系统编号不能相同。
[Leaf 1-1] lacp system-number 1
# 创建二层聚合接口1,并配置该接口为动态聚合模式。
[Leaf 1-1] interface bridge-aggregation 1
[Leaf 1-1-Bridge-Aggregation1] link-aggregation mode dynamic
[Leaf 1-1-Bridge-Aggregation1] quit
# 将端口Twenty-FiveGigE1/0/1加入到聚合组1中。配置端口的LACP超时时间为短超时(3秒)。
[Leaf 1-1] interface twenty-fivegige 1/0/1
[Leaf 1-1-Twenty-FiveGigE1/0/1] port link-aggregation group 1
[Leaf 1-1-Twenty-FiveGigE1/0/1] lacp period short
[Leaf 1-1-Twenty-FiveGigE1/0/1] quit
# 配置二层聚合接口1链路类型为Trunk,允许VLAN 2通过,不允许VLAN 1通过,PVID为VLAN 2。
[Leaf 1-1] interface bridge-aggregation 1
[Leaf 1-1-Bridge-Aggregation1] port link-type trunk
[Leaf 1-1-Bridge-Aggregation1] undo port trunk permit vlan 1
[Leaf 1-1-Bridge-Aggregation1] port trunk permit vlan 2
[Leaf 1-1-Bridge-Aggregation1] port trunk pvid vlan 2
# 将二层聚合接口1加入S-MLAG组1。
[Leaf 1-1-Bridge-Aggregation1] port s-mlag group 1
[Leaf 1-1-Bridge-Aggregation1] quit
# 创建二层聚合接口2,并配置该接口为动态聚合模式。
[Leaf 1-1] interface bridge-aggregation 2
[Leaf 1-1-Bridge-Aggregation2] link-aggregation mode dynamic
# 将端口Twenty-FiveGigE1/0/2加入到聚合组2中。配置端口的LACP超时时间为短超时(3秒)。
[Leaf 1-1] interface twenty-fivegige 1/0/2
[Leaf 1-1-Twenty-FiveGigE1/0/2] port link-aggregation group 2
[Leaf 1-1-Twenty-FiveGigE1/0/2] lacp period short
[Leaf 1-1-Twenty-FiveGigE1/0/2] quit
# 配置二层聚合接口2链路类型为Trunk,允许VLAN 2通过,不允许VLAN 1通过,PVID为VLAN 2。
[Leaf 1-1] interface bridge-aggregation 2
[Leaf 1-1-Bridge-Aggregation2] port link-type trunk
[Leaf 1-1-Bridge-Aggregation2] undo port trunk permit vlan 1
[Leaf 1-1-Bridge-Aggregation2] port trunk permit vlan 2
[Leaf 1-1-Bridge-Aggregation2] port trunk pvid vlan 2
# 将二层聚合接口2加入S-MLAG组2。
[Leaf 1-1-Bridge-Aggregation2] port s-mlag group 2
[Leaf 1-1-Bridge-Aggregation2] quit
(2) 配置Leaf 1-2
# 配置LACP的系统地址为0001-0001-0001。在开启S-MLAG功能的一组设备上,LACP的系统MAC地址需要配置一致。
<Leaf 1-2> system-view
[Leaf 1-2] lacp system-mac 1-1-1
# 配置LACP的系统优先级为123。在开启S-MLAG功能的一组设备上,LACP的系统优先级需要配置一致。
[Leaf 1-2] lacp system-priority 123
# 配置LACP的系统编号为2。在开启S-MLAG功能的一组设备上,不同设备上配置的LACP系统编号不能相同。
[Leaf 1-2] lacp system-number 2
# 创建二层聚合接口1,并配置该接口为动态聚合模式。
[Leaf 1-2] interface bridge-aggregation 1
[Leaf 1-2-Bridge-Aggregation1] link-aggregation mode dynamic
# 将端口Twenty-FiveGigE1/0/1加入到聚合组1中。配置端口的LACP超时时间为短超时(3秒)。
[Leaf 1-2] interface twenty-fivegige 1/0/1
[Leaf 1-2-Twenty-FiveGigE1/0/1] port link-aggregation group 1
[Leaf 1-2-Twenty-FiveGigE1/0/1] lacp period short
[Leaf 1-2-Twenty-FiveGigE1/0/1] quit
# 配置二层聚合接口1链路类型为Trunk,允许VLAN 2通过,不允许VLAN 1通过,PVID为VLAN 2。
[Leaf 1-2-Bridge-Aggregation1] port link-type trunk
[Leaf 1-2-Bridge-Aggregation1] undo port trunk permit vlan 1
[Leaf 1-2-Bridge-Aggregation1] port trunk permit vlan 2
[Leaf 1-2-Bridge-Aggregation1] port trunk pvid vlan 2
# 将二层聚合接口1加入S-MLAG组1。
[Leaf 1-2-Bridge-Aggregation1] port s-mlag group 1
[Leaf 1-2-Bridge-Aggregation1] quit
# 创建二层聚合接口2,并配置该接口为动态聚合模式。
[Leaf 1-2] interface bridge-aggregation 2
[Leaf 1-2-Bridge-Aggregation2] link-aggregation mode dynamic
# 将端口Twenty-FiveGigE1/0/2加入到聚合组1中。配置端口的LACP超时时间为短超时(3秒)。
[Leaf 1-2] interface twenty-fivegige 1/0/2
[Leaf 1-2-Twenty-FiveGigE1/0/2] port link-aggregation group 2
[Leaf 1-2-Twenty-FiveGigE1/0/2] lacp period short
[Leaf 1-2-Twenty-FiveGigE1/0/2] quit
# 配置二层聚合接口2链路类型为Trunk,允许VLAN 2通过,不允许VLAN 1通过,PVID为VLAN 2。
[Leaf 1-2-Bridge-Aggregation2] port link-type trunk
[Leaf 1-2-Bridge-Aggregation2] undo port trunk permit vlan 1
[Leaf 1-2-Bridge-Aggregation2] port trunk permit vlan 2
[Leaf 1-2-Bridge-Aggregation2] port trunk pvid vlan 2
# 将二层聚合接口2加入S-MLAG组2。
[Leaf 1-2-Bridge-Aggregation2] port s-mlag group 2
[Leaf 1-2-Bridge-Aggregation2] quit
(3) 配置Leaf 2-1和配置Leaf 2-2
Leaf 2-1和Leaf 2-2与Leaf 1-1和Leaf 1-2的配置类似,具体配置略。
(1) 配置Leaf 1-1
# 在接口Twenty-FiveGigE1/0/1和Twenty-FiveGigE1/0/2上配置广播、组播、未知单播风暴抑制功能,防止接口转发过多泛洪流量,对网络转发功能造成冲击。
[Leaf 1-1] interface range twenty-fivegige 1/0/1 twenty-fivegige 1/0/2
[Leaf 1-1-if-range] broadcast-suppression pps 0
[Leaf 1-1-if-range] multicast-suppression pps 0
[Leaf 1-1-if-range] unicast-suppression pps 0
# 在接口Twenty-FiveGigE1/0/1和Twenty-FiveGigE1/0/2上配置ARP限速,限速速率为50包每秒,防止ARP攻击。
[Leaf 1-1-if-range] arp rate-limit 50
[Leaf 1-1-if-range] quit
# 在VLAN 2接口上开启本地代理ARP功能,使同一网段的主机之间可以互通。
[Leaf 1-1] interface vlan-interface 2
[Leaf 1-1-Vlan-interface2] local-proxy-arp enable
# 在VLAN 2接口上配置ARP直连路由通告功能。
[Leaf 1-1-Vlan-interface2] arp route-direct advertise
(2) 配置Leaf 1-2、Leaf 2-1和Leaf 2-2
与Leaf 1-1配置相同,具体步骤略。
(1) 配置Leaf 1-1
# 创建流分类Arp-Forwarding,并配置报文源MAC地址匹配VLAN接口2的MAC地址0000-5e00-0001和匹配ACL 4001(匹配ARP报文),即匹配VLAN接口2发出的ARP报文。
[Leaf 1-1] acl mac 4001
[Leaf 1-1-acl-mac-4000] rule 0 permit type 0806 ffff
[Leaf 1-1-acl-mac-4000] quit
[Leaf 1-1] traffic classifier Arp-Forwarding operator and
[Leaf 1-1-classifier-Arp-Forwarding] if-match source-mac 0000-5e00-0001
[Leaf 1-1-classifier-Arp-Forwarding] if-match acl mac 4001
[Leaf 1-1-classifier-Arp-Forwarding] quit
# 创建流分类Arp-No-Forwarding,配置报文匹配规则为匹配ACL 4001。
[Leaf 1-1] traffic classifier Arp-No-Forwarding operator and
[Leaf 1-1-classifier-Arp-No-Forwarding] if-match acl 4001
[Leaf 1-1-classifier-Arp-No-Forwarding] quit
# 创建流行为Forwarding,流行为为允许命中规则的数据包通过。
[Leaf 1-1] traffic behavior Forwarding
[Leaf 1-1-behavior-Forwarding] filter permit
[Leaf 1-1-behavior-Forwarding] quit
# 创建流行为 No-Forwarding,流行为为丢弃命中规则的数据包。
[Leaf 1-1] traffic behavior No-Forwarding
[Leaf 1-1-behavior-No-Forwarding] filter deny
[Leaf 1-1-behavior-No-Forwarding] quit
# 创建QoS策略Arp-Filter,在策略中为流分类Arp-Forwarding指定流行为Forwarding,为流分类Arp-No-Forwarding指定流行为No-Forwarding。
[Leaf 1-1] qos policy Arp-Filter
[Leaf 1-1-qospolicy-Arp-Filter] classifier Arp-Forwarding behavior Forwarding
[Leaf 1-1-qospolicy-Arp-Filter] classifier Arp-No-Forwarding behavior No-Forwarding
[Leaf 1-1-qospolicy-Arp-Filter] quit
# 将QoS策略Arp-Filter应用到全局出方向上。
[Leaf 1-1] qos apply policy Arp-Filter global outbound
(2) 配置Leaf 1-2、Leaf 2-1、Leaf 2-2
Leaf 1-2、Leaf 2-1、Leaf 2-2和Leaf 1-1的配置类似,具体配置略。
(1) 配置Leaf 1-1
# 创建Monitor Link组1,配置下行接口的回切延时为120秒。
<Leaf 1-1> system-view
[Leaf 1-1] monitor-link group 1
[Leaf 1-1-mtlk-group1] downlink up-delay 120
[Leaf 1-1-mtlk-group1] quit
# 配置所有上行Spine的接口为uplink口,所有下行服务器的接口为downlink口,以便Leaf设备上行口down时能够联动下行服务器的聚合成员口切换。
[Leaf 1-1] interface hundredgige 1/0/25
[Leaf 1-1-HundredGigE1/0/25] port monitor-link group 1 uplink
[Leaf 1-1-HundredGigE1/0/25] quit
[Leaf 1-1] interface hundredgige 1/0/26
[Leaf 1-1-HundredGigE1/0/26] port monitor-link group 1 uplink
[Leaf 1-1-HundredGigE1/0/26] quit
[Leaf 1-1] interface hundredgige 1/0/27
[Leaf 1-1-HundredGigE1/0/27] port monitor-link group 1 uplink
[Leaf 1-1-HundredGigE1/0/27] quit
[Leaf 1-1] interface hundredgige 1/0/28
[Leaf 1-1-HundredGigE1/0/28] port monitor-link group 1 uplink
[Leaf 1-1-HundredGigE1/0/28] quit
[Leaf 1-1] interface twenty-fivegige 1/0/1
[Leaf 1-1-Twenty-FiveGigE1/0/1] port monitor-link group 1 downlink
[Leaf 1-1-Twenty-FiveGigE1/0/1] quit
[Leaf 1-1] interface twenty-fivegige 1/0/2
[Leaf 1-1-Twenty-FiveGigE1/0/2] port monitor-link group 1 downlink
[Leaf 1-1-Twenty-FiveGigE1/0/2] quit
(2) 配置Leaf 1-2、Leaf 2-1、Leaf 2-2
Leaf 1-2、Leaf 2-1、Leaf 2-2和Leaf 1-1的配置相同,具体配置略。
(1) 配置Leaf 1-1
# 启动BGP实例default,指定该BGP实例的本地AS号为5001,并进入BGP实例视图。
<Leaf 1-1> system-view
[Leaf 1-1] bgp 5001
# 配置全局Router ID为1.1.1.1。
[Leaf 1-1-bgp-default] router-id 1.1.1.1
# 配置允许比较来自不同AS路由的MED属性值。
[Leaf 1-1-bgp-default] compare-different-as-med
# 创建EBGP对等体组Core。
[Leaf 1-1-bgp-default] group Core external
# 指定对等体组Core的AS号为805。
[Leaf 1-1-bgp-default] peer Core as-number 805
# 配置向对等体组Core发布同一路由的时间间隔为0。
[Leaf 1-1-bgp-default] peer Core route-update-interval 0
# 将Spine设备添加为对等体组Core中的对等体。
[Leaf 1-1-bgp-default] peer 9.179.56.0 group Core
[Leaf 1-1-bgp-default] peer 9.179.56.192 group Core
[Leaf 1-1-bgp-default] peer 9.179.57.128 group Core
[Leaf 1-1-bgp-default] peer 9.179.58.64 group Core
# 进入BGP IPv4单播地址族视图。
[Leaf 1-1-bgp-default] address-family ipv4 unicast
# 配置进行BGP负载分担的路由条数为32。
[Leaf 1-1-bgp-default-ipv4] balance 32
# 配置BGP路由的优先级,EBGP路由的优先级为10,IBGP路由的优先级为100,本地产生的BGP路由的优先级为100。
[Leaf 1-1-bgp-default-ipv4] preference 10 100 100
# 配置向对等体组Core发布团体属性。
[Leaf 1-1-bgp-default-ipv4] peer Core advertise-community
[Leaf 1-1-bgp-default-ipv4] quit
# 允许本地路由器与对等体组Core交换路由信息。
[Leaf 1-1-bgp-default-ipv4] peer Core enable
[Leaf 1-1-bgp-default-ipv4] quit
[Leaf 1-1-bgp-default] quit
# 定义路由策略SetComm-1/1,配置团体属性1:1。
[Leaf 1-1] route-policy SetComm-1/1 permit node 5
[Leaf 1-1-route-policy-SetComm-1/1-5] apply community 1:1
[Leaf 1-1-route-policy-SetComm-1/1-5] quit
# 配置BGP发布本地业务网段路由9.179.64.0/26,并应用路由策略SetComm-1/1。
[Leaf 1-1] bgp 5001
[Leaf 1-1-bgp-default] address-family ipv4 unicast
[Leaf 1-1-bgp-default-ipv4] network 9.179.64.0 255.255.255.192 route-policy SetComm-1/1
[Leaf 1-1-bgp-default-ipv4] quit
[Leaf 1-1-bgp-default] quit
# 定义一条名为Host-Route的IPv4地址前缀列表,允许掩码长度为32的路由(即主机路由)通过。
[Leaf 1-1] ip prefix-list Host-Route index 5 permit 0.0.0.0 0 greater-equal 32
# 定义路由策略From-Dircet,如果匹配Host-Route IPv4地址前缀列表,配置团体属性1:5001。
[Leaf 1-1] route-policy From-Dircet permit node 10
[Leaf 1-1-route-policy-From-Dircet-10] if-match ip address prefix-list Host-Route
[Leaf 1-1-route-policy-From-Dircet-10] apply community 1:5001
[Leaf 1-1-route-policy-From-Dircet-10] quit
# 配置序号为11的基本团体属性列表,允许团体属性1:1和1:5002的路由信息通过。
[Leaf 1-1] ip community-list 11 permit 1:1
[Leaf 1-1] ip community-list 11 permit 1:5002
# 定义路由策略From-Core,匹配序号为11的基本团体属性列表。
[Leaf 1-1] route-policy From-Core permit node 5
[Leaf 1-1-route-policy-From-Core-5] if-match community 11
[Leaf 1-1-route-policy-From-Core-5] quit
# 引入直连路由并引用路由策略From-Dircet过滤引入的路由,即为引入的直连路由添加团体属性1:5001。
[Leaf 1-1] bgp 5001
[Leaf 1-1-bgp-default] address-family ipv4 unicast
[Leaf 1-1-bgp-default-ipv4] import-route direct route-policy From-Dircet
# 从对等体组Core接收路由时应用From-Core路由策略,即接收Spine发布的业务网段路由和同组Leaf设备发布的主机路由。
[Leaf 1-1-bgp-default-ipv4] peer Core route-policy From-Core import
[Leaf 1-1-bgp-default-ipv4] quit
[Leaf 1-1-bgp-default] quit
(2) 配置Leaf 1-2
# 启动BGP实例default,指定该BGP实例的本地AS号为5002,并进入BGP实例视图。
<Leaf 1-2> system-view
[Leaf 1-2] bgp 5002
# 配置全局Router ID为2.2.2.2。
[Leaf 1-2-bgp-default] router-id 2.2.2.2
# 配置允许比较来自不同AS路由的MED属性值。
[Leaf 1-2-bgp-default] compare-different-as-med
# 创建EBGP对等体组Core。
[Leaf 1-2-bgp-default] group Core external
# 指定对等体组Core的AS号为805。
[Leaf 1-2-bgp-default] peer Core as-number 805
# 配置向对等体组Core发布同一路由的时间间隔为0。
[Leaf 1-2-bgp-default] peer Core route-update-interval 0
# 将Spine设备添加为对等体组Core中的对等体。
[Leaf 1-2-bgp-default] peer 9.179.56.2 group Core
[Leaf 1-2-bgp-default] peer 9.179.56.194 group Core
[Leaf 1-2-bgp-default] peer 9.179.57.130 group Core
[Leaf 1-2-bgp-default] peer 9.179.58.66 group Core
# 进入BGP IPv4单播地址族视图。
[Leaf 1-2-bgp-default] address-family ipv4 unicast
# 配置进行BGP负载分担的路由条数为32。
[Leaf 1-2-bgp-default-ipv4] balance 32
# 配置BGP路由的优先级,EBGP路由的优先级为10,IBGP路由的优先级为100,本地产生的BGP路由的优先级为100。
[Leaf 1-2-bgp-default-ipv4] preference 10 100 100
# 配置向对等体组Core发布团体属性。
[Leaf 1-2-bgp-default-ipv4] peer Core advertise-community
[Leaf 1-2-bgp-default-ipv4] quit
# 允许本地路由器与对等体组Core交换路由信息。
[Leaf 1-2-bgp-default-ipv4] peer Core enable
[Leaf 1-2-bgp-default-ipv4] quit
[Leaf 1-2-bgp-default] quit
# 定义路由策略SetComm-1/1,配置团体属性1:1。
[Leaf 1-2] route-policy SetComm-1/1 permit node 5
[Leaf 1-2-route-policy-SetComm-1/1-5] apply community 1:1
[Leaf 1-2-route-policy-SetComm-1/1-5] quit
# 配置BGP发布本地业务网段路由9.179.64.0/32,并应用路由策略SetComm-1/1。
[Leaf 1-2] bgp 5002
[Leaf 1-2-bgp-default] address-family ipv4 unicast
[Leaf 1-2-bgp-default-ipv4] network 9.179.64.0 255.255.255.192 route-policy SetComm-1/1
[Leaf 1-2-bgp-default-ipv4] quit
[Leaf 1-2-bgp-default] quit
# 定义一条名为Host-Route的IPv4地址前缀列表,允许掩码长度为32的路由(即主机路由)通过。
[Leaf 1-2] ip prefix-list Host-Route index 5 permit 0.0.0.0 0 greater-equal 32
# 定义路由策略From-Dircet,如果匹配Host-Route IPv4地址前缀列表,配置团体属性1:5002。
[Leaf 1-2] route-policy From-Dircet permit node 10
[Leaf 1-2-route-policy-From-Dircet-10] if-match ip address prefix-list Host-Route
[Leaf 1-2-route-policy-From-Dircet-10] apply community 1:5002
[Leaf 1-2-route-policy-From-Dircet-10] quit
# 配置序号为11的基本团体属性列表,允许团体属性1:1和1:5001的路由信息通过。
[Leaf 1-2] ip community-list 11 permit 1:1
[Leaf 1-2] ip community-list 11 permit 1:5001
# 定义路由策略From-Core,匹配序号为11的基本团体属性列表。
[Leaf 1-2] route-policy From-Core permit node 5
[Leaf 1-2-route-policy-From-Core-5] if-match community 11
[Leaf 1-2-route-policy-From-Core-5] quit
# 引入直连路由并引用路由策略From-Dircet过滤引入的路由,即为引入的直连路由添加团体属性1:5002。
[Leaf 1-2] bgp 5002
[Leaf 1-2-bgp-default] address-family ipv4 unicast
[Leaf 1-2-bgp-default-ipv4] import-route direct route-policy From-Dircet
# 从对等体组Core接收路由时应用From-Core路由策略,即接收Spine发布的业务网段路由和同组Leaf设备发布的主机路由。
[Leaf 1-2-bgp-default-ipv4] peer Core route-policy From-Core import
[Leaf 1-2-bgp-default-ipv4] quit
[Leaf 1-2-bgp-default] quit
(3) 配置Leaf 2-1和Leaf 2-2
Leaf 2-1和Leaf 2-2与Leaf 1-1和Leaf 1-2的配置类似,具体配置略。
(4) 配置Spine 1
# 启动BGP实例default,指定该BGP实例的本地AS号为805,并进入BGP实例视图。
<Spine 1> system-view
[Spine 1] bgp 805
# 配置全局Router ID为100.100.100.100。
[Spine 1-bgp-default] router-id 100.100.100.100
# 配置允许比较来自不同AS路由的MED属性值。
[Spine 1-bgp-default] compare-different-as-med
# 配置设备在重启后延迟300秒发布路由更新消息。
[Spine 1-bgp-default] bgp update-delay on-startup 300
# 创建EBGP对等体组LEAF25G。
[Spine 1-bgp-default] group LEAF25G external
# 配置向对等体组LEAF25G发布同一路由的时间间隔为0。
[Spine 1-bgp-default] peer LEAF25G route-update-interval 0
# 将Leaf设备添加为对等体组LEAF25G中的对等体。
[Spine 1-bgp-default] peer 9.179.56.1 as-number 5001
[Spine 1-bgp-default] peer 9.179.56.1 group LEAF25G
[Spine 1-bgp-default] peer 9.179.56.3 as-number 5002
[Spine 1-bgp-default] peer 9.179.56.3 group LEAF25G
[Spine 1-bgp-default] peer 9.179.56.5 as-number 5003
[Spine 1-bgp-default] peer 9.179.56.5 group LEAF25G
[Spine 1-bgp-default] peer 9.179.56.7 as-number 5004
[Spine 1-bgp-default] peer 9.179.56.7 group LEAF25G
# 进入BGP IPv4单播地址族视图。
[Spine 1-bgp-default] address-family ipv4 unicast
# 配置进行BGP负载分担的路由条数为32。
[Spine 1-bgp-default-ipv4] balance 32
# 配置内容不同但长度相同的AS_PATH属性的路由能够形成BGP负载分担。进行此配置后,即使同一组Leaf中的两台设备属于不同的AS,两台设备发布的主机路由之间也能形成等价路由。
[Spine 1-bgp-default-ipv4] balance as-path-relax
# 配置BGP路由的优先级,EBGP路由的优先级为10,IBGP路由的优先级为100,本地产生的BGP路由的优先级为100。
[Spine 1-bgp-default-ipv4] preference 10 100 100
# 允许本地路由器与对等体组LEAF25G交换路由信息。
[Spine 1-bgp-default-ipv4] peer LEAF25G enable
[Spine 1-bgp-default-ipv4] quit
[Spine 1-bgp-default] quit
(5) 配置Spine 2、Spine 3、Spine 4
Spine 2、Spine 3、Spine 4的配置与Spine 1类似,具体配置略。
(1) 配置Leaf 1-1
# 配置队列5和队列6最多可使用的共享区域的大小为100%。队列5为RDMA应用报文队列,队列6为CNP报文所在队列。
[Leaf 1-1] buffer egress cell queue 5 shared ratio 100
[Leaf 1-1] buffer egress cell queue 6 shared ratio 100
[Leaf 1-1] buffer apply
# 创建WRED表QOS-EGRESS-100G-PORT:在WRED表视图配置队列5平均长度的下限为1000,平均长度的上限为2000,丢弃概率为20%;配置队列0、1、2、3、4、6平均长度的下限为3000,平均长度的上限为15000,丢弃概率为20%;配置队列7平均长度的下限为37999,平均长度的上限为38000,丢弃概率为20%。配置队列5计算平均队列长度的指数为0。为队列5和队列6开启ECN功能。
[Leaf 1-1] qos wred queue table QOS-EGRESS-100G-PORT
[Leaf 1-1-wred-table-QOS-EGRESS-100G-PORT] queue 0 low-limit 3000 high-limit 15000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-100G-PORT] queue 1 low-limit 3000 high-limit 15000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-100G-PORT] queue 2 low-limit 3000 high-limit 15000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-100G-PORT] queue 3 low-limit 3000 high-limit 15000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-100G-PORT] queue 4 low-limit 3000 high-limit 15000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-100G-PORT] queue 5 low-limit 1000 high-limit 2000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-100G-PORT] queue 6 low-limit 3000 high-limit 15000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-100G-PORT] queue 7 low-limit 37999 high-limit 38000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-100G-PORT] queue 5 weighting-constant 0
[Leaf 1-1-wred-table-QOS-EGRESS-100G-PORT] queue 5 ecn
[Leaf 1-1-wred-table-QOS-EGRESS-100G-PORT] queue 6 ecn
[Leaf 1-1-wred-table-QOS-EGRESS-100G-PORT] quit
对于S6805、S6825、S6850、S9850、S9820系列交换机Release 6635及以上版本和S9825系列、S9855系列交换机,支持在接口视图配置WRED的各种参数,并开启WRED功能(qos wred queue命令)。端口WRED方式可以只配置RoCE队列,不同接口可以配置不同的参数,使用更为灵活。对于支持该功能的产品和版本,推荐采用端口WRED方式。
# 创建WRED表QOS-EGRESS-25G-PORT:在WRED表视图配置队列5平均长度的下限为400,平均长度的上限为1625,丢弃概率为20%;配置队列0、1、2、3、4、6平均长度的下限为2500,平均长度的上限为10000,丢弃概率为20%;配置队列7平均长度的下限为37999,平均长度的上限为38000,丢弃概率为20%。配置队列5计算平均队列长度的指数为0。为队列5和队列6开启ECN功能。
[Leaf 1-1] qos wred queue table QOS-EGRESS-25G-PORT
[Leaf 1-1-wred-table-QOS-EGRESS-25G-PORT] queue 0 low-limit 2500 high-limit 10000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-25G-PORT] queue 1 low-limit 2500 high-limit 10000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-25G-PORT] queue 2 low-limit 2500 high-limit 10000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-25G-PORT] queue 3 low-limit 2500 high-limit 10000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-25G-PORT] queue 4 low-limit 2500 high-limit 10000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-25G-PORT] queue 5 low-limit 400 high-limit 1625 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-25G-PORT] queue 6 low-limit 2500 high-limit 10000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-25G-PORT] queue 7 low-limit 37999 high-limit 38000 discard-probability 20
[Leaf 1-1-wred-table-QOS-EGRESS-25G-PORT] queue 5 weighting-constant 0
[Leaf 1-1-wred-table-QOS-EGRESS-25G-PORT] queue 5 ecn
[Leaf 1-1-wred-table-QOS-EGRESS-25G-PORT] queue 6 ecn
[Leaf 1-1-wred-table-QOS-EGRESS-25G-PORT] quit
# 在接口HundredGigE1/0/25~HundredGigE1/0/28上应用WRED表QOS-EGRESS-100G-PORT。开启接口的WFQ队列,并按照每次轮询可发送的报文的字节数进行计算,配置队列5具有较高调度权重60,队列6、7采用严格优先级调度。对队列6的报文进行流量整形。正常流速为50000000kbps,突发流量为16000000bytes。
[Leaf 1-1] interface range hundredgige 1/0/25 to hundredgige 1/0/28
[Leaf 1-1-if-range] qos wred apply QOS-EGRESS-100G-PORT
[Leaf 1-1-if-range] qos wfq byte-count
[Leaf 1-1-if-range] qos wfq ef group 1 byte-count 60
[Leaf 1-1-if-range] qos wfq cs6 group sp
[Leaf 1-1-if-range] qos wfq cs7 group sp
[Leaf 1-1-if-range] qos gts queue 6 cir 50000000 cbs 16000000
[Leaf 1-1-if-range] quit
# 在接口Twenty-FiveGigE1/0/1~Twenty-FiveGigE1/0/2上应用WRED表QOS-EGRESS-25G-PORT。开启接口的WFQ队列,并按照每次轮询可发送的报文的字节数进行计算,配置队列5具有较高调度权重60,队列6、7采用严格优先级调度。对队列6的报文进行流量整形。正常流速为12500000kbps,突发流量为16000000bytes。
[Leaf 1-1] interface range twenty-fivegige 1/0/1 to twenty-fivegige 1/0/2
[Leaf 1-1-if-range] qos wred apply QOS-EGRESS-25G-PORT
[Leaf 1-1-if-range] qos wfq byte-count
[Leaf 1-1-if-range] qos wfq ef group 1 byte-count 60
[Leaf 1-1-if-range] qos wfq cs6 group sp
[Leaf 1-1-if-range] qos wfq cs7 group sp
[Leaf 1-1-if-range] qos gts queue 6 cir 12500000 cbs 16000000
[Leaf 1-1-if-range] quit
(2) 配置Leaf 1-2、Leaf 2-1、Leaf 2-2
Leaf 1-2、Leaf 2-1、Leaf 2-2和Leaf 1-1的配置相同,具体配置略。
(3) 配置Spine 1
# 配置队列5和队列6最多可使用的共享区域的大小为100%。
[Spine 1] buffer egress cell queue 5 shared ratio 100
[Spine 1] buffer egress cell queue 6 shared ratio 100
[Spine 1] buffer apply
# 创建WRED表QOS-EGRESS-100G-PORT:在WRED表视图配置队列5平均长度的下限为1000,平均长度的上限为2000,丢弃概率为20%;配置队列0、1、2、3、4、6平均长度的下限为3500,平均长度的上限为20000,丢弃概率为20%;配置队列7平均长度的下限为37999,平均长度的上限为38000,丢弃概率为20%。配置队列5计算平均队列长度的指数为0。为队列5和队列6开启ECN功能。
[Spine 1] qos wred queue table QOS-EGRESS-100G-PORT
[Spine 1-wred-table-QOS-EGRESS-100G-PORT] queue 0 low-limit 3500 high-limit 20000 discard-probability 20
[Spine 1-wred-table-QOS-EGRESS-100G-PORT] queue 1 low-limit 3500 high-limit 20000 discard-probability 20
[Spine 1-wred-table-QOS-EGRESS-100G-PORT] queue 2 low-limit 3500 high-limit 20000 discard-probability 20
[Spine 1-wred-table-QOS-EGRESS-100G-PORT] queue 3 low-limit 3500 high-limit 20000 discard-probability 20
[Spine 1-wred-table-QOS-EGRESS-100G-PORT] queue 4 low-limit 3500 high-limit 20000 discard-probability 20
[Spine 1-wred-table-QOS-EGRESS-100G-PORT] queue 5 low-limit 1000 high-limit 2000 discard-probability 20
[Spine 1-wred-table-QOS-EGRESS-100G-PORT] queue 6 low-limit 3500 high-limit 20000 discard-probability 20
[Spine 1-wred-table-QOS-EGRESS-100G-PORT] queue 7 low-limit 37999 high-limit 38000 discard-probability 20
[Spine 1-wred-table-QOS-EGRESS-100G-PORT] queue 5 weighting-constant 0
[Spine 1-wred-table-QOS-EGRESS-100G-PORT] queue 5 ecn
[Spine 1-wred-table-QOS-EGRESS-100G-PORT] queue 6 ecn
[Spine 1-wred-table-QOS-EGRESS-100G-PORT] quit
对于S6805、S6825、S6850、S9850、S9820系列交换机Release 6635及以上版本和S9825系列、S9855系列交换机,支持在接口视图配置WRED的各种参数,并开启WRED功能(qos wred queue命令)。端口WRED方式可以只配置RoCE队列,不同接口可以配置不同的参数,使用更为灵活。对于支持该功能的产品和版本,推荐采用端口WRED方式。
# 在接口HundredGigE1/1/1~HundredGigE1/1/4上应用WRED表QOS-EGRESS-100G-PORT。开启接口的WFQ队列,并按照每次轮询可发送的报文字节数进行计算。配置队列5具有较高调度权重60,队列6、7采用严格优先级调度。对队列6的报文进行流量整形。正常流速为50000000kbps,突发流量为16000000bytes。
[Spine 1] interface range hundredgige 1/1/1 to hundredgige 1/1/4
[Spine 1-if-range] qos wred apply QOS-EGRESS-100G-PORT
[Spine 1-if-range] qos wfq byte-count
[Spine 1-if-range] qos wfq ef group 1 byte-count 60
[Spine 1-if-range] qos wfq cs6 group sp
[Spine 1-if-range] qos wfq cs7 group sp
[Spine 1-if-range] qos gts queue 6 cir 50000000 cbs 16000000
[Spine 1-if-range] quit
(4) 配置Spine 2、Spine 3、Spine 4
Spine 2、Spine 3、Spine 4的配置与Spine 1相同,具体配置略。
(1) 配置Leaf 1-1
# 配置Headroom最大可用的cell资源为9928(Headroom最大可用资源按照设备所有接口配置的headroom总和计算,如8个100G口(每个100G口Headroom门限为491),48个25G口(每个25G口Headroom门限为125),则应配置为491*8+125*48=9928)。
[Leaf 1-1] priority-flow-control poolID 0 headroom 9928
# 配置PFC死锁检测周期为10,精度为high。
[Leaf 1-1] priority-flow-control deadlock cos 5 interval 10
[Leaf 1-1] priority-flow-control deadlock precision high
# 在接口Twenty-FiveGigE1/0/1、Twenty-FiveGigE1/0/2、HundredGigE1/0/25、HundredGigE1/0/26、HundredGigE1/0/27、HundredGigE1/0/28上配置接口信任报文自带的DSCP优先级,开启接口的PFC功能,并对802.1p优先级5开启PFC功能。开启接口的PFC死锁检测功能。配置接口物理连接up状态抑制时间为2秒。
[Leaf 1-1] interface range twenty-fivegige 1/0/1 to twenty-fivegige 1/0/2 hundredgige 1/0/25 to hundredgige 1/0/28
[Leaf 1-1-if-range] qos trust dscp
[Leaf 1-1-if-range] priority-flow-control enable
[Leaf 1-1-if-range] priority-flow-control no-drop dot1p 5
[Leaf 1-1-if-range] priority-flow-control deadlock enable
[Leaf 1-1-if-range] link-delay up 2
[Leaf 1-1-if-range] quit
# 配置接口HundredGigE1/0/25、HundredGigE1/0/26、HundredGigE1/0/27、HundredGigE1/0/28的PFC门限值。
[Leaf 1-1] interface range hundredgige 1/0/25 to hundredgige 1/0/28
[Leaf 1-1-if-range] priority-flow-control dot1p 5 headroom 491
[Leaf 1-1-if-range] priority-flow-control dot1p 5 reserved-buffer 17
[Leaf 1-1-if-range] priority-flow-control dot1p 5 ingress-buffer dynamic 5
[Leaf 1-1-if-range] priority-flow-control dot1p 5 ingress-threshold-offset 12
[Leaf 1-1-if-range] quit
# 配置接口Twenty-FiveGigE1/0/1、Twenty-FiveGigE1/0/2的PFC门限值。
[Leaf 1-1] interface range twenty-fivegige 1/0/1 to twenty-fivegige 1/0/2
[Leaf 1-1-if-range] priority-flow-control dot1p 5 headroom 125
[Leaf 1-1-if-range] priority-flow-control dot1p 5 reserved-buffer 17
[Leaf 1-1-if-range] priority-flow-control dot1p 5 ingress-buffer dynamic 5
[Leaf 1-1-if-range] priority-flow-control dot1p 5 ingress-threshold-offset 12
[Leaf 1-1-if-range] quit
对于S6805、S6825、S6850、S9850、S9820系列交换机Release 6616及以上版本,开启指定802.1p优先级的PFC功能后,设备自动按照接口速率设置PFC门限,无需手动设置。
(2) 配置Leaf 1-2、Leaf 2-1和Leaf 2-2
Leaf 1-2、Leaf 2-1和Leaf 2-2与Leaf 1-1配置相同,具体步骤略。
(3) 配置Spine 1
# 配置Headroom最大可用的cell资源为19640(Headroom最大可用资源按照设备所有接口配置的headroom总和计算,本文以19640为例)。
[Spine 1] priority-flow-control poolID 0 headroom 19640
# 配置PFC死锁检测周期为10,精度为high。
[Spine 1] priority-flow-control deadlock cos 5 interval 10
[Spine 1] priority-flow-control deadlock precision high
# 在接口HundredGigE1/1/1、HundredGigE1/1/2、HundredGigE1/1/3、HundredGigE1/1/4上配置接口信任报文自带的DSCP优先级,开启接口的PFC功能,并对802.1p优先级5开启PFC功能。开启接口的PFC死锁检测功能。配置接口物理连接up状态抑制时间为2秒。
[Spine 1] interface range hundredgige 1/1/1 to hundredgige 1/1/4
[Spine 1-if-range] qos trust dscp
[Spine 1-if-range] priority-flow-control enable
[Spine 1-if-range] priority-flow-control no-drop dot1p 5
[Spine 1-if-range] priority-flow-control deadlock enable
[Spine 1-if-range] link-delay up 2
# 配置接口HundredGigE1/1/1、HundredGigE1/1/2、HundredGigE1/1/3、HundredGigE1/1/4的PFC门限值。
[Spine 1-if-range] priority-flow-control dot1p 5 headroom 491
[Spine 1-if-range] priority-flow-control dot1p 5 reserved-buffer 20
[Spine 1-if-range] priority-flow-control dot1p 5 ingress-buffer dynamic 5
[Spine 1-if-range] priority-flow-control dot1p 5 ingress-threshold-offset 12
[Spine 1-if-range] quit
对于S6805、S6825、S6850、S9850、S9820系列交换机Release 6616及以上版本,开启指定802.1p优先级的PFC功能后,设备自动按照接口速率设置PFC门限,无需手动设置。
(4) 配置Spine 2、Spine 3、Spine 4
Spine 2、Spine 3、Spine 4的配置与Spine 1相同,具体配置略。
4台Spine设备、5组Leaf设备(共10台成员设备)连接67台服务器进行下面验证。
验证方式一:
· 验证条件:同组Leaf设备连接的服务器两两互发流量,报文长度为512字节。
· 验证结果:流量速率如图6-2;流量没有丢包,速率稳定;ECN全程生效。
图6-2 同组Leaf设备连接的服务器两两互发流量
验证方式二:
· 验证条件:一组Leaf设备连接的服务器和同组Leaf设备连接的服务器以及跨Leaf设备连接的服务器两两互发流量,报文长度为256字节。
· 验证结果:流量速率如图6-3;流量没有丢包,速率稳定;ECN全程生效,有多次触发PFC,总体还是ECN优先生效。
图6-3 一组Leaf设备连接的服务器和同组Leaf设备连接的服务器以及跨Leaf设备连接的服务器两两互发流量
综上所述,RDMA流量全程无丢包;流量速率波动正常;ECN优于PFC生效控制流量速率。