电子政务 网络管理 常见故障处理

不可忽视的MTU

来源:网络部撰稿人:网络部发布时间:2015-07-20 字体:[] [][关闭][打印]

    相信做过网络管理的朋友对“MTU”应该都不陌生,我们也经常在家用路由器上见过路由器WAN口的MTU设置选项。我们先来引入一下MTU的定义:最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。一般来说,MTU只是决定数据传输过程中最大数据包的大小,并不会影响网络通断。但是对于一些特定的设备来说,MTU可能决定着数据传输的成功与否。在一个无线认证接入项目上就因忽视了MTU而遇到了麻烦,下面介绍一下我们处理这MTU故障的经过。

    先来介绍一下这个无线认证介入项目,后台是无线认证系统(Portal)和AP硬件控制器(AC),用户端则是路由器和AP配合使用。

  

  故障现象

  设备全部配置好之后,AP可以正常Ping通网关和AC,在AC本机上可以Ping通AP所在的路由器,表示网络通畅。但是在AC管理界面上始终显示AP离线;而每次重启AP后,AC上显示的AP离线时间就会重置。因此,从AP到AC之间的链路已经打通,但应是某种协议不匹配或者设备不支持导致AP无法正常上线。

  

  故障排查

  为了排查故障点。首先,我们将和路由器和AP直接挂在AC下面,通过路由器上设置静态IP和AC互联,这时AP可以正常上线。之后,我们将路由器与AP放回用户端,但仍使用相同的静态IP,通过二层VLAN与AC互联,当链路配置完毕后,AP仍能正常上线。最后,将路由器恢复至PPPoE模式后,AP离线。这样看来,离线原因应在PPPoE上。

  经过对PPPoE报文抓包分析,我们发现,AP发送给AC的第一个报文中,信息是完整的,而随后的所有报文信息均有缺失。这样就导致AP上报的信息中,只有第一个数据包完整传递到AC上,所以会有一个上线提示;而随后的数据包,包括keepalive报文均不能正常送达,以至AP一直显示离线。每当AP重启后,重新发送的第一个数据包又能完整送达,导致AP离线时间重置为零。

  

  故障分析

  为什么会发生报文缺失的情况呢?这就要从链路传输的“MTU”说起了。在TCP/IP协议中,将要传输的数据分成较小的组进行传输,每个组的大小为576字节。而Windows默认的字节为1500,这是以太网的组网标准。因此,对于时下大多数使用以太网的局域网来说,最大传输单元的值是1500字节。如果在IP层要传输一个数据报比链路层的MTU还大,那么IP层就会对这个数据报进行分片。一个数据报会被分成若干片,每个分片的大小都小于或者等于链路层的MTU值。当同一网络上的主机互相进行通信时,该网络的MTU对通信双方非常重要。

  但是像PPPoE这样的系统会减小这个数值,这就使得在使用最大传输单元发现方法时可能会产生这样的结果:一些处于配置不当的站点变得不可达了。比如这里AP发送给AC的报文,AP默认的MTU是1500,而PPPoE的MTU则是1420,这样数据包在经过会PPPoE系统传输时会被重新分片打包,导致从第二个数据包开始就出现数据错位,以致随后的信息丢失,出现了AP不能上线的情况。

  

  故障解决

  找到问题之后,解决办法就出来了,我们让设备厂商的工程师给AP重新做了一个软件版本,新版本可以自定义AP的MTU值,将其改为1420以下,这样数据包就可以完整传输了,而AP也可以正常上线。因此,当我们遇到类似故障,数据链路正常但某种协议不通时,可以检查一下不同协议的最大传输单元是否一致。