在目前的车地通信中,这篇地铁论文认为越来越多采用WLANMesh网络和AP节点进行无线局域网通信,但是在对AP信号检测的领域中依然缺乏足够的可参考成果。本文对报文捕获、解析及统计程序设计过程进行了详细描述,该程序可以在交叉编译后移植入嵌入式Linux系统中使用。《现代城市轨道交通》(双月刊)创刊于2004年,由铁道部主管、铁道部科学技术信息研究所和铁科院(北京)工程咨询有限公司主办。将以新传媒模式运作,密切关注城市轨道交通事业的焦点、热点;全方位介绍国内外地铁、轻轨等快捷交通的建设和运营经验;及时报道相关技术及其装备和高新技术成果;不断扩大国际合作,多元化促进学术研讨与技术交流。
摘要:设计了一套由嵌入式设备、服务器以及界面显示终端组成的无线AP信号质量检测系统;并详细介绍了嵌入式设备中利用libpcap工具库,以及多线程协同工作对802.11报文进行捕获、解析以及统计的方法。最后无线通信系统利用报文捕获、报文过滤及解析,总结无线AP信号质量情况实现了地铁无线AP质量的远程在线监测。
关键词:报文捕获,过滤,双线程,统计
近年来,国内多个城市的地铁采用了由AP设备作为节点组成的WLANMesh[1]网络进行车地之间的信息传输,该技术融合了传统的WLAN技术和ad-hoc技术的优势,可靠性高,部署快捷,可扩展性强。其在地铁中的应用,可以满足列车以80公里高速行进中的快速切换,切换速度最快可达5ms,行进传送速率可稳定在18Mbps以上。此外,还支持先进的MLSP(Mo-bileLinkSwitchProtocol)技术,实现列车移动过程中的活跃链路切换,并保证报文不丢失。但在实际应用中,因为设备老化、性能下降或者故障等原因,往往会导致通信失效,而采用传统的检测方式无法快速查定位问题设备。目前对AP设备的通信状况检测主要是人工巡检的方式,用频谱分析仪、无线信号分析仪等仪器法对轨道AP设备进行信号质量的检测,检测方法包括对设备发送探测请求信号分析其响应报文等[2]。但此类方法多需要人工干预,或由于检查过程对AP的正常通信会产生一定程度影响而无法做到实时监测和判断设备是否正常。为了能在不影响AP设备正常通信的前提下对通信情况进行实时监测,本文构想了一套检测系统:从数据链路层出发对所捕获的地铁无线AP的报文进行特征分析,从逻辑上实现设备工作状态的判别;并详细介绍了报文捕获及统计程序的设计原理,并将此程序嵌入于ARM中作为前端监测设备。
1无线AP信号质量检测系统结构
上海地铁二号线采用了WLANMesh网络作为地铁站内PSD屏蔽门控制系统的主要车、地通信方式,通信协议遵循802.11g标准。部署情况一般为:站台内布置4个无线AP设备,列车上布置两个车载MR设备。AP设备及MR设备的通信主要通过六个报文类型:Beacon、Proberequest、Proberesponse、ACK、ACTION、Data,其中Beacon、Proberequest、Probere-sponse、ACK用于AP设备进行邻居发现的主、被动扫描工作,而ACTION、Data则用于Mesh网络建立合法链路和链路稳定后的通信工作。目前在实际通信过程中检测到AP设备常出现的通信故障一般为以下几种情况:设备整体报文数量低于标准情况,此时AP设备可能处于活跃度较低状态,无法完成正常的邻居发现和Mesh链路连接工作,工作性能不稳;AP设备完全失去响应,主动扫描与被动扫描相关帧全部丢失,此时可能为设备工作异常;AP设备可正常进行邻居发现,但是Mesh链路建立失败;AP设备正常接收发送通信报文,但是场强信息较弱,速率过低。此时可能为天线连接不良等原因。以上几种工作异常均可直接导致车、地通信的不稳定,使屏蔽门联动控制失败。现场采用CommonView软件[3]进行报文捕获。在AP设备搜寻过程中,每台设备每秒钟发出10个Beacon帧,1个ProbeRequest,均为广播帧。由于当前对无线AP设备的异常情况难以侦查,本文针对此问题提出了一套结合可部署于地铁站内的AP信号质量检测系统,以及针对AP报文特征进行通信质量评估的算法。
无线AP信号质量检测系统由嵌入式设备、后端服务器程序以及客户端显示界面组成。架构图如图1所示。本系统采用CS架构[4-5],主要由嵌入式设备和服务端组成。嵌入式设备作为客户端负责收集数据、服务端作为服务器负责处理展示数据。嵌入式设备主要包括Wi-Fi模块、外接SD存储卡、3G模块、以及ARM内核处理器四部分。Wi-Fi模块主要负责无线报文的捕获;外接SD存储卡作为数据的存储介质;3G模块负责日志文件的发送。ARM内核处理器作为嵌入设备的核心,负责整个系统的调度工作,将Wi-Fi捕获的报文,存储到SD存储卡中,然后以固定的时间段分批次将统计的信息写入日志文件,并通过3G模块发送后台服务器。服务器获得来自监测设备的信息后,将不同类别的信息分类存储于数据库,并根据报文、场强等信息进一步分析处理,判断其是否发生故障。如果发生故障则分析可能的故障原因,将对应的告警信息发送给维护人员。根据数据库中的数据,服务端能够统计分析出AP设备的预、告警信息,场强曲线,车、地通信情况等信息,并把这些信息在前端页面出来。
2AP报文捕获及统计程序设计
2.1802.11标准的无线报文捕获方法
网络报文的捕获过程一般可分为三个模块:底层为与操作系统相关的报文捕获机制;中间层为与用户应用程序交互的接口;最高层为对所捕获报文的过滤单元。底层报文捕获使用Linux操作系统,在Linux操作系统中,常用Libpcap捕包函数库作为报文捕获的基本工具[6-7]。Libp-cap采用网络分接头对报文进行捕获,并使用BPF(BSDpacketFilter)过滤算法对捕获的报文进行过滤[8-9],从而得到符合用户过滤规则的报文。Libpcap函数库内包含20余个用户层API函数,通过API函数可以方便地实现网络报文获取功能。由于Libpcap网络分接头对报文进行捕获,因此所捕获的报文格式会因网卡与驱动的不同而产生变化,从而需要不用的捕包方法[10-12]。本课题所采用的网卡为Netgear公司的WG111v2,此款网卡兼容RTL8187驱动程序,可同时支持混杂模式与射频侦听模式。
在混杂模式下,网卡可捕获局域网内所有经过它的网络包;在射频侦听模式下,网卡无需连入局域网便可获取经过网卡的所有报文,但是无法上传任何信息。RTL8187驱动根据数据链路类型对报文头部添加一个伪报首,作用是提供一些额外的物理信息如接收处的信号强度、信噪比等。当监控有线网络时,网卡驱动将为报文添加以太网数据链路类型的报首。网卡模式设置完毕后可进行报文捕获工作,其主要步骤可分为:寻找或指定网络设备、打开网络设备、设置BPF的过滤规则、报文循环获取阶段。报文捕获总体流程如图2所示。在现场复杂的网络环境中,存在大量不同类型的报文,系统根据AP设备报文的格式,拟定相应的规则,使用BFP过滤器对报文进行过滤。AP设备发送的网络报文MAC地址均以特定数字开头:“002389”,符合需求的报文包括:1)不包含源地址但目的地址为002389开头的控制帧类报文;2)来自于地址为002389开头且目的地址也为002389开头的普通报文;3)来自于地址为002389开头的广播报文(广播报文的目的地址均为0xffffffffffff)。
2.2802.11报文信息提取
获取到的数据报文采用十六进制编码,需要对报文进行提取和解释以获取报文中所含的信息。网络设备驱动添加的伪首部为Radiotap结构[13],包括RadiotapHeader和Radiotapdata两部分。Radiotapdata内包含部分物理信息,如:RATE(速率)、CHANNEL(频道)、ANTSIGNAL(信号强度)等。it_present为radiotapdata的位掩码成员,其长度为32位,每一位bit代表其对应的物理信息是否存在。其中,it_present第31位代表是否需要延伸位掩码长度,如果为1则其后面会增添一个32位的it_present位掩码,用于拓展更多的物理信息。
提取Radiotapdata物理信息方法如下:1)检查当前的属性序号是否为属性序号列表范围以内,若不是则退出;2)检查it_present对应位是否为1,如果不是1则跳转至第5)步,否则转至第3)步;3)保存当前指针的位置,将指针跳至该属性的尾部的地址;4)将it_present右移一位并保存;5)若经过了3)、4)步则将属性序号加1保存并返回当前的属性序号,否则将属性序号加1保存后跳转至第1)步;6)重新引用此方法,返回到第1)步。以上方法可以动态将RadiotapHeader后面所跟随属性全部提取。在本实验中,网卡驱动所添加Radiotap信息长度共为26个字节,且it_present为固定值,其长度为18bytes,与RadiotapHeader共计26bytes,与RadiotapHeader内的it_length记录相符。因此若需寻找报文的MAC头部分,只需跳过前26个字节。802.11各类报文的MAC头解析方法如下:试验中所需要获取的802.11协议报文主要有管理帧、控制帧和数据帧。
具体报文类型及其报文格式如图3所示(其中Address1为目的MAC地址,Address2为源mac地址)。从帧格式图中可看出其各类报文首部均包含相同的起始部分:FrameControl部分,其长度为两个字节,包含11种信息。其中报文的类型可通过类type和基类subtype来确定。确定为具体哪类报文后将移交对应功能模块逐层提取其MAC地址等信息。解析方法为:根据各报文的格式,设计出各个数据结构,将报文与各数据结构匹配,最后得出所需要的信息。为尽量降低程序的丢包率,需尽量保持抓包程序的优先性。因此设定了两个线程进行异步操作:主线程主要进行报文捕、辅线程进行报文解析工作,线程间采用信号量同步。这样可以尽量缩短处理单个报文所需时间,简短周期,提高其检测内核空间经过报文的频率。另外,线程间将共享堆内分配的存储空间,存储空间采用了环形链表,结构如图4所示。双线程协同工作流程如图5所示。
2.3报文数量规律统计
将报文捕获程序进行深度加工,增添报文数量、场强信息统计等功能,最终将作为现场测试调研的主要工具。生产加工的数据分别为:单位时间内其各类报文的数量;单位时间内各类报文的场强均值;单位时间内各类报文的重传率;单位时间内各类报文所出现的最大速率及所占比例;单位时间内各类报文所出现频率最高的速率及所占比例。以上数据均将记录入所生成的日志文件中,并上传到服务器中,作为AP信号检测指标进行展示。
转载请注明来自:http://www.lunwencheng.com/lunwen/lig/13398.html