tgc*_*oud 3 networking virtual-machine mtu openstack
我在Openstack上运行了几个虚拟机.我有一个数据网络网关分配到MTU = 1500的交换机,其中VM必须运行.
同样在Openstack中,我设置了网络的默认MTU = 1500.
我试图通过1500个数据包从VM ping到网关(或同一网络上的任何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
Run Code Online (Sandbox Code Playgroud)
相反,如果我发送具有较小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
Run Code Online (Sandbox Code Playgroud)
我可以看到28个字节的差异,我不明白,这个28字节在哪里使用?
1500字节MTU适用于网络层的标准以太网.换句话说:1500字节可以在以太网帧中传输而不会被分段.但是,以太网上的其他协议当然会切入最大有效载荷.
在您的情况下(ping的情况),附加协议是IP和ICMP.它们都有分别长度为20字节和8字节的标头.
这意味着您最多可以传输
1500 bytes (Ethernet mtu) - 20 byte (IP header) - 8 byte (ICMP header)
= 1472 byte
Run Code Online (Sandbox Code Playgroud)
另请参阅有关UDP的MTU的此问题.