实战:几十万的 AP 增补项目,无线传感器接入后竟无法同时下载?很简单的问题却复杂化了!
本期分享的案例是无线网络的相关问题。
一、问题背景
某企业是一家致力于智能农业科技的工作,近期接到了某政企单位的网络增补项目—种植棚规模扩大,需要增加“自动喷水器”、“数据采集器”等无线2.4G频段的传感器设备,所以无线网咯规模的增加是免不了的。因此在扩容区域,增加了无线AP的点位,但品牌不一样。原有的AP采用H3C,新增AP采用某P。
1. 简化拓扑如下:现场传感器设备的升级方式都是通过HTTP协议下载文件到内部完成升级的。HTTP服务器是固定的172.16.1.208。但是新增区域下的传感器无法并发(多台)升级,而原有区域的传感器怎可以同时多台一起升级。如下:
同是一个项目下的同型号传感器,为何新增的某J AP不行,而原有的H3C AP正常呢?有朋友就说了,某J AP垃圾呗。好吧,下定论之前,我们先诊断一下。
二、排查思路
使用手机或笔记本接入某J AP无线2.4G长ping服务器确认是否丢包和延时;对比手机或笔记本接入某J AP无线2.4G,从服务器上同时下载文件,看是否正常;确认新增AP的信道、频宽、无线模式、加密方式等是否和原有H3C AP一致;确认现场干扰情况,是否是新增AP的抗干扰能力差导致会话建立不成功频繁断流;抓包确认数据流交互情况,看是否有可用信息。三、基础分析
第一步:确认无线网络的连通性使用手机或笔记本接入某J AP无线2.4G长ping服务器,可以确认基本无延时和丢包,大抵上看有线/有线通信应该没有问题才对。
第二步:对比手机和笔记本同时http拉取文件的情况http下载文件很简单,只需要电脑打开浏览器,输入服务器地址URL下载就行了。因为传感器下载有问题,所以尝试对比多台笔记本同时下载试试:
结果发现,确实有且仅有1台PC才可以下载成功,其它的PC均无法建立连接并下载文件。而对比接入到原有的H3C AP无线网络则没这个问题。下一步就要比对下双方无线AP设置的异同了。
第三步:检查新增AP和H3C AP的配置差异无线配置无非是那么几项:SSID、加密方式、无线模式、信道、频宽、安全防护(隔离、带宽控制等)、漫游等等,所以对比如下:
SSID:名称均相同加密方式:均是WPA2-PSK无线模式:都是802.11b/g/n/ax,wifi6默认AP,但是传感器不知此WIFI 6,协商的是bgn,这点也相同信道:都是工作在信道1频宽:都是配置的20Mhz频宽安全防护:未配置漫游设置:现场传感器固定,不涉及漫游看不出起来任何区别。下一步则是要确认现场干扰情况,是否是新增AP的抗干扰能力差导致会话建立不成功频繁断流。
第四步:确认无线干扰由于是2.4G无线接入使用,故首先怀疑竞争干扰导致,现场可以明显看到同信道造成的强干扰,新增AP和H3C AP所在的工作的1信道存在很多SSID,评估存在多方竞争干扰:
(截图:网络百宝箱WIFI干扰测试)
但是通过修改信道问题依旧。下一步抓下异常的数据交互,看看是否有什么端倪。
第五步:抓取异常数据流确认有效信息因为是新增区域下的出现的问题,所以在新增区域的“二级路由器”上抓包,配置监控端口抓取异常传感器与服务器交互的数据流:
【异常数据流1】终端的IP是10.168.1.55/24
【异常数据流2】终端的IP是10.168.1.22/24
根据数据包分析发现:
异常的TCP握手成功后,终端请求下载时会收到服务器的HTTP 429报文,然后就主动FIN掉该连接了,并不存在丢包问题。所以大致判断无线链路和有线链路的通信质量是正常的。对比,我们来看看正常的数据流,服务器并没有回复HTTP 429报文:
OK,差不多定性到是服务器的HTTP会包导致会话建立失败的问题了,由于HTTP是明文,我们看下相关内容。
第六步:确认HTTP 429报文相关内容HTTP 429报文内容如下:
我翻译一下:“即此服务器上的同时下载数量有限制,已达到限制。稍后再试。”也就是说会话限制存在于服务器端而并非网络层的问题。
那么问题来了:
H3C也是多终端接入啊,为什么那边服务器不拒绝,而新增AP则拒绝呢?通过现场的全局摸排,发现H3C AP和新增AP实际所处的位置是不一样的!新增AP加了二级路由器是经过NAT的,而H3C AP没有!如下:
所以合理怀疑HTTP服务器与终端建立会话只认源IP,经过了NAT后就只有1个源IP和服务器交互了,所以只能一对一,因此做了如下有效的对比测试:
服务器—二层网络—华三AP ))(( 多台传感器,并发下载升级文件正常服务器—二层网络—某J AP ))(( 多台传感器,并发下载升级文件正常四、问题总结和解决方案
问题总结:
根本原因是HTTP服务器存在只认一个源IP的会话限制,从而让经过了NAT 的新增某J AP和H3C AP表现不同,一开始如果从全局看,就是一个很简单的问题;
解决方案:
知悉用户使用二层组网,而不需要经过NAT让终端直接和服务器通信;关闭HTTP服务器的会话限制,保证可以基于端口的方式建立多会话。