周学明+顾岚岚
【摘要】 在光网综合业务环境下进行故障定位需要采用成本低廉、应用方便、效率高的数据采集终端进行数据采集。OpenWrt是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件。基于OpenWrt的终端设备由于系统开放、硬件适配性好可以方便满足各种网络业务需求。本文介绍了利用OpenWrt进行定制开发一种数据采集系统的实例。详细说明了开发方案、开发工具、开发步骤以及调试过程。
【关键词】 OpenWrt 数据采集 系统开发 开源系统 硬件终端
一、引言
随着光网业务的发展,在承载网以及接入网上有多种业务同时承载,包括上网业务、IPTV业务、光网语音业务等。在综合承载状态下的故障处理对维护人员是一个很大的挑战。以IPTV业务而言,它的承载方式一般为IPTV终端接入在家庭网关后。真个二层接入到承载网都有可能出现故障。
常见的故障现象,包括终端无法获取IP地址、认证失败、直播信号卡顿、视频马赛克、点播黑屏等等。从已有故障处理经验看,IPTV-SR的处理板卡、交换机接口、交换机板卡、OLT的上联板卡、OLT的转发处理引擎、家庭网关设备等都可能引起各种故障现象。故障原因复杂多样、故障点位多,并且很多时候故障现象并非持续不断,而是在某些时间段随机出现。这使得处理人员比较难以快速准确的确定故障点进而有效处置故障。
当面对复杂故障现象进行疑难故障处理时,往往需要使用专用的测试仪表在不同的监测点进行长时间监测来进行故障分析。而相应的这种处理方式的成本非常昂贵。为此我们设想使用创新的处理模式进行故障处理。
利用开源系统以及免费资源进行自主开发,既能深度定制满足业务需求,又能大大降低整个系统的成本。本文详细介绍了利用OpenWrt [1]定制开发数据采集终端的技术原理、实现方法与测试过程。
二、 开发目标
为了在复杂的网络环境中定位故障点位,我们需要在不同测试点采集全部数据进行比对,从而确认问题发生的位置。对于整个故障处理系统而言首要解决的问题是业务数据的采集问题。
当发生故障时,通过初步的处理判断后,在需要进行检测的测试点,用定制的测试终端串接或者旁路方式接入进去。采集终端将采集到的数据完整的回传到云存储平台。然后通过分析服务器比对不同的数据可以确认哪个点位出现问题。
该处理模式主要的优点:
2.1成本低
采集终端选择具有GE/FE的小型路由器进行自主开发完成,相比购买测试仪表价格低廉很多。由于IPTV的故障现象很多是时间上偶发的,为了处理故障需要做24小时的抓包分析。IPTV现在的高清频道码流为8Mbps,标清为2.5Mbps和1.6Mbps,一共三种码流。假设采集一路高清频道共24小时,则需要的存储空间为1M*60*60*24=84G字节。这种24小时的抓包,需要高性能的仪表,普通的PC机容易出现存储文件错误等导致无法后续分析。如果采用IPTV仪表在多个测试点进行实时分析,则相应的仪表费用更贵。该创新测试方案利用云端的存储能力,保证数据可以长时间持续抓取。
2.2可扩展性高
当远端的分析服务器以及云存储服务器具备能力后,只需采购一定的测试终端即能方便的全网部署进行测试。同时测试终端能抓取全业务数据,可以针对光网的全业务故障进行分析诊断。方便维护人员对于上网、IPTV、VOIP等各类型业务的疑难问题进行深入分析。
2.3部署方便
只需要外线人员联系用户后将测试终端串接到用户网络内即可。无线现场人员进行复杂的配置部署,也不用修改用户终端或者网络设备。对于用户的业务应用完全透明,可以在比较好的用户感知状态下进行故障诊断分析。
针对测试采集终端,需要完成的功能包括:
1.串接在用户网络内,不影响用户业务使用;
2.准确采集用户业务数据;
3.将数据回传到远端云存储平台。
三、开发方案说明
3.1总体方案说明
采集终端由于要求串接在业务环境中不能影响用户业务,因此两个串接的接口必须工作在第二层以下,尽量不修改以太帧头信息保持信息传送的透明可靠。数据采集通过端口镜像方式进行并将数据文件保存为pcap格式存放在本地存储卡中。采集终端主要功能是数据采集,采集的数据是为了故障判断与处理,因此要求完整的将用户业务的所有交互数据能够保存下来。采用端口镜像可以完整的保存所有业务数据内容,方便后续的进一步处理分析。
采集到的数据可以通过实时的带内或者带外方式回传到远端的云存储系统中。考虑到实时采集到的数据量存在较大的带宽差异性,VOIP在64Kbps以下而高清IPTV则要达到8Mbps左右,高速上网业务可能达到50Mbps。如果直接采用实时回传,带内方式会影响到用户正常的业务。因此采用本地存储器做缓存,在不影响用户业务情况下根据上联带宽做准实时的回传。当不具备回传条件的情形下可以全部存储后进行离线回传。远端云存储服务器前置一台FTP服务器用来专门接受数据,并在内部网络中部署防火墙保障用户业务、数据系统的安全性。
3.2采集终端硬件平台
要求具有两个以上的GE/FA自适应以太电口的路由器,同时具有一个USB接口。通过对比分析最后选定了如下硬件平台,Atheros AR7161[2]进行开发。
该硬件参数信息为: CPU Atheros AR7161@680MHz;Ram 128MiB;Flash 32MiB;Network 4 x GE;USB 支持;Serial 支持;JTag 支持。
该硬件板卡具备很好的功能扩展性,满足一般路由器的功能要求。同时其所具备的芯片处理能力可以完成特定的任务。
该硬件板卡的主要功能模块说明如下
? 集成无线模块
? 处理器内核是32位的 MIPS 24K,现在主流的路由器是采用MIPS构架的处理器。
? 两个10/100/1000自适应以太网口满足串接方式的接入环境
? 高速的通用异步收发传输器和总线控制器
? DDR和串行ROM接口
? 32位的频率为33/66 MHz的 PCI 2.3接口
? 两个集成的USB 2.0,方便后续进行扩展做本地存储
? PCM 接口可以支持VOIP的接入
? I2S 接口可以支持音频信号解码传递
3.3 开发环境
PC机一台,CPU:i5,硬盘:256G,操作系统:win7
Vmware:虚拟机软件,允许一台真实的计算机同时运行数个操作系统。
Suse linux:用于开发测试的linux版本,能方便进行调试编译操作。
OpenWrt:OpenWrt是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。 同时,它还提供了100多个已编译好的软件,而且数量还在不断增加,而 OpenWrt SDK 更简化了开发软件的工序。
登录工具:SecureCRT,支持telnet、SSH等登录方式从而可以方便的连接调试终端。
编辑工具:vi linux的一种标准编辑工具,用来编写代码和编辑配置文件。
首先选择合适的OpenWrt版本进行编译,然后将image文件烧入硬件系统中。并在硬件系统上采用linux的shell编程完成相应的定制功能。
3.4 开发实现
3.4.1 实现二层透传
修改openwrt网络配置,在网络配置文件里,找到对应的接口eth0 eth1,将网络配置为桥接模式,从而实现eth0 和eth1的二层透传。二层透传方式下路由器的两个接口实现的是两层转发功能,也就是IPTV机顶盒所需要的上下行报文不会修改两层以太帧头,而是通过目的MAC地址进行转发操作。OpenWrt的网络配置文件是/etc/config/network,它负责交换芯片VLAN、网络接口和路由的配置。interface类型的节声明了逻辑网络接口,可以为这些接口指定IP地址、别名、物理网络接口名称、路由规则及防火墙规则。
配置案例如下:
config ‘interface ‘wan
option ‘proto ‘dhcp
option ‘ifname ‘eth0.1
本实例中的桥接配置:
config interface ‘lan
option ifname ‘eth0 eth1
option type ‘bridge
option proto ‘dhcp
3.4.2 实现接口抓包
建立抓包进程,用于对透传数据包的抓取。进程通过Tcpdump对桥接口进行抓包,将数据包保存在挂载的外接储存中,避免在传输速率造成的数据包溢出。固定设置eth0为下联到IPTV机顶盒的接口,eht1为上联到家庭网关的接口。抓包点位设置为eth0,这样不会造成冲突和干扰。抓取的数据报文格式为pacp格式,可以用wireshark等软件打开分析处理。考虑到后续数据传送的可靠性以及故障分析的效率,对于抓取的报文按照指定大小进行本地缓存。该大小参数可调整,在进行数据分析的时候也可以利用软件将多个文件进行合并分析。
3.4.3 实现FTP上传服务器
建立上传进程,用于将抓取的数据包上传至远端服务器。进程与远端服务器建立连接,并通过cmdftp 周期性的将数据包上传至远端FTP服务器中。需要利用进程做周期性的检测,周期参数也是可调整的。
3.4.4 实现按键以及LED提示
修改硬件与按钮以及LED灯的对应配置文件,重新定义每个按钮盒LED灯的调用接口。在抓包与上传进程中,调用按钮接口,实现运行和停止功能。以及提供LED灯的颜色提示用户,运行是否正常。
3.5 代码说明
代码主要由四部分组成:
? 初始化程序(init)
? 主程序(proc)
? 上传程序(ftp)
? 开关程序(switch)
3.5.1初始化程序init
此程序将系统环境变量初始化,以配合主程序proc和ftp自动建立连接。
初始化步骤:
USB自动挂载
FTP自动连接
LED初始化
BUTTON初始化
3.5.2主程序 proc
程序流程:
检测当前环境是否正常
启动tcpdump进程,抓取数据包保存于挂载文件夹
启动tcp进程,将数据包上传至远端服务器
3.5.3上传程序ftp
程序流程:
获取当前数据包序号
如果该文件存在,上传该文件
判断上传是否成功
如果不成功,则定时重传。
如果成功,则删除改文件。获取下一个数据包
循环此过程
3.5.4开关程序swith
建立按钮和主程序proc开关的映射关系,通过判断进程是否存在,实现运行和停止设备。
四、测试与分析
将采集探头部署在实际的现网环境下进行测试,验证了采集的数据是否准确并完整的传送到远端的云存储服务器端。在实际的故障案例中也做了初步的使用与验证,确认其效用以及后续的进一步改进方向。
4.1测试方式
现在的测试主要是串在IPTV机顶盒与家庭网关之间。利用家庭网关本身的上网通道完成回传报文。
4.2功能测试
主要分为基本功能测试以及业务测试。包括按钮功能测试,确保通过按键可以启动进程使能系统;稳定性测试,24小时串接保证回传稳定可靠;采集能力测试,确认20Mbps的流量可以准确采集到。业务测试确认了采集过程中业务正常运行。整个测试过程中对于不同的业务做了数据采集,确认不影响用户业务,并能准确采集到数据。并在实际故障处理中做了可行性的验证,确认有助于故障处理与定位,能有效降低区局外线上门的工作量与难度。
五、总结
本文通过提出了一种新型的故障诊断系统,并基于开源系统OpenWrt开发了相应的智能采集终端。结合云计算系统提出了更加低成本、高可扩展性的综合业务故障诊断系统。后续的研究重点集中在分析处理系统,也将充分利用开源平台进行相关研究,并将研究成果推广到区局等后端运维部门中。该系统的广泛使用必然能提高整个维护水平以及效率,还能降低仪表采购成本。
参 考 文 献
[1] OpenWrt 开发教程 https://dev.openwrt.org.cn/#
[2] AR7161 datasheet http://www.qca.qualcomm.com/media/product/product_68_file1.pdf