一种在分布式构成设备上实现snmp代理的方法和装置的制作方法

文档序号:7718977阅读:287来源:国知局
专利名称:一种在分布式构成设备上实现snmp代理的方法和装置的制作方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种在分布式构成设备上实现SNMP代 理的方法和装置。
背景技术
—个SNMP(简单网络管理协议,Simple Network Management Protocol)系统的 构成通常如图1所示,包括以下元素 数个节点,每个节点内存在一个SNMP代理,该实体包含了响应命令和产生通告的 应用程序;在一些技术文档中将整个包含SNMP代理的节点称为SNMP代理,在本文中则是指 节点内部完成SNMP代理功能的软件模块; 至少一个管理者NMS (Network Management Station),该实体包含了产生命令和/ 或接收通告的应用程序。 —个管理协议,即SNMP协议,用于在NMS与代理之间传输管理信息。在SNMP体系 中,被管理对象按照SMI (Structure of Management Information,管理信息结构)标准的 要求进行定义,这种信息结构主要特点可概括如下 整个管理对象体系以分级、树形结构组织,被管理对象是树形结构的叶子节点,被 管理对象以字典序的方式检索及遍历。 定义各类被管理对象的数据库称为MIB (Management Information Base,管理信 息库),存放这些信息的文件称为MIB文件。在MIB文件中,被管理对象按其所属功能被划 分为各个模块(MODULE),这里的模块不是指软件模块,两者没有必然的联系,通常被管理对 象在软件模块中具备一个内部的等效值,对被管理对象的操作请求在软件模块中转换为对 其等效值的操作。 如图2所示,在现有技术中SNMP代理与被管理对象之间接口的构造方法,SNMP节
点处理NMS操作请求具体包括步骤 步骤201,接收到输入的SNMP请求; 步骤202,进行语法分析并转换成内部格式; 步骤203,将MIB变量映射到本地等效值; 步骤204,执行请求的本地获取/存储; 步骤205,将应答转换成外部格式; 步骤206,发送响应给NMS。 上述步骤中,步骤(4)由被管理对象所在的模块完成,其它过程都由SNMP代理模 块完成。由于SNMP所管理的对象分布于系统的各个模块中,如何处理SNMP代理模块与这 些模块的关系,是SNMP代理设计的一个技术重点,在现有技术中具体的实现方式包括
A、分布式构成的SNMP节点; 如图3所示,分布式构成的设备通常包括以下构件 —个主控板,负责整台设备的协同工作,对外提供管理接口,例如,处理人机交互的命令,SNMP方式中的报文的接收/发送; 多个受控板,每个受控板是一个较为独立的计算机子系统,负责设备的业务部分, 这些业务本身需要对外提供管理接口; 主控制板与受控板之间具备管理通道,主控制板的控制请求及响应通过该管理通 道传输。 在分布式构成的设备中,由于被管理模块可能分布于多个受控板上,它们的地址 空间是隔离的,不能再采用本地函数调用来完成SNMP的操作请求,因此上述的MIB编译构 造软件的方法不能再直接应用。 针对上述情况,现有解决方法通常是将SNMP代理分级在主控制板上实现主代 理,受控板上实现子代理,由主代理负责SNMP消息的分发与汇聚。例如,标准化的SMUX协 议(SNMP multiplexing protocol, SNMP多路复用协议,RFC1227)和AgentX协议(Agent Extensibility Protocol,代理扩展协议,RFC2741)采用的都是这种模型。以下以SMUX为 例介绍这种模型的工作原理 如图4所示,在节点内部划分出主代理和子代理,SNMP节点处理NMS操作请求的 步骤包括 步骤401,子代理启动后,将它负责管理的MIB子树注册到主代理上; 步骤402,主代理在接收到来自NMS的SNMP管理请求后,对管理请求进行解析,判
断被管理对象的MIB子树位置,将管理请求转发给管理该MIB子树的子代理; 如果一个SNMP消息中包含了发往多个子代理的操作请求,则处理更加复杂主
代理需要将消息按子树拆解后发送给相应的子代理,还要将各子代理的响应合成为一个应
答; 步骤403,子代理在接收到主代理转发过来的SNMP管理请求以后,在完成处理后, 将应答发回给主代理; 步骤404,主代理将应答中继发送给NMS ; 这类基于多级代理的分布式方案主要缺点在于方案的复杂程度较高,实现工作量 较大。如果分布式设备内部采用多级代理方案时,有以下困难 主控板上的主代理需要知道子代理的分布,解析发往子代理的请求以及子代理发 回的应答。在处理需要跨越多个子代理的操作请求时,协同工作就更加复杂,例如,一个 SNMP消息中包含了对多个子代理的请求时;又如,当get-next操作从一个子树跨越到另一 个子树时,都需要主代理根据MIB树的构成及子代理的返回结果进行进一步处理;
由于主控板本地也有被管理模块,主代理的构成有两种选择本地的被管理模块 内也实现子代理,则主代理不需要直接与被管理模块交互;或者主代理包含传统代理的功 能。无论哪一种方法,无疑都使主控板的SNMP功能实现比传统代理的要复杂。
在每个受控板上都需要实现SNMP子代理的功能;主控板与受控板有部分功能是 冗余的,如消息解析、安全控制等; 限定了主控板与受控板之间采用的通信方式,例如SNMP SMUX要使用TCP链接。

