在一个多种厂家网络设备的网络环境中,有可能设备的MTU不相同,这时就可能导致数据包丢弃,引起网络通信故障。如何避免这种故障的发生呢? MTU值导致的网络故障与PPPOE ADSL用户的{zj0}MTU值 MTU({zd0}传输单元)是网络设备传输信息包的{zd0}值,单位是字节,大部分网络设备的MTU都是1500。这个{zd0}传输单元和链路层协议有着密切的关系,EthernetII帧的结构为 DMAC+SMAC+Type+ Data+CRC,由于以太网传输电气方面的限制,每个以太网帧最小的大小为64B{zd0}不能超过1 518B,对于小于或者大于这个限制的以太网帧我们都可以视之为错误的数据帧,一般的以太网转发设备会丢弃这些数据帧。 在一个多种厂家网络设备的网络环境中,我们可以用改变默认MTU值的方法来解决丢包故障的发生。 设置 MTU 大小是一个需要反复试验的过程,由{zd0}值 1 500开始下降,直至问题解决。使用下列值之一或许能解决一些由MTU值引起的问题。 (1)1500—以太网信息包{zd0}值,也是默认值,是没有PPPoE和VPN 的网络连接的典型设置。是大部分路由器、网络适配器和交换机的默认设置。 (2)1492—PPPoE的{zj0}值。 (3)1472—使用ping的{zd0}值(大于此值的信息包会先被分解)。 (4)1468—DHCP的{zj0}值。 (5)1430—VPN 和 PPTP的{zj0}值。 (6)576—拨号连接到ISP的标准值。 检测网关的MTU 在本机打开DOS窗口,执行“ping -f -l 1472 192.168.0.1”命令,其中192.168.0.1是网关IP地址,1 472是数据包的长度,参数是“-l”(小写的L)。 如果能ping通,表示数据包不需要拆包,可以通过网关发送出去。 如果出现“Packet needs to be fragmented but DF set.”, 表示数据包需要拆开来发送。此时,减少数据包长度,再执行上面的ping命令。从1 400到1 472之间多试几次,就能找到合适的数据包长度了。把数据包长度加上数据包头28字节,就得到MTU的值。 如果检测到网关的MTU值是1 500,不需要修改。如果网关有防火墙ping不通,可以试试直接把MTU设为1 400。 修改网络设备MTU值 对于各种网络设备,{zj0}的MTU值通常都是默认值。有时,更改MTU值可提高设备工作性能,事情做起来很简单,但事实上,这样做往往会导致出现一些其他问题。 IP协议负责把包分成小分片以便信息包能顺利通过MTU较小的网络,为了处理分片,包头通知接收请求怎样去重新合并分片以及收到多少分片才能确定收到所有的分片。如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。所以把本机的MTU设成比网关的MTU小或相同,就可以减少丢包。 在一般的网络环境中{zh0}保持各个网络设备的MTU不变,除非有以下情况出现: (1)当连接不到ISP或者不能使用其他的因特网服务时,且他们的技术支持人员建议更改MTU值或当您使用VPN,遇到性能问题时可以考虑更改MTU。 (2)为了提高网络的某些性能,使用了可优化MTU值的应用程序,而这引起了连通性和其他性能方面的问题。一个信息包被发送到MTU值较小的设备时,将被分解为若干小块。理论上,在所有电脑、交换机、路由器及您能访问到的因特网的所有设备上的MTU值应该设置为同一大小。但是我们无法控制因特网上的MTU值,而在一个局域网中的{zj0}MTU值取决于硬件、软件、无线接口等等。在一种情形下修改MTU的大小可使设备很好地工作,但在其他方面却可能引起性能和连接性问题。 (3)当具有不同MTU值的设备相互通信时,信息包将会被分成多个以便能传给具有最小的MTU值的设备,这时往往引起网络故障,除非一些网络设备具有自动设置MTU的功能,这样可以使MTU对于各种应用综合性能{zy}化。否则一般需要我们手动设置网络设备的MTU以便使他们可以协调工作。 MTU值不规范导致问题 随着ADSL宽带费用和安装门槛的降低,越来越多的小企业选择ADSL 作为公司的网络出口方式。在使用过程中总出现一个奇怪的问题:拨号上网后,公司内部计算机经常出现打不开网页的问题,但奇怪的是,并不是所有页面都打不开,有很多站点还是可以正常访问的。经过反复调试及查找资料后,发现原来是MTU值不规范引起的。 ;本文来广西电脑技术专题站 对于PPPOE(ADSL)来说,要求用户端的MTU不能大于1492,否则用户无法浏览某些网站,因此必须对MTU的设定值进行调整。这点对于ADSL用户特别重要,很多不明不白的问题都有可能是因为MTU的设置不当造成的,遇到实际问题时应该引起足够的注意。{zh1}通过修改工作站的注册表,降低MTU值的方法来解决这个问题。 修改本机的MTU方法如下。 (1)运行regedit。 (2)浏览到HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\Services\ Tcpip\Parameters\Interfaces。 (3)Interfaces下有多个子项,每个子项对应一个网卡。按如下方法选择网卡: 1)确定本机用来连接Internet的网卡或拨号连接的IP地址,如192.168.1.2。 2)用鼠标单击Interfaces上的子项,查看键值列表中的IPAddress项。 3)如果IPAddress的键值与(1)中的IP地址相同,即192.168.1.2,则该子项就是要找的网卡。 4)进入该子项,在右边的窗口里按鼠标右键,选择“新建→双字节值”,输入名称“MTU”,按回车。再用鼠标双击“MTU”,弹出修改窗口,填入MTU的值。填写前请先把基数设为十进制。设置好后,需要重启机器才能生效。 MTU值不规范导致能ping通外网但是无法打开网页。 华为交换机S8512中间通过某公司的无线室外网桥下联S3550,在S8512和S3550交换机的联接端口启用Trunk,封装IEEE802.1Q 协议,S3550只做二层设备,将用户的VLAN信息透传到S8016,在S8016上配置三层虚接口地址。 网络设备调试完毕后发现,S3550下面的用户可以分配到网络地址,也能够ping通外网的地址和域名(比如sina.com),但是无法打开相应的网页。提示:“Internet Explorer 无法连接到您请求的页,可能该页目前不可用”。后经仔细检查发现,虽然可以ping通外网的地址和域名,但是只能通过小于1 468字节的数据包,大于1 468字节的数据包都不能通过。 把交换机S8512和S3550中间的无线室外网桥去掉,在实验环境下用双绞线直接相连,没有出现问题,客户机网络浏览正常,单独测试无线室外网桥也没有上述问题出现,检查交换机和无线网桥的配置,确定也没有错误。 问题究竟是由什么引起的?考虑到只能通过{zd0}1 468字节的数据包,{zh1}把问题焦点聚集到无线网桥的MTU上,有可能是交换机和网桥的MTU 值不一致导致。 测试结果分析如下: (1)华为交换机的接口的MTU值默认是1 500,这个值指的是IP层的报文长度,当这个报文承载在以太网帧上的时候,加上以太网帧的18字节,整个以太网帧的长度是1 518。当这个以太网帧被打上VLAN信息的时候,整个二层报文的长度就会变为1522个字节。 (2)在我们ping1468的时候,1468是IP层的净负荷,加上20字节的IP报文头和8字节的ICMP报文头,整个IP层的报文长度为1 496字节,再加上18字节的以太网帧封装和4字节的VLAN信息,整个以太网帧的长度刚好为1 518字节,这个时候无线网桥能够接收,所以能够ping通。 (3)在ping 1469的时候,根据上面的计算整个以太网帧的长度为1 519字节,可能是无线网桥的MTU值小于1 500,并且不具备自动调节MTU值的功能,这就决定了该设备无法接收这样的数据报,只有丢弃该数据包,所以导致无法通过长度超过1 468字节的IP报文,最终导致用户无法打开网页。 因为华为交换机的MTU值不可以改变,只好联系无线网桥厂家技术人员,把该网桥的版本升级,问题解决。 |