- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SNMP代理的设计与实现
SNMP代理的设计与实现 1. SNMP代理模块工作流程 SNMP代理模块包括6个子模块,如图2所示。 SNMP代理是一个单任务,采用先进先出队列,一次处理一个PDU。代理从管理站接收PDU后,对其进行语法分析,将其转换成一个可用的内部数据结构,将MIB变量映射成本地变量,判断请求的MIB对象是否在代理的MIB树中,如果存在,调用对应的MIB变量处理例程来处理,命令执行完之后,再将内部数据格式转换回ASN.1格式创建响应PDU,调用Socket的sendto()函数将它发送给管理站。 (1)初始化 SNMP代理在启动时通过调用usrSnmpInit( )产生一个任务tSnmpd,进入任务的主要入口函数是snmpIoMain( )。在初始化工作结束后,snmpIoMain( )调用snmpdInitFinish( ),并由snmpdInitFinish( )向管理站发送trap,通知它代理已经开始工作,然后进入消息处理循环,如图3所示。 (2)消息处理循环 首先支持例程snmpIoBody( )在UDP端口161收听消息,收到消息后交给snmpdPktProcess()处理,snmpdPktProcess( )将消息传给snmpIoCommunityValidate( ),snmpIoCommunityValidate( )验证共同体名是否合法。共同体名的系统缺省设置为:对于具有共同体名pub或public的管理站只能执行get操作,而具有共同体名priv或private的管理站可以进行set操作。通过共同体名验证后,代理调用用户定义的MIB访问函数,并将其所提供的信息构成pdu,交给snmpIoWrite( )返回给管理站。 (3) 退出代理程序 当用户需要停止snmp代理,调用snmpdExit( ),由它调用 MIB 中止例程并且释放所有代理的资源,之后所有的SNMP 服务都不再被支持。 开发SNMP代理主要包括两方面的工作即MIB的转化和扩展MIB,以下将分别介绍。 2. MIB的转化 由于MIB都是用ASN.1编写的,需要将其转化成C/C++的数据结构,才能用程序实现。对MIB文文件的转化工作是费时而且易错的,所幸的是WindNet SNMPv1/v2软件包中提供的mibcomp可以将MIB编译成c代码,并将每一个MIB变量与其相应的读写例程联系在一起。具体操作过程如下。 (1)检查MIB中是否存在错误 这一步是对要转化的MIB(如example.mib)进行语法检查,标准MIB文件一般都定义得很规范,语法上很少出错,而对于自定义的MIB来说,这一步很重要,它可以帮助MIB编写者检查一些疏忽的语法错误。它使用的命令如下。mibcomp -check example.mib (2)创建MIB树 每个代理都有一棵自己支持的MIB树,如果管理站所要查询或设置的变量不在该MIB树内,代理向管理站返回noSuchName 的错误信息。 在创建MIB树的过程中,同时在MIB树中每个叶子结点中赋予get、set等操作的函数指针,使用如下命令生成c代码文件exampleTree.c。 mibcomp -o exampleTree.c -stub example.mib 使用如下命令生成头文件exampleLeaf.h,它是用来定义每个叶子值的。 mibcomp -o exampleLeaf.h -leaf example.mib (3)生成例程函数的头文件及c代码文件 通过使用mibcomp的-skel和-stub两个参数可以分别生成例程函数相应的用作函数声明的头文件和例程函数的c代码文件。但是实际开发中发现生成c代码不能适用要求,需要自己重新编写。 使用如下命令生成头文件exampleHead.h。 mibcomp -o exampleHead.h - skel example.mib 使用如下命令生成c文件exampleC.c。 mibcomp -o exampleC.c - stub example.mib (4)为管理站创建.rt文件 .rt文件是用来向管理站说明代理的MIB树,通过如下命令生成。 mibcomp -o exampleMib.rt -readtree. example.mib 至此,就基本上完成了MIB的转化工作。 3.扩展MIB的实现 Vxworks已经完成对MIB-II的实现,并支持扩展MIB的实现。对MIB的扩展实际上是为网络设备所支持的各MIB编写访问函数,同时根据自己的需要对MIB-II的相关组重新编写,具体过程如下。 首先,利用MIB编译器可以把用ASN.1语言描写
您可能关注的文档
- PQRASME要求填写的焊接工艺评定报告.doc
- Practical Automatic Determination of Causal Relationships in Software Execution Traces.pdf
- Prediction of Physical, Color, and Sensory Characteristics of Broiler Breasts by VisibleNea.pdf
- Precision Spectroscopy of Pionic Atoms From Pion Mass Evaluation to Tests of Chiral Perturb.pdf
- Predictive Evaluation of Econometric Forecasting Models in Commodity Futures Markets.pdf
- Predicting the Performance of Randomized Parallel Search An Application to Robot Motion Pla.pdf
- PRELIMINARY VERSION A Design Diversity Metric and Analysis of Redundant Systems.pdf
- Present and NearFuture Reflected Light Searches for CloseIn Planets.pdf
- prepared for a special issue of abour Economics,.pdf
- Present and Future Electroweak Precision Measurements and the Indirect Determination of the.pdf
文档评论(0)