目录
基于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
Maximum Transmit Unit (MTU) Configuration
探测网络中的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://www.jianshu.com/p/ee9c32b18005
MTU(Maximum Transmission Unit) 大小指的是一个以太帧(Ethernet Frame)能携带的最大数据部分(payload)的大小, 当MTU值设置为9000 Bytes的时候也叫做巨型帧(Jumbo Frame):
![以太帧(Ethernet Frame)](https://i-blog.csdnimg.cn/blog_migrate/39535ee6e79c0c278a0ff5444a07d83e.png)
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