我在Openstack上运行了几个虚拟机。我有一个数据网络网关分配到MTU = 1500的交换机,其中VM必须运行。
同样在Openstack中,我设置了网络的默认MTU = 1500。
我正在尝试使用1500个数据包从VM切换到网关(或同一网络上的任何IP),它会对数据包进行解密。
localhost:~# ping -M do -s 1500 10.4.14.18
PING 10.4.14.18 (10.4.14.18) 1500(1528) bytes of data.
From 10.4.14.17 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 10.4.14.17 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 10.4.14.17 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 10.4.14.17 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 10.4.14.17 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 10.4.14.17 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 10.4.14.17 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 10.4.14.17 icmp_seq=1 Frag needed and DF set (mtu = 1500
相反,如果我发送的mtu(1472)较小的数据包可以正常工作,
localhost:~# ping -M do -s 1472 10.4.14.18
PING 10.4.14.18 (10.4.14.18) 1472(1500) bytes of data.
1480 bytes from 10.4.14.18: icmp_seq=1 ttl=64 time=0.965 ms
1480 bytes from 10.4.14.18: icmp_seq=2 ttl=64 time=0.515 ms
^C
--- 10.4.14.18 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1875ms
rtt min/avg/max/mdev = 0.515/0.740/0.965/0.225 ms
我可以看到28个字节的差异,我不明白,这28个字节的使用位置在哪里?
答案 0 :(得分:6)
1500字节MTU适用于网络层的标准以太网。换句话说:1500字节可以在以太网帧中传输而不会被分段。但是,以太网上的其他协议当然会切入最大有效载荷。
在您的情况下(ping的情况),附加协议是IP和ICMP。它们都有分别长度为20字节和8字节的标头。
这意味着您最多可以传输
1500 bytes (Ethernet mtu) - 20 byte (IP header) - 8 byte (ICMP header)
= 1472 byte
答案 1 :(得分:-1)
Ping将添加28个字节的标题,然后发送它。
因此,如果要发送-s 1500,实际大小为1500 + 28 = 1528字节。