首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

基于ReWorks嵌入式操作系统的SNMP协议实现

作者:陈杰 谷世红 来源:电子技术与软件工程

摘 要

利用国产ReWorks操作系统最新的4.7版本中新加入的多协议栈支持,在嵌入式软件平台上实现了标准的SNMP协议栈的开发。并对ReWorks中SNMP协议实现的源代码进行了分析,结合其开发软件Rede,提出了自定义SNMP节点的添加方法。为嵌入式网络设备上网络管理软件的开发提供了借鉴经验。

【关键词】ReWorks SNMP 嵌入式操作系统

1 应用背景

随着信息技术的飞速发展,各种智能设备越来越广泛的应用到了我们的日常工作和生活之中,而大量智能设备的核心就是嵌入式操作系统。目前,嵌入式操作系统领域常见的操作系统有Linux操作系统、风河公司的VxWorks操作系统和加拿大QSSL公司的微内核的QNX操作系统。Linux操作系统虽开源且免费,但版本复杂,难以提供技术支持;VxWorks、QNX操作系统开发软件价格昂贵,且在某些领域涉及到国家信息安全问题而备受诟病;而由中国电子科技集团公司第三十二研究所自主研发的,拥有国内自主知识产权的实时嵌入式操作系统ReWorks,以微内核、高实时性和安全性等方面的优点,越来越凸显出其独特的优势。

2 ReWorks操作系统简介

ReWorks系统采用微内核体系结构和组件技术实现,能根据应用需要对操作系统内核进行配置、裁剪、扩展与定制,具备较强的伸缩能力。

最新版的ReWorks 4.7采用了全新的网络协议栈,在提供常见的基本的网络协议支持的基础上,基于MIB-II标准实现了网络管理信息库,可以通过加载系统提供的SNMP动态链接库,提供对标准SNMPv1/2/3的支持,实现对网络设备参数查询管理。

3 标准SNMP协议栈实现方法

这里,以一个在PowerPC8270上的实际工程test8270为例,利用ReWorks自带的开发工具Rede上的开发过程,来说明标准SNMP协议的实现方法。

新版本的网络协议栈由基本库文件libnetservice.a提供,并通过在工程中加载动态链接库libipsnmp.a和libsnmp.a实现SNMP协议,这几个库文件的作用如下:

(1)libnetservice.a:协议栈的基本库,提供网络层基本协议和编程接口支持,是实现SNMP协议栈必须包含的基础库,其中默认包含基本的FTP及TELNET协议支持;

(2)libsnmp.a:snmp协议的核心库,控制MIB节点树的整体描述和SNMP协议核心功能实现,在使用标准SNMP节点情况下,该库无需重新编译。如果有用户自定义节点时,需由修改工程snmp内的部分配置文件并重新编译得到;

(3)libipsnmp.a:snmp协议应用库,包含了snmp协议默认一系列节点实现的描述,如果有用户自定义节点也需要添加到该库中进行编译,该库由工程ipsnmp编译得到;

为了在实际工程中加载以上库文件,新建了一个名为netserver_config 的“资源组件工程”,将libsnmp.a和libipsnmp.a文件集中拷贝到netserver_config工程的lib文件夹内,并注册一个新组件SNMP到资源组件配置文件netservice_config.rcpcfg内。生成的资源组件如图1(a)所示。

随后,该资源组件导入实际工程test8270内进行网络配置,通过勾选SNMP模块,即可启动SNMP网络协议栈,如上图1(b)所示。未经修改的SNMP库只能提供MIB库中标准的网络设备参数查询和设置,通常情况下,对于特定应用,都需要添加用户节点,以实现私有的SNMP节点代理。

4 定义SNMP节点的添加

如图2-图5所示。

为了实现自定义节点的添加,需要添加以下几个文件:test_mib.c(节点结构描述文件)、test_mth.c(节点操作函数实现文件)、test_leaf.h(叶子节点宏定义文件)、test_hand.h(节点操作函数声明文件)。这些文件的格式需要按照标准MIB库的定义方式来编写,并将它们添加到文件夹{REDE_HOME} \workspace\ipsnmp\wrsnmp\src下。具体增加自定义节点的步骤如下:

(1)在test_mib.c开头新添以下语句,该语句的目的是要定义一个新的OID值来描述自定义的根节点n_test。该根节点在MIB库内挂接位置由指定的该OID值确定。

(2)指定n_test根节点的属性为REPLACEABLE;

(3)修改MIB库配置文件nvhard.c,使得新节点可以挂到指定位置1.7(增添如下代码)。该文件位于:{REDE_HOME} \workspace\snmp\wrn\wm\snmp\vxagent\base下,修改完成后,编译snmp工程 ;

(4)在文件wrsnmp_config.c(位于{REDE_HOME}\workspace\ipsnmp\wrsnmp\config)中完成新添节点的初始化注册,将其添加到MIB库内。在该文件中添加以下面的代码,并编译ipsnmp工程。

(5)编译完成后需要同步更新资源组件库内的动态链接库文件libsnmp.a和libipsnmp.a,并再次编译工程文件test8270,完成自定义节点的添加。

5 MP协议栈测试

为了测试自定义节点添加结果,使用惠普公司提供的SNMP测试软件SNMP++,对该应用软件进行查询和设置测试,查询设置自定节点,测试结果如图6所示。

测试结果表明,自定义的节点1.7.1.3.1.1.0和1.7.1.1.1.1.0可以正常查询,1.7.2.1.36.0节点可正常设置,从而验证了自定义节点添加正确,SNMP协议交互正常。

6 使用第三方的SNMP节点生成工具

如果用户应用需要添加大量自定义SNMP节点,通过手动添加一个个节点非常不方便,遗憾的是,目前Rede尚不支持MIB库文件的编译生成,但目前商业上的一些SNMP代理的开发工具,如VxWorks操作系统就附带有较好的MIB库编译工具。由于用于产生自定义节点的几个描述文件和头文件都必须遵循MIB库的书写标准生成,所以用户完全可以利用这些专用MIB库编译工具所产生输出文件用于ReWorks系统下的自定义节点生成。

7 结束语

国产的ReWorks操作系统在实时性、安全性、易用性和可裁剪性上表现优异,在强调软件自主可控的今天,是政府和军用部门嵌入式软件研制和升级的一个很好的平台选择。4.7版本上包括SNMP在内的多种协议栈支持的加入,更是满足了大量网络设备研制的需求,大大拓宽了其应用前景。

参考文献

[1]牟杰,SNMP网管系统中MIB编译的实现与应用[D].上海交通大学,2012.

作者简介

陈杰(1982-),男,重庆市人。研究生学历。现为中国电子科技集团公司第五十四研究所工程师。主要研究方向为卫星通信技术、计算机网络技术。

作者单位

1.中国电子科技集团公司第五十四研究所 河北省石家庄市 050081

2.石家庄信息工程职业学院 河北省石家庄市 050000