1、故障现象
设备型号:NBR-E,
软件版本:B9,
苹果电脑访问其中某2个网站非常卡,其他网站,上网等正常;windows电脑正常。
访问的网址是mp.123.com.cn ,boss.yunzhangcaijing.com。解析的IP是:113.107.150.186。
2、网络环境
NBR3000D-E的LAN0口下接二层交换机,都是同一个网段;出口2条静态对等光纤,都是电信。
3、故障分析
接到故障后,进行了如下步骤的定位:
1、苹果电脑192.168.1.132 设置策略路由+免审计单独走7口正常,走6口不正常;windows电脑策略路由哪条线路都正常;
2、苹果电脑连小米路由器,小米路由器做NAT模式,小米路由器WAN口IP 192.168.1.64设置策略路由走G0/6。
苹果电脑地址从小米路由器下发---测试正常;
3、6口MTU改成1200故障依旧,这说明跟MTU没有关系
4、苹果和Windows电脑配置的DNS服务器是同一个,都是114.114.114.114
5、查看走6口的主机好几个会话数很高,策略路由引到7口去,测试苹果电脑走6口正常了一会又故障
6、客户那边下班后,没有什么人了就正常,这看上边期间流量也不大,这跟带宽应该没有关系。
根据定位步骤,接了小米路由器后走Gi 0/6没有问题, Windows设备抓包,mac电脑故障时抓包,另外在小米路由器上进行了抓包,
这这些报文进行对比,发现windows和小米路由器的TCP选项中都无时间戳选项,而mac电脑发出的TCP中有时间戳选项,
到小米路由器上该时间戳选项就被改掉了,具体报文如下所示:
图1 windows抓包
图2 MAC电脑抓包
图3 小米路由器上抓包
从这抓包对比看,在没有时间戳选项的时候访问正常,这说明跟时间戳选项导致的,
具体怎么导致有问题参考:http://blog.csdn.net/chen_jianjian/article/details/79106672,
简单来说该故障导致的原因:该问题是由于苹果电脑的发起tcp连接时会带时间戳选项,对于服务端,
有时间戳选项时会去检查在一个平静时间内(60s)有时间戳的连接比服务器记录的早,而有nat时,
这内网很多苹果pc,时间戳各异,此时源地址都一样,而我们设备流老化较快,未等平静时间就老化,
从而导致端口重用概率增大,导致服务器丢弃syn报文,从而出现访问该网站慢。
4、解决方案
从上述分析看导致该故障主要是TCP连接的时间戳选项造成,可以关闭TCP时间戳选项来解决,
windows和linux系统都可以设置关闭TCP时间戳选项,也认为MAC也可以关闭TCP时间戳选项,
远程到客户MAC电脑,未发现有关闭时间戳选项的功能,咨询MAC售后也说未有该功能,
对于关闭时间戳选项的方案不适合MAC。既然关闭时间戳选项不可行,该问题又是在有时间戳情况下,
NBR设备流回收太快,导致nat端口快速重用,对于服务器认为是同一条连接的异常报文,
导致SYN报文被丢导致,那么我们可以设置设备流回收慢点即可解决,具体操作为:
Ruijie(config)#ip session timeout tcp-time-wait 60
Ruijie(config)#ip session timeout tcp-closed 20
ip session timeout(配置流的老化时间)
tcp-time-wait:设置协议为TCP 状态为tcp-time-wait 的流的消亡时间默认10s,取值范围5-60
tcp-closed:设置协议为TCP 状态为tcp-closed 的流的消亡时间默认10s,取值范围5-20