发明内容
本发明提供一种在分布式构成设备上实现SNMP代理的方法和装置,用于克服现
5有技术中SNMP多级代理复杂程度高,实现工作量较大的问题。 —种在分布式构成设备上实现SNMP代理节点,包括主控板和受控板,所述主控板 中包括SNMP代理和RPC客户机;所述受控板中包括被管理对象和RPC服务器,其中,
SNMP代理,用于接收管理者NMS发送来的简单网络管理协议SNMP消息,并将该 SNMP消息中的操作请求转换为过程调用RPC请求,将该过程调用RPC请求传递给RPC客户 机,并将RPC客户机发送来的返回值解释为SNMP操作结果,并将该SNMP操作结果封装于 SNMP应答消息中发回给所述NMS ; RPC客户机,用于使用RPC通信将所述RPC请求发送到RPC服务器,并接收RPC请 求的返回值; 所述RPC服务器,用于将RPC请求转换为对本地管理对象的函数调用,向所述被管 理对象发送函数调用请求,并将所述函数调用的返回值传递回所述RPC客户机;
被管理对象,用于提供完成管理请求的函数调用接口,接收所述RPC服务器发送 来的调用请求,并将调用结果返回给所述RPC服务器。 —种在分布式构成设备上实现SNMP代理的方法,其特征在于,包括
当主控板中的SNMP代理接收到管理者NMS发送的简单网络管理协议SNMP消息 时,将所述SNMP消息转换为本地数据格式,并将该SNMP消息中的操作请求转换为过程调用 RPC请求,传递给该主控板上设置的RPC客户机; RPC客户机使用RPC通信将RPC请求发送到受控板上的RPC服务器; 受控板上的RPC服务器将RPC请求转换为对本地管理对象的函数调用,并调用所
述被管理模块完成管理请求操作,将过程调用的返回值传递回主控板; 所述SNMP代理接收到所述返回值后,将该返回值解释为SNMP操作结果,并将该
SNMP操作结果封装于SNMP应答消息中返回给NMS。 本发明实施例所提供的方法和装置,将SNMP体系与ONC RPC体系对接,利用ONC RPC来传递主控板与受控板之间的管理操作请求。由ONC RPC来屏蔽远程过程调用与本地 过程调用的差异,使得SNMP代理模块和被管理模块可以仍按照本地调用的方式构造,避免 构造复杂的多级SNMP代理系统。


