近日在51CTO博客里发现篇好东东,偶然一试,发现还行,的确是解决MTU值问题的好帮手。
现已在思科的3640 11.1(20)AA2 
,2611 12.2(8r) [cmong 8r],
6509 12.2(17r)S4上测试过,都支持直接在一条PING命令上,指定源地址,包大小,不分段。之前,不知道有这个功能,老是要按ENTER,那个烦呀~~~~但这个命令在6509上是隐藏了,有好东东为什么要隐藏呢,不解。
 
 
ping 19.X.X.X size 1500 source 19.X.X.X df-bit
 
 
 
 
以下是转载的这篇文章
 
ping排错功能的强大不在话下,下面着重对PC机上win系统的ping过程和cisco路由器上的ping的过程的差异进行研究。
首先在PC上,带上-f参数,并指定源数据包大小,ping网关:
C:> ping 172.16.5.254 -l 1472 -f
Pinging 172.16.5.254 with 1472 bytes of data:
Reply from 172.16.5.254: bytes=1472 time=1ms TTL=255
Reply from 172.16.5.254: bytes=1472 time=1ms TTL=255
Reply from 172.16.5.254: bytes=1472 time=1ms TTL=255
Reply from 172.16.5.254: bytes=1472 time=1ms TTL=255
Ping statistics for 172.16.5.254:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 1ms, Maximum = 1ms, Average = 1ms
C:> ping 172.16.5.254 -l 1473 -f
Pinging 172.16.5.254 with 1473 bytes of data:
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Ping statistics for 172.16.5.254:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)
网卡的默认MTU是1500,通过设置DF位,我们测试的结果是-l的值1472,而1500-20-8=1472正好是1472(记得否, ICMP包是直接封装在IP包里的,8个byte的ICMP包头和20个byte的IP包头),由 此可以看出,在win xp/2k3环境下,ping进程对-l参数识别为数据净负荷,即,不包括IP包头部分和ICMP包头部分;

下面是在cisco路由器上的测试:
R6#sh int s1/1
Serial1/1 is up, line protocol is up 
  Hardware is M4T
  Internet address is 172.16.36.2/30
  MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, 
-----------out put omit---------------------
R6# ping 192.168.100.3 size 1500  df-bit 
Type escape sequence to abort.
Sending 5, 1500-byte ICMP Echos to 192.168.100.3, timeout is 2 seconds:
Packet sent with the DF bit set
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 40/47/68 ms
R6# ping 192.168.100.3 size 1501  df-bit 
Type escape sequence to abort.
Sending 5, 1501-byte ICMP Echos to 192.168.100.3, timeout is 2 seconds:
Packet sent with the DF bit set
.....
显然,cisco设备上的ping进程的-size参数表示的是MTU,包括了IP报头和ICMP包头。你发现了没?
ping x.x.x.x size x df 命令是解决由于网络MTU引起的网络故障的超必杀, 经过GRE隧道、PPPOE拨号、 MPLS ×××等多种网络环境,都会产生大包不通,表现为,某些网页打不开、无法下载大容量文件,都可以用这个命令来探测网络经过各种环境下的单包最大数据净负荷(最大三层信息),并通过修改MTU以实现网络的畅通无阻