1. 基于SNMP的网络管理
网络设备的复杂化、异构化使得网络管理不可或缺。目前存在:公共管理信息服务/公共管理信息协议(CMIS/CMIP)、局域网个人管理协议(LMMP)、简单网络管理协议(SNMP)等几种标准的网络管理协议。简单网络管理协议(SNMP,Simple Network Management Protocol)以下简称SNMP,由于其简单与实用性,已经成为TCP/IP网络事实上的管理标准。现在所提的SNMP已经不仅仅是指一种管理协议,而是一种网络管理体系结构。
SNMP遵循标准的Client/Server结构,它的管理模型包括四个主要元素,即管理者(Manager),代理(Agent),管理信息库(MIB,Management Information Base)以及管理协议SNMP。SNMP网络管理模型如图1所示。
图1 SNMP网络管理模型
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取得相关变量的下一个变量的值;
ž SetRequest:Manager用来设置Agent上的相关变量的值;
ž GetResponse:Agent对Manager发送的应答信息;
ž Trap:Agent在满足一定的触发条件时,向Manager报告异常事件。
Manager通常在工作站或高性能PC实现,提供人机接口。Agent一般嵌入在被管理设备内部提供标准SNMP接口。随着微处理器技术、存储器技术,以及嵌入式操作系统的飞速发展,使得在交换机上嵌入Agent方便可行。
在笔者为总参通信部(十五项目)开发的三层加固以太网交换机(以下简称以太网交换机)网管系统中,实现了嵌入式 Agent。下面结合该系统,说明嵌入式Agent的设计与实现。
2 嵌入式 Agent系统结构模型
加固以太网交换机对外提供80个10/100M以太网接口、10个千兆光纤接口、2个SDSL RJ11接口。该交换机系统的交换结构采用交叉开关型,这样交换机硬件主要由交叉开关、交换芯片、CPU模块及SDSL模块四个部分组成,如图2所示。交叉开关采用Marvell公司的GT48304、三层10/100M以太网交换芯片和三层千兆交换芯片分别采用Marvell公司的GT48510和GT48520、 CPU采用Motorola公司的MPC8260,配置512M RAM、SDSL模块芯片组采用GlobeSpan公司的OrionTM芯片组。
加固以太网交换机采用了美国WindRiver公司的VxWorks实时操作系统,SNMP Agent的开发采用了该公司与VxWorks高度集成的WindNet开发工具。SNMP Agent 位于系统的CPU模块上,实现交换模块和SDSL模块的统一管理,并通过系统以太网接口连接外部网管工作站Manager。
图2 交换机硬件系统结构及Agent系统结构模型
3 定义和扩充MIB
IETF 在RFC1155 规定了SNMP MIB 能够使用的数据类型及如何描述和命名MIB中的管理对象类。SNMP MIB是围绕管理对象进行组织的,每个对象从本质上讲是代表被管设备某一特性的变量,RFC1155 规定SNMP MIB用ASN.1来命名所有的管理对象。ASN.1定义了一个树状的名字空间,每一对象的名字都反映了该对象在这一树中的位置,对应于树中的一个叶子对象。
IETF在RFC 1213 定义了标准MIB-II。利用MIB-II,网络管理设备可 以方便地获知被管理设备的进出、口流量,但不容易得到整个局域网的流量,也无法对日常通信量进行历史分析。RMON MIB的出现解决了该问题,IETF在RFC 1271 定义了RMON MIB 。RMON MIB由一组统计数据、分析数据和诊断数据构成。在不改变SNMP协议的条件下,扩充了管理信息库MIB-II,增强了网络管理的功能。根据加固交换机的实际监视情况,我们有选择地实现了RMON MIB中如下几个组:
(1) 统计组(statistics): 维护Agent监视的每一子网的基本使用和错误统计。
(2) 历史组(history): 记录从统计组可得到的信息的周期性统计样本。
(3) 警报组(alarm): 允许网管工作站人员为RMON Agent记录的任何计数或整数设置采样间隔和报警阈值。
(4) 主机组(host): 包含关于连接到子网上的主机的各种流量的计数。
(5) 事件组(event): 一个关于由RMON Agent产生的所有事件的表。
对于加固以太网交换机MIB的构建除了尽量支持标准的MIB-II、RMON MIB外,根据交换机软硬件所
(1) 系统信息组(SysInfo): 系统信息组主要描述交换机全局的只读寄存器信息。
(2) 系统配置组(Config): 系统配置组主要描述交换机全局可读写的寄存器信息。
(3) 模块组(Module): 描述每个交换模块的相关寄存器信息。
(4) 端口组(Port): 描述每个交换端口的相关寄存器信息。
(5) 虚拟局域网组(VLAN): 虚拟局域网组描述有关虚拟局域网的设置信息。
以下以系统信息组(SysInfo),来说明MIB库的构建情况。系统信息组(SysInfo),主要包含以下对象:
1) InfoBoardRevision:交换机主背板修订版本。
2) InfoPeakBufferUsed:交换机中缓存的大小。
3) InfoAddrCapacity:最多支持的MAC地址。
4) InfoSelfTestFailed:系统自检信息。
5) InfoLedNumber:交换机LED 指示灯数量。
6) InfoVisualIndicatorMode:LED指示灯显示模式。
将确定的管理对象用ASN.1进行描述与组织,形成MIB。由于MIB文件是用ASN.1编写的ASCII文本文件,需要“翻译”成C/C++的数据结构才能用程序实现。本文采用了WindNet SNMP提供的MIB Complier工具,将用ASN.1描述的MIB文件编译为C语言格式源代码。
4 嵌入式 Agent软件的设计与实现
4.1嵌入式 Agent的软件结构
嵌入式Agent软件一般包括以下5个模块,如图3所示。
图3 嵌入式Agent软件结构
(1) 初始化模块
初始化模块主要负责传输接口初始化、配置数据存取、以及MIB的初始化。VxWorks操作系统启动成功后,Agent软件开始运行,并启动初始化模块,初始化模块首先初始化MIB虚拟树,以供处理时查询;其次初始化UDP接口,打开应用层与传输层的接口;最后读取配置文件的数据,并根据这些数据设置代理进程和MIB的初始化变量。
(2) Socket通信模块
通信功能是Agent的重要功能之一.它实现SNMP Agent与SNMP Manager之间的两个方向的通信。SNMP Manager和SNMP Agent之间通过SNMP简单网络管理协议来实现通信,即SNMP over TCP/IP。为了确保SNMP协议的简单性,一般选用UDP作为其传输层协议,每个SNMP报文必须能够在单个UDP数据报中传送。网络管理站通过协议交换SNMP报文来实现通信。除Trap-PDU使用端口162外,其它SNMP报文使用端口161进行通信。
(3) Trap处理模块
当Agent检测到某个特定的事件,便调用Trap处理模块构造一个Trap报文。Trap处理模块对内部格式的Trap报文信息进行ASN.1格式编码。通过套接字接口将SNMP Trap报文交给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库中的对象分为两种,实时性对象与非实时性对象。对于实时性对象,每次当查询到该对象,便通过调用字符设备驱动程序读取或设置交换机硬件上的相关信息;对于非实时性对象,在内存中保持一个静态变量值,该静态值在代理进程初始化时进行赋初值。若只读取该对象值则不需要读取硬件信息,只返回此静态变量值就够了。若设置该对象,即对它进行
4.2 SNMP Agent软件开发及测试流程
在VxWorks实时系统下利用Tornado 综合开发工具和WindNet网管开发工具进行交换机SNMP Agent的开发和测试,可以分以下几个步骤进行。
(1) 为预先定义好的MIB对象编写管理操作例程;
(2) 编译生成Agent目标代码,启动目标机;
(3) 根据目标机具体芯片(MPC8260)配置宿主机环境;
(4) 配置目标服务器,利用CrossWind图形化调试工具进行应用程序调试;
(5) 调试通过后,利用HP公司的SNMP++ Browser网络管理软件对交换机SNMP Agent进行测试,通过它对MIB变量进行查询、遍历、设置等操作。
5 结束语
由于SNMP的简单性与实用性,已经成为TCP/IP网络事实上的管理标准。目前越来越多的网络产品直接提供了SNMP接口。笔者结合三层加固以太网交换机网络管理系统,在VxWorks 嵌入式操作系统平台上,利用WindNet SNMP软件包实现了完整的SNMP Agent。它支持MIB-II、私有MIB、RMON MIB,为网络管理站提供了交换机内部丰富的原始管理数据,该交换机现己提交总参通信部进行军队试用。本加固以太网交换机嵌入式Agent的开发和测试方法对于开发路由器、DSL Modem等其它网络产品SNMP Agent同样具有参考价值。
参考文献
1. IETF RFC 1157, Simple Network Management Protocol (SNMP),1990.1
2. IETF RFC 1905, Protocol Operations for Version 2 of the Simple Network
Management Protocol,1996.1
3. Vxworks_net_programmers_guide, WindRiver System,1999.5
4. GT-48310 Datasheet. Galileo Technology, 1998
5. 芩贤道,安常青. 网络管理协议及应用开发. 清华大学出版社,1998.7
6. 路晓村,徐宏,王泰东 等译.嵌入式系统TCP/IP应用层协议,2003.4