【PFC】PFC测试指令
查看映射关系
mlnx_qos -i eth2 (mellonx)
设置用L3做流控
mlnx_qos -i eth2 --trust=dscp (mellonx)
修改dscp到priority 映射
dscp 30 映射到修改dscp到priority 6
# mlnx_qos -i eth2 --dscp2prio set,30,6 (mellonx)
使能PFC
# mlnx_qos -i <interface> --pfc 0,0,0,1,0,0,0,0
修改tc和prio的映射(默认除了tc0对应prio1,tc对应prio0,其他的都是对应的,如tc2-prio2,tc3-prio3,tc4-prio4……)
mlnx_qos -i ib3b-0 -p 0,1,2,3,4,5,6,7
端口各优先级的收发计数
#测量该接口发送和接收的 Xon 和 Xoff(传输开启和关闭)帧的数量:
# watch -n 1 "ethtool -S eth1 | grep prio"
(intel
请注意,Rx 计数器全为 0。当适配器通过交换机连接时,rx_priority_* 计数器可能为 0,表明适配器尚未从交换机收到任何暂停帧。根据网络中的压力水平,如果交换机有足够的缓冲来跟上主机需求,这是可以接受的。但是,对于高压力流量(例如更大规模的 HPC 应用程序),交换机通常会向主机发送暂停帧。通常,预计会同时看到 tx 和 rx_priority 计数器。
请注意,某些 Tx 计数器具有相同的值。在 800 系列 QoS 实施中,如果为traffic class中的任何priority启用 PFC,则该traffic class中的所有priority都会获得暂停帧。这意味着同一 TC 中所有priority的计数器都会一致递增,而不管导致 PFC 触发的特定单个priority如何。如果所有priority都映射到同一个 TC,它们都会一致增加。)
查看GID
show_gids (mellonx;intel自己也写同样的脚本,脚本内容见末尾)
show_gids mlx5_5 (mellonx)查看设备可用端口, gid_index, rmda版本
查看端口丢弃
show_drop (mellonx;intel自己也写同样的脚本,脚本内容见末尾)
弃包统计
ethtool -S enp175s0f0 | grep drop
watch -n 1 “ethtool -S enp175s0f0 | grep drop” #1 s 刷新一次
各个优先级收发包统计
watch -n 1 "ethtool -S ib3b-0 | grep prio"
查看device
ibdev2netdev (mellonx;intel自己也写同样的脚本,脚本内容见末尾)
ibdev2netdev –v (mellonx)
验证 InfiniBand 链接是否已启动
hca_self_test.ofed (mellonx)
Mellanox OFED 安装的信息
/etc/infiniband/info
看自动加载的模块列表
/etc/infiniband/openib.conf
检查Mellanox网卡是否安装和版本
[root@rdma61 ~]# lspci | grep Mellanox
查看系统里所有的网卡和工作状态:
[root@rdma63 tcpdump]# ip a
[root@rdma63 tcpdump]# ibv_devices
device node GUID
------ ----------------
mlx5_1 98039b03009a4296
mlx5_0 98039b03009a2b3a
[root@rdma63 tcpdump]# ibv_devinfo
或
[root@rdma63 tcpdump]# ibv_devinfo mlx5_0
重新启动RDMA驱动
/etc/init.d/openibd restart
如果驱动不正常,虽然service network restart 可以启动Ethernet端口,但实际rdma驱动并未成功加载。
执行/etc/init.d/openibd restart 可以看到很多的错误。(还有记得把ibacm启动, service ibacm start)
The ibacm service is responsible for resolving names and addresses to InfiniBand path information and caching such data.
It should execute with administrative privileges.
The ibacm implements a client interface over TCP sockets, which is abstracted by the librdmacm library.
mellonx信息搜集
/usr/sbin/sysinfo-snapshot.py
//****************************************************交换机****************************************
S6820《H3C S6820 系列以太网交换机 二层技术-以太网交换配置指导》P11:PFC 优先级高于FC,设置了PFC 则忽略FC
2.配置H3C交换机
a) 配置优先级信任模式为DSCP:
例如:
[H3C]sys
[H3C]interface HundredGigE1/0/2
[H3C-HundredGigE1/0/2] qos trust dscp
验证:
[H3C-HundredGigE1/0/2] display qos trust int HundredGigE1/0/2
*配置信任模式为DSCP,交换机才会使用 报文自带的DSCP做映射。
设置信任模式为DSCP,则进入交换机的报文优先级映射会涉及到3个表:
进-->出 映射,
dscp-dot1p #入端口报文为dscp会被交换机映射到lp队列
dscp-dp #入端口报文为dscp会被交换机映射到dp队列
dscp-dscp #入端口报文的dscp会被交换机改为dscp转发
(优先级可分为两类:报文携带优先级和设备调度优先级。
设备调度优先级是指报文在设备内转发时所使用的优先级,只对当前设备自身有效。
设备调度优先 级包括以下几种:
• 本地优先级(LP):设备为报文分配的一种具有本地意义的优先级,每个本地优先级对应一 个队列,本地优先级值越大的报文,进入的队列优先级越高,从而能够获得优先的调度。
• 丢弃优先级(DP):在进行报文丢弃时参考的参数,丢弃优先级值越大的报文越被优先丢弃。)
display qos map-table dscp-dot1p
b) 配置PFC功能的开启模式
例如:
[H3C]sys
[H3C]interface HundredGigE1/0/6
[H3C-HundredGigE1/0/6] priority-flow-control enable
6.显示接口的PFC信息
display priority-flow-control interface 显示全部
display priority-flow-control interface [ interface-type [ interface-number ] ] 显示某个
关闭PFC:undo priority-flow-control
显示端口是否开启FC:----不是PFC,设置了PFC就忽略FC
display interface [接口]
如: display interface HundredGigE1/0/2
缩写:dis int HundredGigE1/0/4
(1、端口入方向报文计数错误字段解释
input errors:各种输入错误的总数。
runts:表示接收到的超小帧个数。超小帧即接收到的报文小于 64 字节,且包括有效的 CRC 字段,报文格式正确。
giants:是超过端口设置的 Maximum Frame Length 的报文个数。 CRC:表示接收到的 CRC 校验错误报文个数。
frame:端口接收时出错的报文。
2、端口出方向报文计数错误字段解释
output errors:各种输出错误的总数。
aborts:表示发送失败的报文总数。
deferred:表示延迟报文的总数。报文延迟是指因延迟过长的周期而导致发送失败的报文,而这些报文由于发送媒质繁忙而等待了超过 2 倍的最大报文发送时间。
collisions:表示冲突帧总数,即在发送过程中发生冲突的报文。 l
ate collisions:表示延迟冲突帧,即发送过程中发生延迟冲突超过 512bit 时间的帧。
)
H3C 二层命令参考:http://www.h3c.com/cn/d_202104/1397802_30005_0.htm
****************************
显示和维护(H3C交换机)
****************************
1.显示指定优先级映射表配置情况
display qos map-table dot1p-dp | dot1p-exp | dot1p-lp | dscp-dot1p | dscp-dp | dscp-dscp | exp-dot1p | exp-dp ]
如:display qos map-table dscp-dscp
2. 显示接口优先级信任模式信息(sys视图)
display qos trust interface [ interface-type interface-number ]
如:
display qos trust interface HundredGigE1/0/1
3. 显示端口简单信息
display interface brief
4. 显示端口在该间隔时间内统计的报文信息
display interface
5. 显示Qos trust设置
display qos trust int
6. 显示接口的PFC信息
display priority-flow-control interface 显示全部
display priority-flow-control interface [ interface-type [ interface-number ] ] 显示某个
显示收发和暂停统计
-显示全部端口
-display interface
-显示某个端口
-display interface HundredGigE1/0/2
查看拥塞drop包(弃包/丢包)
display packet-drop
display packet-drop interface HundredGigE1/0/4
《接口管理命令参考》http://www.h3c.com/cn/d_201906/1206016_30005_0.htm
//===============================================================================测试================================================================
Tos=============
--tos=<tos value> Set <tos_value> to RDMA-CM QPs. available only with -R flag. values 0-256 (default off)
ibdump -d mlx5_0 -i 1 -w sniffer.acp #抓包
ib_send_bw -d mlx5_0 --rdma_cm #服务端
ib_send_bw 192.169.31.54 --rdma_cm --tos=12 –R #客户端1100
-
-
- 配置主机
-
在51、53、54主机上执行:
Prio1启用PFC,报文映射到prio1 相当于启用PFC
- 设置PFC在L3层
mlnx_qos -i ib3b-0 --trust=dscp #注意mlnx_qos 设置是临时的
- 在prio 1启用PFC
mlnx_qos -i ib3b-0 --pfc 0,1,0,0,0,0,0,0
PFC configuration: |
相关知识:
mlnx_qos -i ib3b-0 查看dscp-prio的映射可知与prio1对应的dscp是dscp:15,14,13,12,11,10,09,08,
dscp2prio mapping: |
我们选择8,dscp是Tos的高6bit,dscp=8对应的Tos是100000、100001、100010、100011,即32,33,34,35.在程序中,创建QP时,设置attr.ah_attr.grh.traffic_class = 32
(测试发现,不论traffic_class设置多少,都只能修改报文Tos域的高6bit,后2bit与ECN设置有关,见附录)
-
-
- 配置H3C交换机
-
(http://www.h3c.com/cn/d_202104/1397802_30005_0.htm)
交换机开启L3 PFC
例如如果我们两台机器连接交换机的端口是: E1/0/2、E1/0/4、E1/0/6,E1/0/2、E1/0/4在我们测试的链路上。
所以设置这两个端口的trust type为 dscp,方法如下:
- 配置优先级信任模式为DSCP
例如:
[H3C]sys
[H3C]interface HundredGigE1/0/2
[H3C-HundredGigE1/0/2] qos trust dscp
验证:[H3C-HundredGigE1/0/2] display qos trust int HundredGigE1/0/2
*配置信任模式为DSCP,交换机才会使用 报文自带的DSCP做映射。 |
- 使能PFC功能,并配置使用PFC功能的802.1p优先级
交换机使用802.1p优先级做PFC配置流控,所以我们要做计算一下映射关系:
我们在prio1 上做PFC,Prio 1 对应的是 dscp=8
Dsp=8 和dot1p的对应可以用命令:display qos map-table dscp-dot1p 查出来
Dsp=8 ====> dot1p = 1.
所以只需开启配置交换机端口的dot1p 1等级使用PFC即可。
示例:
# 在以太网接口HundredGigE1/0/2上开启PFC功能,并开启802.1p优先级1的PFC功能:
[H3C]sys
[H3C]interface HundredGigE1/0/2
[H3C-HundredGigE1/0/2] priority-flow-control enable
[H3C-HundredGigE1/0/2] priority-flow-control no-drop dot1p 1
一次配多个:
[H3C-HundredGigE1/0/2] priority-flow-control no-drop dot1p 1,2,3
验证:display priority-flow-control interface HundredGigE1/0/2