在便携式设备中实现SNMP协议_第1页
在便携式设备中实现SNMP协议_第2页
在便携式设备中实现SNMP协议_第3页
在便携式设备中实现SNMP协议_第4页
在便携式设备中实现SNMP协议_第5页
已阅读5页,还剩2页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在便携式设备中实现SNM协议一、引言现有的绝大部分SNM协议开发工具都是基于windows平台 的 , 而往往在某些便携式设备上面无法使用基于 windows 平台的 嵌入式开发工具 ,在嵌入式操作系统领域 , 最为主流的商用软件 就是由美国风河公司 (Wind River) 开发的 vxWorks 嵌入式操作系 统。该操作系统是一个高性能系统 , 支持广泛的网络通信协议 , 并且可以根据用户需求进行裁减的实时操作系统 , 尤其已成功应 用于火星探测车和爱国者导弹等高科技产品中。在新版本的 vxWorks 集成开发工具中提供了一个名为 Wind RiverCL I-Web-MIBway Too

2、ls的专门用于开发 SNM协议的开发工具, 使用该工具可以生成在 vxWorks操作系统中开发的SNM协议的 原代码,如mib.c,tub.c 等等的C代码文件,十分方便。然而该工 具只能开发SNM协议中的代理端(agent),并没有开发SNM协议 中管理端 (manager) 的工具。本文详细介绍了一种跨嵌入式操作 系统平台的SNM协议软件开发工具以及如何使用该开发工具实 现在基于 vxWorks 操作系统平台的便携式设备上开发管理代理 端(agent) 的方法。二、软件设计工具首先介绍这种跨操作系统平台的SNM协议软件开发工具:AdventNet Agent Toolkit C Editi

3、on。它可以在诸如 vxWorks、 Linux、WindowsCE等各种嵌入式操作系统以及 Windows操作系 统上开发SNM助、议的工具软件。另外,该工具软件有免费试用版 用户可在其官方网站上下载试用。它是一个用于快速建立基于 ANSI C、C+勺代理的原型创建已开发工具,特别适用于设备机系 统管理。开发的代理是模块化的、可移植的和可定制的。开发工 具包可以通过多种协议(SNMR HTTR TL1和其他协议)访问被称 为多协议代理(MPA)的共通部分。同时,它也对对立的SNMP代理 (SSA)和TL1代理(STA)提供支持。组织结构如图1所示:那么,怎样使用该开发工具在基于vxWorks

4、操作系统的便携式设备上开发软件从而控制SNM协议中的代理端(agent)呢?首先要分清两个概念:(1)管理端(manager)和代理端(agent)的 关系。 (2) 主代理 (master agent) 和子代理 (sub agent) 的关系。 管理端 (manager) 、主代理 (master agent) 、子代理 (sub agent) 的关系可以用图 2来表示:从图2可以看出,管理端(manager)是整个SNM协议结构的 最顶端,它发出各种SNMP旨令,如set、get、getbulk等。当主 代理(master age nt) 收到管理端(ma nager)发给它的SNM帧后

5、, 解析该帧,通过该SNMF帧中包含的操作节点识别号(OID)检查该 帧是否是对它自己 ( 主代理 ) 的节点进行的操作。如果是 , 则在主 代理进行相应的操作;如果不是,则主代理将该SNMF帧中包含的 要操作的节点识别号 (OID) 与保存在它的各个子代理表 (Proxy Table)中的子代理的节点识别号(OID)进行一一比对,如果有相同的节点识别号则将该SNMF帧转发给子代理,子代理在收到该 SNM帧后再进行相应的处理。清楚了三者的关系后就要具体阐 述如何实现在便携式设备上管理代理端 (agent) 。由于 AdventNet Agent Toolkit C Edition 没有直接在

6、vxWorks、Linux、WindowsCE等各种嵌入式操作系统上开发管理端(ma nager)的工具,所以就使用了主代理(master age nt)和子代理(sub age nt)之间也是可以基于 SNM助、议进行通信的原理。AdventNet Agent Toolkit C (master agent) 和它的子代(master agent) 时, 使用开发软件中的三、软件设计方法下面的内容具体描述了如何在Edition 平台上开发以及配置主代理理表 (Proxy Table) 。当便携式设备作为一个主代理AdventNet Agent Toolkit C EditionAgentCo

7、mpiler 开发工具来配置主代理的各项参数1. 首先打开菜单栏中的 File, 选择 New Project, 这时弹出 Project 对话框 , 选择 Standalone SNMP, 并且设置相应的工程路 径。2. 然后打开菜单栏中的 Settings-Project Settings 对话框,在对话框的左端有 1个树型目录 , 鼠标左键单击Settings-General, 随即在对话框的右侧出现 SettingsGeneral 参数设置界面 , 在 General-OS 下拉菜单中选择 VxWorks作为主代理的开发环境 ,General-Debug Level 下拉菜单中可选 择

