基于VxWorks嵌入式操作系统的SNMP应用
1. 引言
简单网络管理协议(SNMP)已经成为目前网络管理方面事实上的标准。同命名一样,它的操作非常简单易行,所以引起了越来越多的商家的注意,在计算机、通信和自动化等各个领域都发挥了很大的作用。同时,VxWorks嵌入式操作系统又由于其出色的实时性和稳定性受到业界的广泛的好评,所以如何实现在VxWorks系统上通过SNMP协议对设备进行管理是我们面临的一个很重要的课题。
2. SNMP及系统简介
VxWorks操作系统是美国WindRiver公司设计开发的一种嵌入式实时操作系统,具有以下特点:
1.高效的代码和良好的可裁剪性采用微内核结构,内核可裁减至几十B 字节,对于资源相对紧张的嵌入式系统具有非常好的适应性。
2.丰富的接口资源和大量的第三方产品为VxWorks的广泛应用奠定了坚实的基础
3.良好的移植性,可以移植到不同的处理器平台,包括PPC、ARM和X86等不同的处理器。
4.良好的开发环境,非常好的开发环境Tornado并在不断升级
WindNet SNMP代理将工业标准网络管理引入实时嵌入系统中,实现了对嵌入式设备管理的接口。应用上只需配置其初始化过程和应用系统提供的部分接口就可以方便实现对嵌入式设备的管理,同时支持多种SNMP版本的支持,现在已经可以支持SNMPv3最高版本。SNMP的工作过程可以如图1所示:
图 1 SNMP 基本框架
3. 处理流程
3.1 初始化过程
Vxworks是通过调用usrSnmpInit( )函数来启动SNMP服务的,所以对于VxWorks微内核,一定要包含usrSnmpInit( )函数。它然后创建任务名为tSnmpd的任务,这个任务的函数入口点为snmpIoMain( )。在库snmpIoLib.c中提供了该函数的部分源代码,用户可以加入自己的代码,比如读某些配置文件和私有的配置信息等。snmpIoMain( )然后调用snmpdInitFinish( )函数来完成整个代理的初始化过程。然后snmpInitFinish( )通过snmpIoTrapSend( )函数发送coldStart的trap,表示整个初始化过程完毕。这里需要注意的是所有其他的初始化和配置工作一定要在snmpInitFinish( )调用之前,然后系统回到snmpIoMain( )函数体,开始和管理站之间的收发包过程。
3.2 数据包处理
数据包的处理过程是通过snmpIoBody( )的这个守护进程开始的,它的主要工作是监视 UDP 161端口,如果管理站有请求发送过来,它把请求发给snmpdPktProcess( )来处理,通过snmpIoCommunityValidate( )检查共同体的名称是否正确。然后调用用户自己的程序完成请求,对于SET操作,还要调用snmpIoWrite( )来完成整个操作。这里要注意的是用户要提供自己的代码完成请求,比如说对某一个变量的读取,一定要给出对应的具体位置,这部分可以通过修改snmpdLib.c中的函数来完成。
相关文章
- 2024-11-05Z箍缩实验装置高压低抖动Marx发生器
- 2022-11-15智能型红外遥控器的设计应用
- 2024-09-19双制冷温度双工质吸收制冷系统Ⅱ的模拟
- 2024-02-27超声检测中双孔法调节扫描速度的应用
- 2023-08-16基于PIC16F877的红外测距系统
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。