【RDMA】基于RoCE的应用程序的MTU注意事项|探测网络中的MTU设置

本文详述了基于RoCE的应用程序在使用InfiniBand协议时的MTU注意事项,强调RoCE MTU小于以太网MTU,并介绍了如何探测网络中的MTU设置。建议大IO应用增大MTU,但要注意所有网络路径上的设备应同步调整。同时,通过实例展示了当MTU设置不当时可能导致的数据包丢弃和通信问题。
摘要由CSDN通过智能技术生成

目录

基于RoCE的应用程序的MTU注意事项

探测网络中的MTU设置

概要

原文

MTU测试结果

DOC:

CentOS安装tshark抓包工具


基于RoCE的应用程序的MTU注意事项

原文:https://support.mellanox.com/s/article/MLNX2-117-1682kn

InfiniBand协议最大传输单元(MTU)定义了几个固定大小的MTU:256、512、1024、2048或4096字节。

使用在以太网上运行的RDMA的基于RoCE的应用程序应考虑到RoCE MTU小于以太网MTU(Ethernet MTU)。 (通常默认值为1500)。

驱动程序从上面的列表中选择比Ethernet MTU 小的最大的那个值作为最大的“active” MTU。(并考虑了RoCE传输头和CRC字段)。

例如:

对于默认的 Ethernet MTU (1500字节),RoCE将使用1024(作为active_mtu)

而对于Ethernet MTU = 4200,RoCE将使用4096作为“active MTU”。

可以使用“ ibv_devinfo”检查“ active_mtu”值。

通信两端之间用RoCE协议交换“ active_mtu”并进行协商。将使用最小的MTU。

(RoCE protocol exchanges "active_mtu" values and negotiates it between both ends. The minimum MTU will be used.)

检查端口MTU:

[root@rdma59 ~]#  ifconfig ens2f0

