庞新法
(陕西省委党校科技教研部 陕西 西安 710061)
SNMP(Simple Network Management Protocol,简单网络管理协议)是 IETF(Internet Engineering Task Force,互联网工程小组)定义的Internet协议簇的一部分,用于网络设备的管理。网络设备的管理主要是网络设备信息的管理,大量的网络设备信息构成信息库,称为管理信息库,如何组织信息,简化复杂的网络管理,以提高网络设备管理效率,文中经过论证提出了“双亲表示法”。
SNMP是基于TCP/IP协议族上的互联网应用层协议,用于网络管理。被管理的仪器设备可以是交换机、路由器、服务器、工作站、网关、网络打印机等等。因为设备都支持SNMP协议,所以使用协议对仪器设备进行管理时外观是相同的,从而就可以消除设备型号、各类提供商等差异。图1是一个SNMP系统的典型应用示意图。
图1 SNMP的典型应用Fig.1 The typical application of SNMP
从图1可以看出,SNMP协议为网络管理员提供了一个平台,称之为网络管理工作站,主要负责发出网管命令、数据分析与存储等功能。被管理的仪器设备上同要运行一个SNMP代理,用来实现被管设备与管理站之间的通信。图2描述了简单网络管理协议的逻辑结构。管理站运行网络管理程序,发送管理操作命令,接收来自代理的信息以确定设备的状态。代理(Agent)是驻留在被管设备中以完成SNMP功能的模块。负责处理和响应管理站发送来的服务请求,并且还可以将被管网络发生的特定事件报告给管理站,完成被管网络设备与管理站之间的通信功能。管理站与代理则使用管理信息库(MIB)来统一接口。MIB中定义了设备中的被管理对象,代理与管理站都应该实现相应的MIB对象,这样双方就可以识别对方的数据,从而实现彼此的通信。
管理站向代理发送MIB中定义的数据,代理识别后,将被管仪器设备所提供的相应参数或状态转换成MIB定义的格式,之后向管理站作出应答,从而完成一次管理的操作。
图2 管理站与代理的通信Fig.2 Communication between management station and agent
SNMP的体系结构与通信过程使得网络仪器设备对协议的支持非常方便。对于已有的设备,如果不支持SNMP协议,只需要新增一个SNMP模块就可以增加网络管理的功能,从而实现对网络设备的统一监控管理。使得复杂繁琐的网络管理工作变得标准化、简单化。
简单网络管理协议操作的对象是管理信息,管理信息库[1]就是管理信息的集合。任何一个管理的信息点都会被定义为一个管理信息。支持SNMP的设备通常都要有自己的管理信息,用来实现对该设备的网络管理。
TCP/IP网管系统的基础是包含有被管理资源信息的数据库,每一个被管理元素用一个对象来表示,MIB就是这些对象的结构化的集合。通过读取MIB中对象的值,NMS可以监控系统中的管理资源,并且可以通过修改某些值来管理系统中的资源。信息库中对象的意义、类型等由MIB来定义,NMS和代理都使用同一个MIB作为接口进行通信,从而实现管理。所以管理信息库也被称为管理站和被管设备之间的桥梁。
SNMP环境中所有的管理对象组织成分层的树型结构,这种层次结构有三个作用:
1)表示管理与控制关系:上层中的中间结点是某些组织机构的名字,说明这些机构负责其下面的子树信息的管理和审批,有些中间结点虽然不是组织机构名,其实已经委托给某个组织机构代管。
2)提供了结构化的信息组织技术。某层的中间结点代表的子树可能是与每个网络资源或网络协议相关的信息集合。这种组织方式使得沿着结构层次来访问相关的结点就会十分方便。
3)提供对象的命名机制。树型结构中每个结点都有一个分层的编号。叶子结点代表实际的管理对象,把从根到叶子的编号连接起来,并用圆点隔开,就形成了管理对象的唯一全局标识。
很多SNMP代理实现方案都通过Hash函数[2]将请求包含的OID(Object identifier,OID对象标识)映射到 Hash表中一个MIB对象的数据结构上。这种方法通过单纯的数学计算和一定的冲突监测可以在短时间内找到目标结点,但有其特定的缺点:
1)Hash函数冲突较多[3],因此该方法需要保存MIB对象的完整OID以便在冲突发生时判断当前对象是否是目标对象。而保存完整的OID将会造成公共祖先结点ID的重复。
2)Hash函数对实现有序遍历有难度[4]。Hash表方法对个数相对固定的简单结点还有可能按照录入顺序来进行排序,对动态变化的表格数据则无法进行操作。
双亲表示法[5],可以使用双向链表,如图3所示:
图3 MIB结构的双亲表示法Fig.3 Parents representation structure of MIB
孩子链表表示法[6],如图4所示。
图4 MIB结构的孩子链表表示法Fig.4 The child list representation structure of MIB
二叉链表表示法[7],如图5所示。
图5 MIB结构的二叉链表表示法Fig.5 Two fork chain representation structure of MIB
综合复杂性与可行性,使用“双亲表示法[8]”来实现本系统的MIB结构,用一组连续的存储空间来存储树中的各个结点,数组中的每一个元素都对应于树中的一个结点,每个结点具有两域:数据域和双亲域,数据域存放结点本身的信息,双亲域存放该结点的双亲结点在数组中的位置。实现的MIB结构只需要考虑到节点的查询和修改操作,因为每个代理结点都有相应的Get、Set操作,因此用户无法对代理结点执行增加、删除等操作。结点结构如下:
MIB库结构如图6所示,表1给出该MIB树结构在程序设计中的数组表示。
图6 MIB树结构Fig.6 The structure of MIB tree
文中分析了用于网络管理的MIB(管理信息库)模型,逻辑结构,存贮结构,给出了几种存贮结构的优缺点,综合复杂性与可行性,论证了使用“双亲表示法实现本系统的MIB结构可以提高网管效率,并以示波器为例对系统进行了测试,取得了满意的效果。
表1 MIV树的内部表示Tab.1 The internal representation of MIB tree
[1]王长杰.基于SNMP网络管理系统的研究与实现[D].郑州:郑州大学,2010.
[2]刘萍.嵌入式网管代理中管理信息库的研究与实现[D].武汉:华中师范大学,2005.
[3]张群哲.数据结构—C语言版[M].西安:西安电子科大学出版社,2011.
[4]严蔚敏.数据结构[M].北京:清华大学出版社.1999年8月
[5]方贤进.数据结构—C语言描述[M].长沙:国防科技大学出版社,2013.
[6]王国钧.数据结构—C语言描述 [M].北京:科学出版社,2005.
[7]赵文静.数据结构与算法[M].北京:科学出版社,2005.
[8]耿国华.数据结构—C语言描述[M].北京:高等教育出版社,2005.