8、任意 1种作为开发者调试时串口打印的调试信息 ,None: 表示 串口无任何打印调试信息;Error:表示调试SNM协议时如果出 错则打印相应的信息;Debug:表示调试SNM协议时使用了哪些 函数;Trace:则在串口打印Error和Debug表示的相应信息。其 他的选项则使用系统默认的设置 , 不用更改。3. 在 Protocols-SNMP-General 中选中 Generate Agent with Proxy 、Proxy Table 这 2 个复选框 , 其中的 Generate Agent with Proxy 复选框表示是否在这个 SNMP代理(Agent)上装载子 代理,一

9、旦选中了该复选框则这个SNMP代理 (Agent)就变成了 1个主代理(master age nt);否则,这只是1个普通的SNMP代理(Agent)。Proxy Table复选框表示是否在这个 SNMF代理(Agent) 上装载子代理表 , 一旦选中了该复选框则可以在Protocols-SNMP-Proxy-ProxyTable 中配置子代理表 (proxy table) 。在 Proxy ProxyTabel 界面中可以添加、更改、删除子 代理表。系统默认有 1 个子代理表 , 单击该表 , 选择 Modify 按钮 则出现 1 张子代理的表格。该表格如图 3:其中的 oid 表示子代理的

10、节点识别号 (OID),Host 表示子代 理的IP地址,Port Number表示子代理与主代理的通信端口 ,在 vxWorks 嵌入式操作系统中所有凡是涉及通信端口的一律都是 161,Versi on表示主代理和子代理之间通信的SNMF协议的版本是SNMP/1还是SNMFV2,Community表示表示主代理和子代理之 间的通信方式是私有的 (private) 还是公开的 (public), 其余选项使用系统默认的值即可需要注意一点:主代理上可以有自己的 MIB库,也可以 没有任何MIB库。做完上述步骤后就可以使用 AgentCompiler 来生成具体的C代码实现主代理的功能了。具体步骤

11、如下:(1) 在 AgentCompiler 的 Build 下拉菜单中选择 GenerateSource则AgentCompiler开始生成C代码,生成完C代码后将 (AdventNet 安装路径相应的工程路径 , 在新建的工程中搜索出所有的 *.c,*.h 文件 , 然后将这些 文件拷贝到vxWorks操作系统的工程中去,在vxWorks操作系统 的开发环境 Workbench中编译vxWorks的相应工程,生成vxWorks 的内核,启动便携式设备下载vxWorks内核,待vxWorks内核正常 启动后在便携式设备的调试串口(即target shell) 敲入:spStartAge nt

12、即可启动主代理的所有 SNM处理程序。(2) 将(AdventNet 安装路径)Adve ntNetC-Age ntexampless nmpma nager_appssnmpoperations 中的 manageroper.c 文件拷贝到 vxWorks 操作系统的工程中去 , 重新编译 vxWorks 的相应工程 , 生成 vxWorks的内核,启动便携式设备下载 vxWorks内核,待vxWorks 内核正常启动后在便携式设备的调试串口 (即 target shell) 敲 入:sp StartAgent,这条指令的作用是在vxWorks操作系统的用户应用程序中启动SNMP弋理端(ag

13、ent)任务,只有启动了该任务 用户才可以使用SNMPI作命令:查询(get)、向下查询 (getnext) 、批查询 (getbulk) 、设置 (set) 等。四、功能设计验证以使用 manageroper.c 文件中的 ManagerExample() 函数来 对子代理的节点进行设置 (set) 命令为例 , 可以将 manageroper.c 文件中的源代码进行如下修改 , 从而方便的在程序中使用设置 (set) 命令 :1. 为了能修改INT(整型)类的MIB库叶子节点的值,将原来 的 void ManagerExample() 函数改为 STATUS TermSnmpSetInt(

14、CHAR *EquipIP,OID *varName,INT32 SetVal,INT8 ScalarTable) 函数, 其中的 EquipIP 是一个指向待 访问设备 IP 地址的字符串指针 ,varName 是一个指向待访问设备 MIB库叶子节点在MIB库中位置的字符串指针,SetVal是待赋给 该叶子节点的值 ,ScalarTable 是为了区分该叶子节点是否存在 于一个TABLE(MIB库中的某个表)中的标示。2. 将原来的 void ManagerExample() 函数中的 varBindPtr = CreateAVarBind(varName, varNameLen, ASN_

15、GAUGE,&value, _Sizeof(value) 行修改为 varBindPtr= CreateAVarBind(varName, varNameLen, ASN_INTEGER,&value, _Sizeof(value),其实就是将访问叶子节点的类型指定为ASNNTEGEf即整型),然后使用 CreateSnmpPdu(SNMP_VERSION_2c, private, SNMP_MSG_SET,1, 0, 0, varBindVect) 函数就可以向指定 IP 地址设备 MIB 库中 的相应叶子节点进行赋值了。同时 , 为了验证是否已对该叶子节 点正确的赋值,应该通过其他的PC端MIB库访问工具来读取该值 从而验证之(AdventNet Agent Toolkit C Edition自带有 PC端MIB库访问工具,使用起来也很方便)。五、结语本文详细论述了如何在基于 vxWorks 操作系统平台的便携 式设备上开发类似于管理端

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论