摘 要:针对以太网技术OAM(Operation Administraction and Maintenance)能力较弱的问题,提出了一种远端故障检测的具体实施方案,设备上电进行软件初始化时,将Trap数据写入FPGA的寄存器中,并增加一个定时器控制FPGA向网管设备发送连通性检测帧,若设备突然掉电,FPGA会利用缓冲时延,向网管发送远端掉电帧trap,使网管获得设备掉电信息;若网管在定时周期内没有接收到连通帧Trap,则可以判断设备链路或硬件故障。
关键词:OAM; 连通性检测; 掉电; Trap; FPGA
随着数据业务的广泛应用,以太网技术在通信网络中发挥着越来越重要的作用。但是以太网技术与传统的同步数字体系(SDH)相比,在网络故障告警、链路质量、维护手段等方面都略逊一筹[1]。国际标准化组织IEEE先后推出了802.3ah(2004)和802.1ag(2007)两个标准化协议来强化以太网在维护、告警方面的能力。802.3ah的以太网OAM主要是链路方面的监测和维护,是一种偏物理层的OAM,而802.1ag的以太网OAM是偏网络和应用的OAM[2],主要用在汇聚层和核心层上[3]。
本文结合硬件,利用SNMP Trap包来实现链路连通性监测以及故障告警。主要是实现偏物理层的OAM功能,与802.3ah和802.1ag相比,该故障告警和链路检测方法简单、实现方便,适合于一些远端二层交换设备。根据FPGA[4]的特点,外接一个1 000 ?滋F~2 000 ?滋F的电容,在设备突然断电时,通过FPGA发送SNMP报文通知局端设备,局端设备记录并上报网管,提示网管人员设备故障。
1 SNMP协议介绍
简单网络管理协议SNMP[5](Simple Network Management Protocol)是目前最常用的网络管理协议。狭义上,它是一种专门用于网络管理软件和网络设备之间的通信协议;广义上,它是一组为实现网络的自动化管理任务而制定的一系列通信标准,包括管理信息的表示与命名、通信协议等内容。
SNMP中定义了5种协议数据单元PDU(Protocal Data Unit),按照完成的功能可以分为三类:(1)查询,设置SNMP变量;(2)应答请求;(3)事件报告,如Trap。
Trap是某种入口,到达该入口会使SNMP被管设备主动通知SNMP管理器,而不是等待SNMP管理器的再次轮询。同时也是管理工作站向代理获取管理信息的途径之一。Trap消息是当代理探测到本地存在与网络运行状态有重要关系的事件发生时,即向工作站发送时间报告消息。由于事先在代理中指定了发送的工作管理站,也就是Trap的目的地,因此接收到Trap后,管理工作站不需要向代理发送确认消息。
2 远端故障检测硬件模块设计
图1所示为硬件总体结构示意图,FPGA与ARM相连,在设备上电初始化完成之后,软件就可以将手动组好的SNMP Trap数据包写入到FPGA的寄存器中储存起来。
图2所示的FPGA功能示意图中,P1~P4为4个媒体独立接口(MII接口)。P1和P2为媒体接入控制(MAC)模式接口,用于连接2个光口物理层收发器(PHY)芯片;P3和P4为PHY模式接口,用于连接交换芯片的2个MII端口。实现P1与P3之间的报文相互转发,和P2与P4之间的报文相互转发。提供一个简化的MII接口(RMII)P0为MAC模式,通过PHY芯片与交换芯片相连,用于发送各种协议报文。当电源跌落时,立即向MII_P1和MII_P2端口同时发送掉电告警帧,并定时向P0协议端口发送连通性检测帧。
3 远端故障检测的软件实现
本文实现的远端故障检测大致分为:远端掉电检测和远端连通性检测。两种远端故障检测处理流程如图3所示。
3.1 远端设备掉电检测原理
远端设备掉电处理可以有很多种实现方案,本文的实现方案选择硬件FPGA。由于远端设备突然断电时,由软件组帧和发帧有可能来不及,因此选用硬件去实现。设备断电时,ARM、以太网交换芯片会立刻停止工作,而FPGA会在硬件布局中通过连接一个1 000 μF~2 000 μF的电容,可以有3 ms左右的断电缓冲时间,设备上电初始化完成之后,软件会手动组一个SNMP Trap包,存放在FPGA的寄存器中。当设备突然断电时,FPGA会检测到一个电压跌落的信号,由于FPGA有3 ms~6 ms的断电缓冲时间,它会利用这个时间将存储的寄存器中的数据读取出来向网管发送,从而使网管能够检测到远端设备掉电的告警。具体的远端设备掉电处理流程图如图3(a)所示。软件组包部分核心代码为:
funIcConnect(sIC_CTL_BLK *pChip, UINT8 *pData, UINT16 len, void *para)
{ int status = DRV_SUCCESS;
UINT16 i,UINT8 value;
pChip->chipWrite(IC_ FRAME_CCF_EN, 0, para);
pChip->chipWrite(IC_ FRAME_CCF_EN, 1, para);
for(i = 0; i < len; i ++)
{
value = *(pData + i);
pChip->chipWrite(IC_FRAME_CCF_DATA, value, para);
}
pChip->chipWrite(IC_ FRAME_CCF_EN, 2, para);
}
3.2 远端设备连通性检测原理
设备上电链路检测帧实际只检测设备的硬件及连接到网管的这条链路是否正常,不包括设备上的软件是否能正常运行。进行链路检测就是区分设备失连是设备软件问题还是硬件问题。因为在正常情况下,即使软件出现故障,由硬件直接发出的链路检测报文也应该能被网管接收到。
设备上电软件初始化完成之后,由软件手动组一个类SNMP Trap 包会写入到FPGA的寄存器中,寄存器会根据FPGA开始发包时间和发包控制间隔时间信号给网管服务器发送一个连通性检测帧,正常情况下网管可以一直收到链路连通性检测帧。如果设备上电之后,网管没有接收到任何Trap,则说明软件出现异常;而如果设备正常运行之后,网管服务器没有收到掉电检测告警帧和连通性检测帧,则可以判断是连接网管的这条链路出现中断,或者设备硬件出现故障。网管与设备会话的过程中有2个时间需要注意,(1)FPGA开始发包时间,另一个是连通性检测帧发包时间间隔。FPGA开始发包时间是通过软件得到1 s~30 s的任意时间点,如果设备上电之后FPGA即开始发送,而在一个PTN网络的边缘可能存在几千台甚至上万台的远端设备,如果这些设备同时上电,而且都不做发包时间控制,则可能会在出现同一时间内网络中有上万个这样的报文,导致网络风暴,从而影响业务。因此发包时间由软件控制,则同一时间网络上出现大量链路检测报文的几率会小很多,也不会影响业务。连通性检测帧的发包时间间隔既可以由软件控制,也可以由硬件控制。如果发送时间间隔过小,则网管服务器需要频繁地处理这些Trap信息,对于正常的业务监控信息会造成影响。本文由网管服务器设置发包时间间隔,将设置的时间间隔写入硬件定时器中,控制FPGA发送连通性检测帧的频率。具体的连通性检测流程图如图3(b)所示。软件核心代码为:
funAlm(sIC_ CTL_BLK *pChip, UINT8 *pData, UINT16 len,
void *para)
{ int status = DRV_SUCCESS;
UINT16 i,UINT8 value;
pChip->chipWrite(IC_ FRAME_PDAF_SET, 0, para);
pChip->chipWrite(IC_FRAME_PDAF_SET, 1, para);
for(i zhiqi= 0; i < len; i ++)
{
value = *(pData + i);
pChip->chipWrite(IC_FRAME_PDAF_DATA,value,
para);
}
pChip->chipWrite(IC _FRAME_PDAF_SET, 2, para);
}
4 实验结果及数据
设置Trap的目的IP为10.11.2.23,设备IP为 10.11.2.158,掉电检测帧的Destination Port 为162,链路连通性检测的Destination Port为163。设备上电后,利用抓包软件Wireshark可以得到如图4所示的链路连通性检测帧。将设备突然断电, 通过Wireshark可以得到如图5所示的设备掉电检测帧。
本文根据实际环境,在实验室对远端设备进行了多次的突然掉电测试,在远端到网管线路正常的情况下,掉电告警信息都能立刻上报到网管,该方案已经在九江山水电讯设备有限公司的产品中得到验证,从而进一步完善了功能故障测试对远端设备的管理。
参考文献
[1] 郭祥本,罗莹.以太网OAM原理与实现[J]. 通信技术,2009(12):42-43.
[2] 徐荣,邓春胜.电信级以太网[M].北京:人民邮电出本社,2009.
[3] KUROSE J F,ROSE K W. Computer networking: atopdown approach,fourth edition[M].Pearson Education, 2008.
[4] 夏宇闻.Verilog数字系统设计教程[M]. 北京:北京航空航天大学出版社,2008.
[5] 刘建卿,卢融凯.基于SNMP的网络监控系统的研究与实现[J].电子技术应用, 2012,31(10):52-54.