图1为现有技术中SNMP系统的构成结构图; 图2为现有技术中SNMP代理与被管理对象之间接口的构造方法的流程图;
图3为现有技术中SNMP代理分布式构成的设备的结构图; 图4为现有技术中在节点内部划分出主代理和子代理的SNMP节点处理NMS操作 请求的流程图; 图5A为现有技术中rpcgen生成的程序框架一个RPC过程示意图; 图5为本发明实施例一种在分布式构成设备上实现SNMP代理的节点的结构示意
图; 图6为本发明实施例一种在分布式构成设备上实现SNMP代理的方法的流程图。
具体实施例方式
本发明实施例一种在分布式构成设备上实现SNMP代理的节点,包括主控板和受 控板,所述主控板中包括SNMP代理和RPC客户机;所述受控板中包括被管理对象和RPC服 务器,其中,SNMP代理,用于接收管理者NMS发送来的简单网络管理协议SNMP消息,并将该 SNMP消息中的操作请求转换为过程调用RPC请求,将该过程调用RPC请求传递给RPC客户 机,并将RPC客户机发送来的返回值解释为SNMP操作结果,并将该SNMP操作结果封装于 SNMP应答消息中发回给所述NMS ;RPC客户机,用于使用RPC通信将所述RPC请求发送到RPC 服务器,并接收RPC请求的返回值;所述RPC服务器,用于将RPC请求转换为对本地管理对 象的函数调用,向所述被管理对象发送函数调用请求,并将所述函数调用的返回值传递回 所述RPC客户机;被管理对象,用于提供完成管理请求的函数调用接口,接收所述RPC服务 器发送来的调用请求,并将调用结果返回给所述RPC服务器。 为达到实现分布式构成设备的SNMP代理模块的任务,本技术方案将SNMP体系与
ONC RPC体系对接,利用ONC RPC来传递主控板与受控板之间的管理操作请求。由ONC RPC
来屏蔽远程过程调用与本地过程调用的差异,使得SNMP代理模块和被管理模块可以仍按
照本地调用的方式构造,避免构造复杂的多级SNMP代理系统。 其中RPC (Remote procedure call,远程过程调用)具体为 RPC是一种进程间通信机制,它使得一个计算机程序可以调用位于另一个地址空 间的过程,而不用关注这种远程交互的细节,它使得编写程序时不用再关心需要调用的过 程是在本地、还是在远程系统上(这里所说的过程对于C编程语言而言就是函数)。
RPC有多种实现方式,在本发明实施例中可采用ONC RPC (Open NetworkComputing Remote Procedure Call,开放网络计算RPC),其中ONC RPC框架的主要包括以下特点
过程只能有一个参数、一个返回值;当需要传递多个数值时,可以采取将它们封装 为一个结构的方法; 传输层无关性,不需要可靠的传输服务; 调用语义,调用语义定义了客户机对调用结果所能做的假设。ONC RPC提供"最少 一次"语义,即当一个调用返回时,它至少被执行了一次; 数据表达,ONC RPC的数据类型采用XDR(External Data R印resentation,外部数 据表示)表示,XDR是一种数据类型定义标准,它定义了不同体系的计算机系统之间传输数 据的表达方式。 XDR是一种隐式数据类型定义,这种方式定义的数据中没有包含数据类型的信息, 因此要求数据生产者与消费者对数据的解释通过另外的手段达成一致,如通过附加的文档 或接口约定来说明。 —个过程通过三元组(程序编号,程序版本编号,过程编号)标识 程序是指一组相关过程的集合,其中的每一个过程都有唯一的编号。例如,
NFS(Network File System,网络文件系统)就是RPC中的一个程序,它的程序编号是
0xl0_0002,当前版本编号是3,而文件操作如read (读)、write (写)等均是NFS中的过程。 编号的唯一性可采用各种方法来保证。本方案仅涉及设备内部的编号,编号使用
的范围很小,因此解决方法不需要很复杂,例如可以采取预分配的方法。 绑定,客户机需要先知道服务在哪一台主机上,然后才能访问服务进程。这个问题可采用多种方法解决,例如,可以固化服务进程与地址的对应关系,更为通用的方法是服务 进程将它的服务注册于某一约定位置,客户在运行时从约定位置来获取服务与地址的对应 关系。 0NC RPC采用客户机-服务器工作模型,客户机指调用RPC过程的程序(或软件系 统),服务器是指实现RPC过程的程序(或软件系统)。 ONC RPC实现所需要的程序框架通常采用RPC语言编译器(RPCLanguage Compiler)rpcgen来构造。rpcgen可以按照RPC规格说明文件(RPCspecification)中的 远程过程说明,生成用于对接客户机与服务器的程序框架,使得开发人员不用关心RPC过 程完成所需要的程序模块与交互过程。 RPC规格说明文件的内容是指明客户机与服务器需要共享的信息,通常包括程序
编号/版本编号、远过程声明的列表,包括它的参数说明、返回值说明和编号 例如,要实现一个远程的整数求和的过程,它的RPC规格说明文件如下 struct add_oper{/*过程参数的结构定义*/ int operl ; int oper2 ; }; program ADDPROG(
version ADDVERS( int ADD (struct add_oper) = 1 ;/*过程编号*/ } = 1 ;/*程序版本*/ } = 100 ;/*程序编号*/ 根据这个文件,rpcgen就能够生成客户机与服务器程序的框架。 如图5A所示,在rpcgen生成的程序框架中, 一个RPC过程中通常涉及6个模块,
包括调用RPC的模块、客户机程序1、实现RPC的模块、服务器程序2和两个RPC协议模块 客户机RPC接口模块,负责将RPC请求转换为RPC协议报文,并接收来自服务器的
过程调用的返回值; 服务器RPC接口模块,负责将RPC报文再转换为过程调用请求,调用程序2中的过 程来完成调用,并将调用结果再发送回客户端; RPC协议模块,负责利用系统的传输服务将报文传递给对端,或从对端接收报文, 这个模块在客户机和服务上均存在; 以上模块中"客户机程序1"和"服务器程序2"没有直接关联,对于"客户机程序 l"而言,不知道它在调用一个远程过程,对于"服务器程序2"而言,它不知道它的调用者是 一个远程的程序。其它模块均由RPC语言编译器生成。 在本发明实施例中SNMP代理模块与被管理模块在不同的软件系统内,SNMP代理 模块解析SNMP消息产生过程调用,得到的过程调用通过RPC框架传递给受控板上的被管理 模块,具体实现包括 如图5所示,本发明实施例一种在分布式构成设备上实现SNMP代理的节点,包括 主控板和受控板,其中所述主控板包括SNMP代理501和RPC客户机502 ;所述受控板包括 RPC服务器503和被管理对象504 :
所述SNMP代理501,用于接收管理者NMS发送来的简单网络管理协议SNMP消息, 并将该SNMP消息中的操作请求转换为过程调用RPC请求,将该过程调用RPC请求传递给 RPC客户机502,并将RPC客户机502发送来的返回值解释为SNMP操作结果,并将该SNMP 操作结果封装于SNMP应答消息中发回给所述NMS ; 该SNMP代理501还用于将自身的简单语法变量和应用语法变量转化为外部数据 XDR表示。 为了表述RPC调用过程中的错误值,该SNMP代理501还用于将RPC请求返回的 RPC调用过程中的错误转化SNMP的错误状态"noAccess"。 为了正确的调用受控板上的被管理对象504,该SNMP代理501还用于将SNMP消息 中的被管理对象的对象标识转换为被管理对象的地址。 主控板上的RPC客户机502,用于将SNMP代理501发出的过程调用请求以RPC消 息的形式传递给受控板上的RPC服务器503,并将RPC服务器503传递回的过程调用返回值 返回给SNMP代理501 ; 受控板上的RPC服务器503,用于将来自RPC客户机502的过程调用转换为对本地 被管理对象504的函数调用;并将该函数调用的返回值以RPC消息形式传递给RPC客户机
502 ; 受控板上的被管理对象504,用于提供完成管理请求的函数调用接口 ,接收所述 RPC服务器发送来的调用请求,完成SNMP操作请求,并将结果返回给调用者。
其中,SNMP代理501要对SNMP消息进行解析,转换为内部格式,将MIB变量映射 到本地等效值,SNMP代理501可以应用不同方法实现,但实质上都是将SNMP操作请求转换 为对被管理模块的函数调用,但函数接口的具体形式可能不同。由于SNMP消息中的信息与 其对应的函数接口通常存在着固定的映射关系,因此,本发明实施例中直接将SNMP消息中信 息与RPC的功能进行比照分析,这种分析结论也适用于分析RPC是否足以承载由SNMP消息转 换而成的函数调用,在本发明实施例中将SNMP消息进行解析,转换为内部格式,具体包括
本发明实施例中ONC RPC使用的XDR可以表示SNMP中所有对象的数据类型,转换 规则如下 (A) 、 SNMP中的三种简单语法变量转化为XDR形式
整数类型INTEGER :直接对应于XDR中的Integer类型; 8位位组字符串OCTET STRING :由于该类型为变长字符串,使用XDR的string来 表示它,XDR的string类型的内部前4个字节是数据长度,由于ASN. 1是显式数据定义, 在使用OCTECT STRING时必然包括了该字符串的长度,在转换时将该长度取出置入XDR string类型的长度域中。对象标识OBJECT IDENTIFIER :即被管理对象的标识,这个值在函数调用中不使 用,但在RPC调用时,OBJECT IDENTIFIER将转换为RPC通信中的被管理对象的地址。
(B) 、 SNMP中的6种应用语法变量转化为XDR形式 IPv4地址IpAddress,使用XDR的Fixed-Length Array (定长数组),长度为4 ;
32位计数器Counter32,使用XDR的Unsigned Integer类型;
32位无符号整数Unsigned32,使用XDR的Unsigned Integer类型;
时间嘀答数TimeTicks,使用XDR的Unsigned Integer类型;
非透明类型Opaque,与OCTET STRING的转换相同; 64位计数器Co皿ter64,使用XDR的Unsigned Hyper Integer类型;64位无符号整数Unsigned46,使用XDR的Unsigned Integer类型; 另外,对于表格类型的SNMP对象,采用一个结构对表格的变量进行封装即可,由
于表格类型成员由上述的简单类型构成,则表格的转换可以视为是对表格中成员的转换。 (C) 、 RPC调用错误值与SNMP操作请求返回的错误值的转换 过程调用的最终错误有两种可能, 一是RPC调用过程中的错误,在本发明实施例
中将其称为外部错误;另一类是过程调用实现中的内部错误,此时RPC调用过程是成功的,
错误类型在过程调用的返回值中,在本发明实施例中将其称为内部错误; RPC过程中可能产生的外部错误包括程序不存在、程序不匹配、过程不存在、参数
不匹配、系统错误、认证错误和RPC版本错误。 以上除"系统错误"外,其它错误只可能由于设计错误而出现,可以将所有外部错 误值转换为SNMP的错误状态"noAccess"。由于SNMP的错误状态通常只是用于提示,NMS 不再对错误状态进行进一步的处理,因此错误状态的不精确不会影响到NMS的管理过程。
内部错误是远端过程在处理管理请求时按照SNMP的要求产生错误值,不需要再 进行转换,此时RPC过程的返回值是成功。
(D) 、XDR的隐式类型定义 XDR采用的隐式类型定义,需要数据的生产者与消费者对数据的解释提前达成一 致,这个问题通过RPC的过程声明来解决。RPC过程声明中包含了参数和返回值类型,声明 将同时用于客户机与服务器上的程序,因此当数据由客户机发到服务器上时,能够保证两 者对于数据的解释是一致的。
(E)、过程调用语义的改变ONC RPC并不保证过程调用一定可靠,而SNMP协议也假设了 SNMP操作请求的不可 靠性,因此SNMP代理可以容忍RPC的不可靠性;
(F)、被管理模块的编址 为完成SNMP代理对被管理模块的过程调用,需要将SNMP消息中被管理对象的 OBJECT IDENTIFIER转换为被管理模块的地址,被管理模块的编址并不是本发明实施例所 述关注的范围,本实施例可选择由预置的地址表确定被管理模块的地址。由于主控板与受 控板之间构成了设备内部的网络,系统方案内必然有编址方法,设备内部的编址方案一般 都比较简单,例如如果设备内部使用的是TCP/IP网络,则可以将TCP或UDP端口与被管理 模块之间的映射关系在系统设计时就固化。 如图6所示,本发明实施例还提供一种在分布式构成设备上实现SNMP代理的方 法,具体包括以下步骤 步骤601,当主控板中的SNMP代理接收到管理者NMS发送的简单网络管理协议 SNMP消息时,将所述SNMP消息转换为本地数据格式,并将该SNMP消息中的操作请求转换为 过程调用RPC请求,传递给该主控板上设置的RPC客户机; 步骤602, RPC客户机使用RPC通信将RPC请求发送到受控板上的RPC服务器;
步骤603,受控板上的RPC服务器将RPC请求转换为对本地管理对象的函数调用, 并调用所述被管理模块完成管理请求操作,将过程调用的返回值传递回主控板上的RPC客户机; 步骤604,主控板上的RPC客户机将RPC调用的返回值传递给SNMP代理; 步骤605,主控板上的SNMP代理接收到所述返回值后,将该返回值解释为SNMP操
作结果,封装于SNMP应答消息中返回给NMS。 由于SNMP消息中的信息与其对应的函数接口通常存在着固定的映射关系,因此, 在本发明实施例直接将SNMP消息中信息与RPC的功能进行比照分析,这种分析结论也适用 于分析RPC是否足以承载由SNMP消息转换而成的函数调用 则所述步骤601,将所述SNMP请求转换为过程调用RPC请求,传递给该主控板上设 置的RPC客户机,具体包括 本发明实施例中ONC RPC使用的XDR可以表示SNMP中所有对象的数据类型,转换 规则如下 (A) 、 SNMP中的三种简单语法变量转化为XDR形式
INTEGER :直接对应于XDR中的Integer类型; OCTET STRING :由于该类型为变长字符串,使用XDR的string来表示它,XDR的 string类型的内部前4个字节是数据长度,由于ASN. 1是显式数据定义,在使用OCTECT STRING时必然包括了该字符串的长度,在转换时将该长度取出置入XDR string类型的长 度域中。OBJECT IDENTIFIER :即被管理对象的标识,这个值在函数调用中不使用,但在RPC
调用时,OBJECT IDENTIFIER将转换为RPC通信中的被管理对象的地址。 (B) 、 SNMP中的6种应用语法变量转化为XDR形式 IpAddress,使用XDR的Fixed-Length Array (定长数组),长度为4 ; Counter32,使用XDR的Unsigned Integer类型; Unsigned32,使用XDR的Unsigned Integer类型;TimeTicks,使用XDR的Unsigned Integer类型; Opaque,与OCTET STRING的转换相同; Co皿ter64,使用XDR的Unsigned Hyper Integer类型;Unsigned32,使用XDR的Unsigned Integer类型; 另外,对于表格类型的SNMP对象,采用一个结构对表格的变量进行封装即可,由
于表格类型成员由上述的简单类型构成,则表格的转换可以视为是对表格中成员的转换。 (C) 、 RPC调用错误值与SNMP操作请求返回的错误值的转换 过程调用的最终错误有两种可能, 一是RPC调用过程中的错误,在本发明实施例
中将其称为外部错误;另一类是过程调用实现中的内部错误,此时RPC调用过程是成功的,
错误类型在过程调用的返回值中,在本发明实施例中将其称为内部错误; RPC过程中可能产生的外部错误包括程序不存在、程序不匹配、过程不存在、参数
不匹配、系统错误、认证错误和RPC版本错误。 以上除"系统错误"外,其它错误只可能由于设计错误而出现,可以将所有外部错 误值转换为SNMP的错误状态"noAccess"。由于SNMP的错误状态通常只是用于提示,NMS 不再对错误状态进行进一步的处理,因此错误状态的不精确不会影响到NMS的管理过程。
内部错误是远端过程在处理管理请求时按照SNMP的要求产生错误值,不需要再进行转换,此时RPC过程的返回值是成功。
(D) 、 XDR的隐式类型定义 XDR采用的隐式类型定义,需要数据的生产者与消费者对数据的解释提前达成一 致,这个问题通过RPC的过程声明来解决。RPC过程声明中包含了参数和返回值类型,声明 将同时用于客户机与服务器上的程序,因此当数据由客户机发到服务器上时,能够保证两 者对于数据的解释是一致的。
(E)、过程调用语义的改变ONC RPC并不保证过程调用一定可靠,而SNMP协议也假设了 SNMP操作请求的不可 靠性,因此SNMP代理可以容忍RPC的不可靠性;
(F)、被管理模块的编址 为完成SNMP代理对被管理模块的过程调用,需要将SNMP消息中被管理对象的 OBJECT IDENTIFIER转换为被管理模块的地址,被管理模块的编址并不是本发明实施例所 述关注的范围,本实施例可选择由预置的地址表确定被管理模块的地址。由于主控板与受 控板之间构成了设备内部的网络,系统方案内必然有编址方法,设备内部的编址方案一般 都比较简单,例如如果设备内部使用的是TCP/IP网络,则可以将TCP或UDP端口与被管理 模块之间的映射关系在系统设计时就固化。 本发明实施例提供的方法和装置将SNMP体系与ONC RPC体系对接,利用ONC RPC 来传递主控板与受控板之间的管理操作请求。由ONC RPC来屏蔽远程过程调用与本地过程 调用的差异,使得SNMP代理模块和被管理模块可以仍按照本地调用的方式构造,避免构造 复杂的多级SNMP代理系统。 本发明所述的方法并不限于具体实施方式
中所述的实施例,本领域技术人员根据 本发明的技术方案得出其它的实施方式,同样属于本发明的技术创新范围。显然,本领域的 技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本 发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包 含这些改动和变型在内。
权利要求
一种在分布式构成设备上实现SNMP代理的节点,包括主控板和受控板,其特征在于,所述主控板中包括SNMP代理和RPC客户机;所述受控板中包括被管理对象和RPC服务器,其中,SNMP代理,用于接收管理者NMS发送来的简单网络管理协议SNMP消息,并将该SNMP消息中的操作请求转换为过程调用RPC请求,将该过程调用RPC请求传递给RPC客户机,并将RPC客户机发送来的返回值解释为SNMP操作结果,并将该SNMP操作结果封装于SNMP应答消息中发回给所述NMS;RPC客户机,用于使用RPC通信将所述RPC请求发送到RPC服务器,并接收RPC请求的返回值;所述RPC服务器,用于将RPC请求转换为对本地管理对象的函数调用,向所述被管理对象发送函数调用请求,并将所述函数调用请求的返回值传递回所述RPC客户机;被管理对象,用于提供完成管理请求的函数调用接口,接收所述RPC服务器发送来的调用请求,并将调用结果返回给所述RPC服务器。
2. 如权利要求l所述的代理节点,其特征在于,所述SNMP代理还用于将自身的简单语 法变量和应用语法变量转化为外部数据XDR表示。
3. 如权利要求1所述的代理节点,其特征在于,所述SNMP代理还用于将RPC请求返回 的RPC调用过程中的错误转化SNMP的错误状态"noAccess"。
4. 如权利要求1所述的代理节点,其特征在于,所述SNMP代理还用于将SNMP消息中的 被管理对象的对象标识转换为被管理对象的地址。
5. —种在分布式构成设备上实现SNMP代理的方法,其特征在于,包括 当主控板中的SNMP代理接收到管理者NMS发送的简单网络管理协议SNMP消息时,将所述SNMP消息转换为本地数据格式,并将该SNMP消息中的操作请求转换为过程调用RPC请求,传递给该主控板上设置的RPC客户机;RPC客户机使用RPC通信将RPC请求发送到受控板上的RPC服务器;受控板上的RPC服务器将RPC请求转换为对本地管理对象的函数调用,并调用所述被管理模块完成管理请求操作,将过程调用的返回值传递回主控板;所述SNMP代理接收到所述返回值后,将该返回值解释为SNMP操作结果,并将该SNMP操作结果封装于SNMP应答消息中返回给NMS。
6. 如权利要求5所述的方法,其特征在于,将该SNMP消息中的操作请求转换为过程调 用RPC请求,包括将所述SNMP请求的简单语法变量和应用语法变量转化为外部数据XDR表示。
7. 如权利要求6所述的方法,其特征在于,所述SNMP请求的简单语法变量转化为外部 数据XDR表示,包括所述SNMP请求中的整数类型Integer直接对应于XDR中的Integer类型;使用XDR的 字符串string表示8位位组字符串OCTET STRING ;将对象标识OBJECT IDENTIFIER将转 换为RPC通信中的被管理对象的地址。
8. 如权利要求6所述的方法,其特征在于,将所述SNMP请求的应用语法变量转化为外 部数据XDR表示,包括使用XDR的定长数组Fixed-Length Array表示SNMP请求中的IPv4地址IpAddress,长度为4;使用XDR的无符号整数Unsigned Integer类型表示SNMP请求中的32位计数器 Co皿ter32 j使用XDR的Unsigned Integer类型表示SNMP请求中的32位无符号整数Unsigned32 ; 使用XDR的Unsigned Integer类型表示SNMP请求中的时间嘀答数TimeTicks ; 使用XDR的字符串string表示SNMP请求中的非透明类型Opaque ; 使用XDR的Unsigned Hyper Integer类型表示SNMP请求中的64位计数器Counter64 ; 使用XDR的Unsigned Integer类型表示SNMP请求中的64位无符号整数Unsigned64 ; 如果为表格类型的SNMP请求,采用结构对表格的变量进行封装。
9. 如权利要求6所述的方法,其特征在于,将该SNMP消息中的操作请求转换为过程调 用RPC请求还包括将所述SNMP请求中的被管理对象的对象标识转换为被管理对象的地 址。
10. 如权利要求5所述的方法,其特征在于,主控板上的SNMP代理接收到所述返回值 后、如果去定所述返回值为RPC调用错误值,则将RPC请求返回的RPC调用过程中的错误转 化SNMP的错误状态"noAccess"。
全文摘要
本发明公开了一种在分布式构成设备上实现SNMP代理的方法和装置,该方法包括当SNMP代理接收到管理者NMS发送的简单网络管理协议SNMP消息时,将所述SNMP消息中的操作请求转换为过程调用RPC请求,传递给RPC客户机;RPC客户机使用RPC通信将RPC请求发送到受控板上的RPC服务器;所述RPC服务器将RPC请求转换为对本地管理对象的函数调用,并调用所述被管理模块完成管理请求操作,将过程调用的返回值传递回主控板上的RPC客户机;所述RPC客户机将RPC调用的返回值传递给SNMP代理;所述SNMP代理接收到所述返回值后,将该返回值解释为SNMP操作结果,封装于SNMP应答消息中返回给NMS。应用本发明提供的方法和装置能够解决现有技术中SNMP多级代理复杂程度高,实现工作量较大的问题。
文档编号H04L29/06GK101795206SQ20091022484
公开日2010年8月4日 申请日期2009年11月26日 优先权日2009年11月26日
发明者马晓靖 申请人:福建星网锐捷网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1