赵旨忠 贾玉洁
(1 中国电子科技集团第五十四研究所河北石家庄050081)
(2 郑州铁路局河南郑州450052)
(3 华东交通大学电气与电子工程学院江西南昌330013)
随着计算机网络飞速发展,网络的规模和数量庞大,网内设备种类繁多。而网络中的设备来自各个不同的厂家,如何管理这些设备就变得十分重要。文章内容就是介绍管理这些设备的标准网络管理协议。SNMP 协议基于client- server query- response 管理模式,管理进程和代理进程之间的通信可以有2 种方式。①管理进程向代理进程发出请求,询问一个具体的参数值;②代理进程主动向管理进程报告有某些重要的事件发生当然,管理进程除了可以向代理进程询问某些参数值以外,它还可以按要求改变代理进程的参数值。
vxW orks 操作系统包括了进程管理、存储管理、设备管理、文件系统管理、网络协议、及系统应用等几个部分。vx-W orks 只占用了很小的存储空间,并高度裁减,保证了系统能以较高的效率运行,体系的结构框图如图1 所示。由图可知,vxW orks 体系共有3 层,最底层是硬件系统(Hardware),包括网控制器,定时器,串口,SCSI 接口等。最高层是独立于硬件的软件,包括文件系统,I/O 系统,TCP/IP 协议栈,vxW orks 应用序等。中间层是与硬件相关的软件,包括W indernel,BSP(板级支持包),以及各种驱动等,它是连接硬件与高端软件的桥梁。
图1 vxW orks 结构图
基于TCP/IP 的网络管理包含以下部分。管理信息库包含所有代理进程的所有可被查询和修改的参数。RFC1213[M cC loghrie and Rose 1991] 定义了第2 版的M IB,叫做M IB- II;关于M IB 的一套公用的结构和表示符号,叫做管理信息结构(Structure of Management Information,SM I),这个在RFC1155[Rose and M cC loghrie 1990]中定义。
管理进程和代理进程之间的通信协议,叫做简单网络管理协议。在RFC1157[Case et al.1990]定义。SNMP 包括数据报交换的格式等。尽管可以在运输层采用各种各样的协议,但是在SNMP 中,用得最多的协议还是UDP。网络层用的较普遍是IP,基本的管理模式如图2 所示。
图2 SNMP 管理模型
上面提到的RFC 所定义的SNMP 叫做SNMPv1,或者就叫做SNMP。到1993年为止,又有一些新的关于SNM P 的RFC 发表。在这些RFC 中定义的SNMP 叫做第2 版SNMP(SNMP v2),关于管理进程和代理进程之间的交互信息,SNMP 定义了5 种报文:①get- request 操作:从代理进程处提取一个或多个参数值;②get- next- request 操作:从代理进程处提取一个或多个参数的下一个参数值;③set- request 操作:设置代理进程的一个或多个参数值;④get- response 操作:返回的一个或多个参数值,这个操作是由代理进程发出的,它是前面3 中操作的响应操作;⑤trap 操作:代理进程主动发出的报文,通知管理进程有某些事情发生。前面的3个操作是由管理进程向代理进程发出的,后面2个是代理进程发给管理进程的,如图3 所示。
图3 SNMP 操作图
代理软件所用的SNMP 协议是Epilogue 协议栈中Envoy(SNMP 协议),因为要在vxW orks 操作平台进行应用开发,必须把vxW orks 的W indNet 协议栈中的SNMP 协议卸载掉,避免产生冲突。管理者通过SNMP 协议和代理交互信息,Envoy把收到PDU 时解码后的得到具体数据和操作类型,然后根据O ID 在M IB 库找到对应的管理对象,调用系统内部的函数对系统内部逻辑对象进行查询和设置,系统把内部事件通过SNMP 的trap 操作主动发送给管理者。代理的应用程序负责协议数据和系统内部数据的转换。整个代理软件结构如图3所示。
图3 代理软件结构图
到宿主开发机(w indow s)上,注意软件包的版本和开发平台对应关系。按照以下命令来安装软件包(E 为光驱的盘符):
在源码目录里提供了几种对不同处理器的配置文件如:vxppc.cfg vxpentium.cfg 等,选取对应你平台配置文件,在此文件上做修改。比如:
根据SNMP 协议,管理端和代理端都要实现统一的M IB库。M IB 文件中定义了SNMP 协议访问对象信息。M IB 中每个对象都有名字,语法和编码3 种属性。语法确定用ASN.1 语法实现对象信息的编码,编码方式选用是BER 编码。SM I 经过发展有SM Iv1 和SM Iv2 2个版本,目前大部分,特别是私有M IB,更多地使用SM Iv2 来定义。M IB 文件是用ASN.1 语法来描述的,所以在制编写M IB 文件时,需要学习ASN.1 语法。这对开发者提高了难度,而且编写过程相当繁琐且容易出错。所以根据实际用途,本文设计开发基于MG- SOFT 可视化的M IB 文件编辑器(Visual M ib Builder)。M IB 文件可视化编辑器完全支持SM I v2 规范,采用可视化界面引导用户编写M IB文件,减少用户在编写过程中出错的可能,提高开发效率。
编写完M IB 文件后,通过编译工具m ibcompR.exe 把M IB 文件生成对应的C 程序代码。通过配置编译用的脚本文件生成以下代码文件(m ib.c、m ibleaf.h、numbers.txt、skel.h、stub.c、trap.c、trap.h)。trap.c 是针对SNMP 理软件产生trap 操作生成基本程序框架,用户编写每个管理对象应用代码,然后把应用代码嵌入到生成的基本程序中。Stub.c 文件针对GET、GET- NEXT、SET 三种操作生成的基本程序框架,在stub.c 为每个管理对象留有用户应用代码接口,用户只需把编写的代码嵌入到对应位置来支持GET、GET- NEXT、SET 操作。因为生成的基本程序包括了管理对象的字符串描述和相应数据结构名字,所以很容易查找对应每个管理对象生成代码在基本程序位置。下面以一个简单的实例来说明:
M IB 文件的内容:
修改生成的C 代码:
按照生成对象描述的数据结构名字STRUCT_sys,生成数据结构:
在生成的sys_get、sys_next 函数中需要实现返回对象实例地址的代码:sys_lookup 函数。
STRUCT_sys*data=sys_lookup();
在生成的sys_set 函数中存放对象实例的值的变量wan IpAddr。
在生成wanIpChange_trap 函数中需要实现为上报对象实例Awan IpAddr 赋值。
SNMP_Bind_IP_Address (trap_pkt,2, len_wan IpAddr,ID_wan IpAddr,Awan IpAddr);
sys_get、sys_g_next 函数对应GET 操作,需要用户实现sys_lookup 函数来返回被管理对象实例地址;sys_set 函数对应SET 操作,需要定义自己的变量wan IpAddr 来存放协议栈返回的管理对象实例值;wan IpAddrtrap 函数对应Trap 操作,用户需要调用SNMP_Create_Request2 函数来给trap_pkt 分配地址,同 步 给 Awan IpAddr 变 量 实 例 赋 值 , 调 用SNMP_Encode_Packet 对PDU 编码,通过SOCKET 发送给管理者。
应用程序通过调用Add_Node_From_Root 系统函数把管理对象加到协议M IB 树上;调用usrSnmpd Init 函数给代理配置IP 地址和启动SNMP 协议。代理程序启动后,在vxW orks的shell 下可以看到SNMP 协议的2个任务“tSnm pTm r”,“tSnmpd”。
介绍基于SNMP 协议网管代理软件管理模型和操作方式,在此基础上结合Epilogue Technology 公司的Envoy 协议包详细地描述了在嵌入式操作系统VxW orks 上网管代理软件开发过程。
[1]许慧民编.基于vxW orks 的嵌入式系统及实验[M].北京:北京邮电大学出版社,2006.
[2]孔祥营,伯桂枝编.嵌入式实时操作vxW orks 及其开发环境Tornado[M].北京:中国电力出版社,2001.
[3][美]斯大林编著健莲科技译.SNMP 网络管理[M].北京:中国电力出版社,2001.
[4][美]Mark A.M iller,P.E.著,晏明峰等译.用SNMP 管理互联网(第三版)[M].北京:中国水利水电出版社,2001.
[5]RFCll57,A Simple Network Management Protocol(SNMP)[S].1990.
[6]RFCl901,Introduction to Community·based SNMPv2[S].1996.