【问题记录】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值是

 

 此时的传输数据的数据包长度变长,传输速率可以说有提高

 

posted @ 2020-07-06 15:20  陈晓猛  阅读(2)  评论(0编辑  收藏  举报