APP下载

MSS值引发网络故障

2017-11-07

网络安全和信息化 2017年11期
关键词:分片字节以太网

故障现象

笔者单位将中国电信ADSL 8M带宽升级为100M光猫接入,即“吉比特无源光纤接入用户端设备(GPON ONU)”接入。升级后发现基于UDP协议的游戏、即时通信QQ等正常,但基于TCP协议的有些网页打开的速度很慢,后发现与路由器和防火墙端口的MSS值的大小设置有关。

网络拓扑结构如图1所示,华为路由器A2220-S,安装在中国电信GPON ONU和天融信防火墙TG-61040之间,作为第二出口。

在防火墙上通过策略路由可以决定内网用户由哪个出口连接Internet。之所以不把GPON ONU直接连接到防火墙,原因是通过路由器连接后,在防火墙上做策略路由会更方便些。但是,当基于源地址的策略路由指定某台内网PC通过路由器AR2220-S由中国电信的GPON ONU访问外网时,会出现上述故障现象。

图1 网络拓扑结构图

故障点查找

中国电信的GPON ONU安装好后,用手提电脑直接连接到其千兆LAN口,网页打开速度正常,说明中国电信已经连接好,故障点在单位路由器及以后。省去路由器,GPON ONU直接连接到防火墙后网页打开速度正常,说明防火墙没有问题。手提电脑直接连接到路由器的G0/0/2端口,有些网页的打开速度就很慢,说明是路由器的问题。但该路由器安装在其他地方使用又很正常。用另一台路由器代替这台路由器时也有同样的故障现象,说明路由器的硬件正常,可能是某个参数的配置有问题。

处理故障需要的理论基础

1.MTU(Maximum Transmission Unit)最大传输单元。IP层接收到一份要发送的IP数据时,它要查询该接口的MTU值。IP层把MTU与要发送的数据包长度进行比较,如果数据包的长度比MTU值大,那么IP层就需要进行分片,分片后的数据可以小于或等于MTU。如果设置强制不分片,IP层在传输数据时可能会出现丢包现象。如果MTU配置过小而报文尺寸较大,可能会造成分片过多,报文被QoS队列丢弃。

2.MSS(Max Segment Size)TCP的最大报文段长度。通信双方在建立TCP连接时会协商出MSS值,以确定TCP报文段的最大数据长度。当对端发送的TCP报文段的长度超过协商出来的MSS,报文会进行分片处理。为了保证TCP报文不分片,配置过程中需要注意MSS与MTU的关系,为了不影响报文传输,MSS值加上报文开销(TCP首部、IP首部等)不超过MTU值。但是,如果将MSS设置为一个过小的数值,而TCP服务器端接受了该MSS值,那么TCP连接建立后,客户端就可以通过一个应用向服务器提交大量的请求,从而引起服务器产生大量的应答报文,这可能导致TCP服务器或网络的负荷大大增加。

3.ADSL是基于PPPoE(PPPoverEthernet)协议的,PPPoE头 是6字 节,PPP协议ID号两个字节,一共要占用8个字节,而以太网的MTU值为1500,所以上层PPP负载数据不能超过1492字节,PPP协商时协商的最大接收单元值不能超过1492字节。

4.GEM(G-PON Encapsulation Mode,GPON封装方式)是一种在GPON上封装数据的方式。GEM可以实现多种数据的简单、高效的适配封装,将变长或者定长的数据分片进行统一的适配处理,并提供端口复用功能,提供和ATM一样的面向连接的通信。单从帧结构的角度来说,GEM与其他数据业务的成帧方法类似。但GEM是嵌入PON部分中的,也就是在ONU跟OLT两个PON口之间才能被识别,独立于OLT的SNI类型或ONU的UNI类型。

5.由于以太网传输电气方面的限制,每个以太网帧都不能超过1518字节,对于大于这个限制的以太网帧都视之为错误的数据帧,以太网转发设备会丢弃这些数据帧。除去以太网帧的帧头14字节和帧尾4字节,剩下承载上层协议的Data域最大就只能有1500字节。用户请求一个网页时,用户计算机与Web服务器之间进行协商,确定一个最大的MTU尺寸,进行协商的用户计算机的默认MTU大小为1500个字节,所以Web服务器经协商确定的MTU大小为1500字节。因此,无论路由器MTU大小配置为多少,Web服务器所发送的数据包最大字节数仍为1500。

综上所述,TCP封装占20字节,IP封装占20字节,PPPoE封装 占8字 节,TCP的最大报文段长度=以太帧最大值-以太封装-TCP封 装-PPPOE封 装。 即MSS=1518-18-20-20-8=1452字节。

表1 实验数据

实验过程及故障解决

天融信防火墙TG-61040的MTU缺省值为1500,有效范围是68-1500;MSS的缺省值为off(不做MSS调整,默认),有效值为 <200-1460>。路由器AR2220-S的MTU缺省值为1500,有效范围为<46-9206>;MSS的缺省设置命令为undo tcp adjustmss,也就是不具体指定MSS的值。

实验过程主要是修改相关路由器和防火墙各端口的MTU和MSS值,观察网页打开的速度。修改的端口主要是路由器的外端口g0/0/1和内端口g0/0/2,防火墙的外端口eth32,实验结果如下:

1.修改各端口MTU的值,不能排除故障。

2.修改路由器g0/0/1端口的MSS值,不能排除故障。

3.修改路由器G0/0/2端口防火墙eth32端口的MSS值,可以排除故障。

具体实验数据如表1。

从实验数据看出,实验结果和上述的理论分析是相符的。

实验及排除该故障需要的相关命令

天融信防火墙修改端口MTU值的命令为TopsecOS.network.interface eth32#mtu <68-1500>;修改端口MSS值的命令为TopsecOS.network.interface eth32#mss-adjust <200-1460>;根据接口mtu做mss调整的命令为TopsecOS.network.interface eth32# mssadjust auto;不 做 MSS调整的设置命令为TopsecOS.network.interface eth32#mss-adjust off。显示端口属性的命令为TopsecOS.network.interface eth32#show;显示端口详细配置的命令为TopsecOS.network.interface eth32# show configuration。

华为路由器AR2220-S修改端口MTU的命令为mtu<46-9202>;修改端口MSS值的命令为tcp adjustmss <128-2048>;恢复默认的MSS值的命令是undo tcp adjust-mss。

经验总结

当路由器或防火墙之间接口的MSS值设置不当时,基于非TCP协议的Ping不会有丢包;基于非TCP协议的即时通信工具如QQ、游戏等网络通信正常;而只基于TCP协议的通信会不正常。

所以,如果遇到QQ正常、游戏正常、Ping正常,只是网页打开不正常,就有可能是MSS值的设置问题了。

猜你喜欢

分片字节以太网
上下分片與詞的時空佈局
No.8 字节跳动将推出独立出口电商APP
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
分片光滑边值问题的再生核方法
CDN存量MP4视频播放优化方法
No.10 “字节跳动手机”要来了?
基于模糊二分查找的帧分片算法设计与实现
简谈MC7字节码
谈实时以太网EtherCAT技术在变电站自动化中的应用
一种90W高功率以太网供电系统的设计