2016-06-21 215 views
1

我有几台运行在Openstack上的虚拟机。我有一台数据网络网关分配到MTU = 1500的交换机上,VM必须运行。MTU 1500:1472字节后的分片数据包

另外在Openstack中,我设置了网络的默认MTU = 1500。

我试图从1500到分组大小的虚拟机到网关(或在同一网络上的任何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个字节正在利用?

回答

4

1500字节MTU适用于网络层的标准以太网。换句话说:1500字节可以在以太网帧中传输而不会被分割。但是,当然,以太网上的其他协议当然会切入最大有效载荷。

在你的情况下(ping的情况下)附加协议是IP和ICMP。它们都有长度分别为20字节和8字节的标题。

这意味着您可以传输最多

1500 bytes (Ethernet mtu) - 20 byte (IP header) - 8 byte (ICMP header) 
= 1472 byte 

参见this question regarding MTU for UDP

0

Ping会添加28个字节的标题然后发送它。

所以如果你想发送-s 1500,实际大小是1500 + 28 = 1528字节。