ens2f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 172.17.31.59  netmask 255.255.255.0  broadcast 172.17.31.255

        inet6 fe80::b696:91ff:fea5:9a70  prefixlen 64  scopeid 0x20<link>

        ether b4:96:91:a5:9a:70  txqueuelen 1000  (Ethernet)

        RX packets 6508  bytes 954004 (931.6 KiB)

        RX errors 0  dropped 477  overruns 0  frame 0

        TX packets 4736  bytes 361557 (353.0 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

检查InfiniBand MTU:

ibv_devinfo 显示所有RDMA网口的简略信息

ibv_devinfo -v显示所有RDMA网口的所有信息

ibv_devinfo -d mlx5_0显示所有mlx5_0的简略信息

ibv_devinfo  -v -d mlx5_0显示所有mlx5_0的所有信息

更多:ibv_devinfo  –h

[root@rdma63 ~]# ibv_devinfo -d mlx5_0

hca_id: mlx5_0

        transport:                      InfiniBand (0)

        fw_ver:                         16.29.1016

        node_guid:                      9803:9b03:009a:2b3a

        sys_image_guid:                 9803:9b03:009a:2b3a

        vendor_id:                      0x02c9

        vendor_part_id:                 4119

        hw_ver:                         0x0

        board_id:                       MT_0000000010

        phys_port_cnt:                  1

        Device ports:

                port:   1

                        state:                  PORT_ACTIVE (4)

                        max_mtu:                4096 (5)

                        active_mtu:             1024 (3)

                        sm_lid:                 0

                        port_lid:               0

                        port_lmc:               0x00

                        link_layer:             Ethernet

对于使用大IO的应用程序,建议扩大MTU

注意:如果您更改端口MTU,则所有链路上的网络元素(交换机和路由器)中的MTU也应该一同修改。

一旦你修改了端口(port)的MTU后,InfiniBand的 active MTU将自动调整为适合该MTU的最大尺寸。

例如,一旦将端口MTU设置为4200,active_mtu将更改为4096。

但是,最好不要将端口MTU配置为9000,因为这会浪费内存。

建议的MTU值如下:

想让active MTU为4096-将端口MTU配置为4200

想让active MTU为2048-将端口MTU配置为2200

# ifconfig eth2 mtu 4200
# ibv_devinfo -d mlx4_0
hca_id: mlx4_0
transport: InfiniBand (0)
fw_ver: 2.31.5050
node_guid: f452:1403:0017:1b80
sys_image_guid: f452:1403:0017:1b83
vendor_id: 0x02c9
vendor_part_id: 4103
hw_ver: 0x0
board_id: MT_1090111019
phys_port_cnt: 2
port: 1
state: PORT_ACTIVE (4)
max_mtu: 4096 (5)
active_mtu: 4096 (5)
sm_lid: 0
port_lid: 0
port_lmc: 0x00
link_layer: Ethernet

port: 2
state: PORT_DOWN (1)
max_mtu: 4096 (5)
active_mtu: 4096 (5)
sm_lid: 0
port_lid: 0
port_lmc: 0x00
link_layer: InfiniBand

#

其他文章:

IP over Infiband MTU size in non homogeneous environments - IBM InfiniBand 

https://www.ibm.com/support/pages/ip-over-infiband-mtu-size-non-homogeneous-environments-ibm-infiniband

Maximum Transmit Unit (MTU) Configuration

https://www.supermicro.org.cn/wdl/driver/InfiniBand/VMWare/ESX_Server_5.X/Mellanox_IB_OFED_Driver_for_VMware_vSphere_User_Manual_Rev_1_8_0.pdf

探测网络中的MTU设置

概要

1、MTU(Maximum Transmission Unit) 大小指的是一个以太帧(Ethernet Frame)能携带的最大数据部分(payload)的大小, 当MTU值设置为9000 Bytes的时候也叫做巨型帧(Jumbo Frame)

2、一般情况下网卡的MTU大小是1500(最大可配置到9000),(增加)数据的传输效率,可以通过增加MTU只来实现,MTU的增加即每帧(Frame)传输的数据量就会更大。

3、网络中的所有节点必须同时增大MTU,网络中小MTU的节点遇到上家发来的大于MTU的Frame(且没有切分标记),则直接丢弃。

PMTUD方法:

tracepath -n 192.169.31.54

https://networkengineering.stackexchange.com/questions/13417/exactly-when-is-pmtud-performed-path-mtu-discovery

原文

原文:https://www.jianshu.com/p/ee9c32b18005

MTU(Maximum Transmission Unit) 大小指的是一个以太帧(Ethernet Frame)能携带的最大数据部分(payload)的大小, 当MTU值设置为9000 Bytes的时候也叫做巨型帧(Jumbo Frame):

以太帧(Ethernet Frame)
以太帧(Ethernet Frame)

802.3 Ethernet MTU

+-------------+------------+-----------------+---------+----------------+
| Dest MAC(6) | Src MAC(6) | Eth Type/Len(2) | Payload | CRC Trailer(4) |
+-------------+------------+-----------------+---------+----------------+

所以说, 当使用 Ethernet 介质时确定只能传最大 1518 字节的帧后, 减去 18 字节的 L2 头和尾, 留给 IP 层的就只有 1500 字节了.

一般情况下网卡的MTU大小是1500(最大可配置到9000),然后为了在高性能的网络环境下(增加)数据的传输效率,可以通过增加MTU只来实现,换句话说通过MTU的增加,每帧(Frame)传输的数据量就会更大。 这就好比用面包车运输对比用大货车运输的区别。

然而要实现大MTU需要网络里的每个设备都必须支持巨型帧大MTU,包括发送主机,目标主机以及网络中的路由器等。

本文主要是记录如何探测网络中的MTU设置以及错误配置MTU带来的影响。

为了探测两个不同实验室的机器之间的网络是否支持Jumbo Frame, 我从实验室A的Centos主机(client) 发送ping命令到实验室B的服务器(server)。

首先检查client的MTU配置:

[root@centos ~]# ifconfig eno16777736
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mt
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值