【问题记录】2019/1/25 美国客户通过WIFI能PING通Google,WEB不能访问页面问题
1.现象:
美国客户通过WIFI能PING通Google,WEB不能访问Google页面问题
2.查看后台相关文件:
zebra配置文件中cellular的mtu值由默认值1500被修改为1428
3.猜测原因:
移远模块拨号脚本会修改蜂窝拨号的mtu值:
会改MTU的模块有:EC25,EC21,EC20
不会改MTU的模块有:UC20
4.配置cellular0 mtu值方法(改完重启班驴生效):
原先的版本无法通过以下cli命令来更改蜂窝接口cellular0的mtu值:
因为拨号成功后quectel-CM程序会根据收到的mtu值,重新去设置cellular0接口。
新的40版本移除了移远蜂窝模块拨号程序quectel-CM的mtu设置功能,可以通过cli的mtu设置命令,来设置cellular0的mtu值
设置完毕之后无需重启蜂窝程序,当前程序能MTU值可以正常被设置。
mtu是网络传输最大报文包,mss是网络传输数据最大值。
默认的MSS值是MSS=MTU-20字节TCP报头-20字节IP报头,在以太网环境下,MSS值一般就是1500-20-20=1460字节
测试环境:
55设备下接笔记本电脑 使用 netsh interface ipv4 show subinterfaces查询当前电脑的mtu为1500
从路由器底下接的笔记本发起tcp请求,在路由器底下的电脑发起web访问请求,通过浏览器访问www.baidu.com
通过笔记本访问www.baidu.com相当于从笔记本端发包出去,当前mss为1500-20-20 = 1460
抓Bridge0的包
1、正常通信
PC-->百度
百度->PC
2、无法正常通信
百度->PC
将当前的mtu值改成1300,再次抓包,路由器蜂窝的mtu为1300则路由器的mss只有1260与bridge0协商之后取最小为1260,但是百度-->到路由器蜂窝的mss还是1360,这时候百度的包无法正常到达PC,则次数出现可ping通百度 但是无法访问百度页面的问题。
就像美国碰到的问题,有两种可能解决方式:
1、是修改蜂窝接口cellular0的MTU值,避免大于MTU值的包被丢弃;
2、是修改TCP握手时MSS值,这样双方发的包就不会大于mss设置的值;
△这边在测试的时候有疑问?既然MSS值可以根据MTU去改变,为什么要设置MSS值?
1、法1和前面可正常通信的情况一致,此处不具体再描述
2、修改TCP握手时的MSS值(如果修改了MTU值之后仍旧无法上网,则此时要修改mss值,单独修改的前提也是当前的mtu值要与此相匹配,否则依旧会出现数据被分片,传输不完整被分割或者被丢弃的现象)
要注意的是,我们设置的MSS只对路由器底下接的设备有效,因为底下接的设备mtu值比较千变万化,从本机(路由器)发起的tcp连接由内核根据协议类型来决定mss的值(需要协商协商为最小的RSS),一定要保证的是协商后的RSS值 <= MTU-20-20才能正常上网
如当前的mss被设置为1200,就算我的mtu值是
此时的传输数据的数据包长度变长,传输速率可以说有提高