1三层以太网交换机SNMP代理软件的设计与实现王兆峰彭晓燕(湖南大学机械与汽车工程学院长沙410082)E-mail:hellowzf@yahoo.com.cnTelephone:13187002591通信地址:湖南省长沙市雨花路161号湘计海盾王兆峰(收)邮编:410007[摘要]本文对简单网络管理模型做了介绍,并在此基础上重点分析了嵌入式SNMPAgent软件结构。文中讨论的三层以太网交换机SNMPAgent开发流程对于开发路由器等其它网络产品SNMPAgent同样具有参考价值。[关键词]网络管理SNMPMIB嵌入式Agent中图分类号:TP393.07文献标识码:ATheDesignandImplementationofSNMPAgentSoftwareonL3EthernetSwitchWangZhaofengPengXiaoyan(CollegeofMechanical&MobileEngineeringHunanUniversityChangsha410082)[Abstract]:ThisPaperintroducesthemodelofSimpleNetworkManagementProtocol(SNMP),basedonwhichanalyzesthestructureofembeddedSNMPAgent.ThedevelopmentprocedureofSNMPAgentthatdiscussedinthispaperisalsovaluabletowhichwilldeveloptheSNMPAgentonotherNetworkproductsuchasrouter.[Keywords]:NetworkManagement,SNMP,MIB,embeddedAgent1基于SNMP的网络管理网络设备的复杂化、异构化使得网络管理不可或缺。目前存在:公共管理信息服务/公共管理信息协议(CMIS/CMIP)、局域网个人管理协议(LMMP)、简单网络管理协议(SNMP)等几种标准的网络管理协议。简单网络管理协议(SNMP,SimpleNetworkManagementProtocol)以下简称SNMP,由于其简单与实用性,已经成为TCP/IP网络事实上的管理标准。现在所提的SNMP已经不仅仅是指一种管理协议,而是一种网络管理体系结构。SNMP遵循标准的Client/Server结构,它的管理模型包括四个主要元素,即管理者(Manager),代理(Agent),管理信息库(MIB,ManagementInformationBase)以及管理协议SNMP。SNMP网络管理模型如图1所示。图1SNMP网络管理模型Manager是实施网络管理的处理实体,它定期查询Agent收集到的相关信息,实现对网络中各种资源的监测;并负责发出网络管理操作的各种指令,完成各种网络管理功能。在模型中起到Client的作用。Agent定期收集和维护本地管理信息,响应Manager的命令或操作请求。另外,Agent也可以将自身系统中的发生的事件主动通知给Manager。可见,Agent在模型中担任Server的角色。MIB是被管对象的抽象集合,它规定了被管理设备须保存的数据项目和数据类型,以及每个数据项目所允许的操作等。Manager可通过SNMP协议对MIB进行操作,实现对被管理设备的监视和控制。SNMP协议提供了Manager和Agent之间交换管理信息的方法,信息按照SNMP消息的形式进行信息交换。SNMP每一个消息包括一个代表SNMP版本的版本号,一个用于消息认证的共同体名,以及5种中的一种协议数据单元(PDU),5种PDU对应如下5种SNMP协议报文的操作。GetRequest:Manager用来从Agent取得相关变量的值;GetNextRequest:Manager用来从Agent取2得相关变量的下一个变量的值;SetRequest:Manager用来设置Agent上的相关变量的值;GetResponse:Agent对Manager发送的应答信息;Trap:Agent在满足一定的触发条件时,向Manager报告异常事件。Manager通常在工作站或高性能PC实现,提供人机接口。Agent一般嵌入在被管理设备内部提供标准SNMP接口。随着微处理器技术、存储器技术,以及嵌入式操作系统的飞速发展,使得在交换机上嵌入Agent方便可行。在笔者为总参通信部(十五项目)开发的三层加固以太网交换机(以下简称以太网交换机)网管系统中,实现了嵌入式Agent。下面结合该系统,说明嵌入式Agent的设计与实现。2嵌入式Agent系统结构模型加固以太网交换机对外提供80个10/100M以太网接口、10个千兆光纤接口、2个SDSLRJ11接口。该交换机系统的交换结构采用交叉开关型,这样交换机硬件主要由交叉开关、交换芯片、CPU模块及SDSL模块四个部分组成,如图2所示。交叉开关采用Marvell公司的GT48304、三层10/100M以太网交换芯片和三层千兆交换芯片分别采用Marvell公司的GT48510和GT48520、CPU采用Motorola公司的MPC8260,配置512MRAM、SDSL模块芯片组采用GlobeSpan公司的OrionTM芯片组。加固以太网交换机采用了美国WindRiver公司的VxWorks实时操作系统,SNMPAgent的开发采用了该公司与VxWorks高度集成的WindNet开发工具。SNMPAgent位于系统的CPU模块上,实现交换模块和SDSL模块的统一管理,并通过系统以太网接口连接外部网管工作站Manager。图2交换机硬件系统结构及Agent系统结构模型3定义和扩充MIBIETF在RFC1155规定了SNMPMIB能够使用的数据类型及如何描述和命名MIB中的管理对象类。SNMPMIB是围绕管理对象进行组织的,每个对象从本质上讲是代表被管设备某一特性的变量,RFC1155规定SNMPMIB用ASN.1来命名所有的管理对象。ASN.1定义了一个树状的名字空间,每一对象的名字都反映了该对象在这一树中的位置,对应于树中的一个叶子对象。IETF在RFC1213定义了标准MIB-II。利用MIB-II,网络管理设备可以方便地获知被管理设备的进出、口流量,但不容易得到整个局域网的流量,也无法对日常通信量进行历史分析。RMONMIB的出现解决了该问题,IETF在RFC1271定义了RMONMIB。RMONMIB由一组统计数据、分析数据和诊断数据构成。在不改变SNMP协议的条件下,扩充了管理信息库MIB-II,增强了网络管理的功能。根据加固交换机的实际监视情况,我们有选择地实现了RMONMIB中如下几个组:(1)统计组(statistics):维护Agent监视的每一子网的基本使用和错误统计。(2)历史组(history):记录从统计组可得到的信息的周期性统计样本。(3)警报组(alarm):允许网管工作站人员为RMONAgent记录的任何计数或整数设置采样间隔和报警阈值。(4)主机组(host):包含关于连接到子网上的主机的各种流量的计数。(5)事件组(event):一个关于由RMONAgent产生的所有事件的表。对于加固以太网交换机MIB的构建除了尽量支持标准的MIB-II、RMONMIB外,根据交换机软硬件所能提供的网络管理能力,还创建了私有的MIB库。私有MIB库由以下几个组构成:(1)系统信息组(SysInfo):系统信息组主要描述交换机全局的只读寄存器信息。(2)系统配置组(Config):系统配置组主要描述交换机全局可读写的寄存器信息。(3)模块组(Module):描述每个交换模块的相关寄存器信息。(4)端口组(Port):描述每个交换端口的相关寄存器信息。(5)虚拟局域网组(VLAN):虚拟局域网组描述有关虚拟局域网的设置信息。以下以系统信息组(SysInfo),来说明MIB库的构建情况。系统信息组(SysInfo),主要包含以下对象:31)InfoBoardRevision:交换机主背板修订版本。2)InfoPeakBufferUsed:交换机中缓存的大小。3)InfoAddrCapacity:最多支持的MAC地址。4)InfoSelfTestFailed:系统自检信息。5)InfoLedNumber:交换机LED指示灯数量。6)InfoVisualIndicatorMode:LED指示灯显示模式。将确定的管理对象用ASN.1进行描述与组织,形成MIB。由于MIB文件是用ASN.1编写的ASCII文本文件,需要“翻译”成C/C++的数据结构才能用程序实现。本文采用了WindNetSNMP提供的MIBComplier工具,将用ASN.1描述的MIB文件编译为C语言格式源代码。4嵌入式Agent软件的设计与实现4.1嵌入式Agent的软件结构嵌入式Agent软件一般包括以下5个模块,如图3所示。图3嵌入式Agent软件结构(1)初始化模块初始化模块主要负责传输接口初始化、配置数据存取、以及MIB的初始化。VxWorks操作系统启动成功后,Agent软件开始运行,并启动初始化模块,初始化模块首先初始化MIB虚拟树,以供处理时查询;其次初始化UDP接口,打开应用层与传输层的接口;最后读取配置文件的数据,并根据这些数据设置代理进程和MIB的初始化变量。(2)Socket通信模块通信功能是Agent的重要功能之一.它实现SNMPAgent与SNMPManager之间的两个方向的通信。SNMPManager和SNMPAgent之间通过SNMP简单网络管理协议来实现通信,即SNMPoverTCP/IP。为了确保SNMP协议的简单性,一般选用UDP作为其传输层协议,每个SNMP报文必须能够在单个UDP数据报中传送。网络管理站通过协议交换SNMP报文来实现通信。除Trap-PDU使用端口162外,其它SNMP报文使用端口161进行通信。(3)Trap处理模块当Agent检测到某个特定的事件,便调用Trap处理模块构造一个Trap报文。Trap处理模块对内部格式的Trap报文信息进行ASN.1格式编码。通过套接字接口将SNMPTrap报文交给Socket通信处理模块然后发送给网络管理站。一般来说,交换机启动后,会向管理站发送一个系统启动的Trap报文,通知网络管理站代理已经启动。(4)PDU处理模块初始化模块初始化MIB库后,启动PDU处理模块,以备接收SNMP报文和构造SNMP响应报文。PDU处理模块按以下顺序处理SNMP报文。1)语法分析并转换成内部格式因为ASN.1格式允许使用变长字段,因此SNMP报文的字段不可能直接映射到代理进程代码的固定内部数据结构中。对SNMP报文进行语法分析,并将其转换成一个可用的内部数据结构,代理进程代码可以对该数据结构进行处理。2)鉴别和授权根据SNMP报文的共同体字段对其进行身份认证,若认证失败则将报文丢弃,认证通过交给MIB管理例程模块进行处理。3)构建响应报文在命令执行完以后,根据命令的执行情况构建响应报文,并将其转化为ASN.1格式,交给Socket通信模块传输到网络管理站。(5)MIB管理例程模块该模块利用某些查找算法查找各MIB对象并实现对各组MIB对象的Get和Set操作。在以太网交换机Agent软件设计过程中我们根据各个MIB变量的实际情况,将MIB库中的对象分为两种,实时性对象与非实时性对象。对于实时性对象,每次当查询到该对象,便通过调用字符设备驱动程序读取或设置交换机硬件上的相关信息;对于非实时性对象,在内存中保持一个静态变量值,该静态值在代理进程初始化时进行赋初值。若只读取该对象值则不需要读取硬件信息,只返回此静态变量值就够了。若设置该对象,即对它进行写操作,必须通过调用字符设备驱动程序设置硬件上的相关信息,同时相应的改变该静态变量值,以备以后读取时所用。44.2SNMPAgent软件开发及测试流程在VxWorks实时系统下利用Tornado