论文部分内容阅读
摘 要:网络管理人员需要一个实用的网络管理系统来帮助他们实时掌控网络的性能状态,监测网络故障及优化网络结构,以维护网络的正常稳定运行。本文全面考察了网络管理领域的现状并结合具体的需求,设计出一个网络信息查询系统,该系统基于SNMP协议访问网络设备中MIB库的信息。
关键字:网络管理;简单网络管理协议; MIB
中图分类号:TP393 文献标识码:A DOI:10.3969/j.issn.1003-6970.2013.08.024
本文著录格式:[1]高凯,赵登攀.一种基于SNMP的网络信息查询软件的开发与设计[J].软件,2013,34(8): 75-77
0引 言
目前的网络管理标准主要有两大体系:OSI的CMIS( Common Management Information Service,公共管理信息库)/CMIP( Common Management Information Protocol,公共管理信息协议)和IETF的SNMP( Simple Network Management Protocol,简单网络管理协议)。SNMP的产生是由于人们想把它作为TCP/ IP网络管理的临时解决办法,待OSI框架广泛应用以后就用OSI的CMIP代替它。但是,由于CMIP实现复杂、结构庞大,占用资源多,目前还没有开发出实际可用的产品。SNMP却由于易于实现和广泛的TCP/ IP应用基础而获得厂商的支持。而目,由于SNMPv2和 SNMPv3的相继出现,改善了SNMP中的安全问题,使SNMP得到快速的发展。
1 SNMP的体系结构
简单网络管理协议(SNMP)在体系结构分为被管理的设备(Managed Device)、SNMP管理器(SNMP Manager)和SNMP代理(SNMP Agent)三个部分。被管理的设备是网络中的一个节点,有时被称为网络单元(Network Elements),被治理的设备可以是路由器、网管服务器、交换机、网桥、集线器等。每一个支持SNMP的网络设备中都运行着一个SNMP代理,它负责随时收集和存储治理信息,记录网络设备的各种情况,网络管理软件再通过SNMP通信协议查询或修改代理所记录的信息。
2系统的详细设计与实现
2.1系统主要功能模块的设计
基于SNMP协议的网络信息查询系统的主要功能是查询网络信息,该系统只有一个主要模块—信息查询模块。查询网络信息需要访问系统的API接口与网络设备中的MIB建立连接,首先应该开启SNMP服务器,然后添加欲访问主机的IP地址。在WinSNMP API接口中,管理站NMS与代理的通信协议都被封装在一些函数之中,实现网络拓扑自动发现的算法主要是利用深度优先算法探测目标网络,逐一查询每个网络设备的MIB表,发现活动的网络设备并绘制整个网络系统的拓扑图。
2.2信息查询系统界面设计
信息查询模块界面是基于VC++6.0平台上设计的,该编程软件有画图功能,所以可以利用该项功能依照该系统的所要完成的模块设计主界面。它的界面应该包含应查询信息的类型、代理地址及显示查询结果的文本图。具体界面设计如下图1所示。
2.3信息查询的实现
为了获得每个网络设备真实的存活状况连接关系,真实地重构网络连接与分布,我们将每个目的网络中网络设备MIB中的system、interface和iptable组字段信息结合起来获知网络设备连接信息。
算法中,使用图的邻接表来存储网络设备的连接信息,将目的网络的网关存入头节点数组中,每个头节点以网关接口为索引将与网关连接的相关设备信息存入链接表中。头节点中包括网关类型、接口数量、每个接口的网络地址和运行状态。链接表每个节点中存入与网关直接连接设备类型、接口和另一个网络设备指针等信息。绘制网络拓扑图时采用深度算法遍历网络连接邻接图,从目标网络的网关开始,搜索所有与网关直接连接的网络设备并将信息存入连接表中,对于与网关间接连接的目标网络,我们根据设定的深度,有选择地将其子网网关插入头接点中。例如向网关agent发送TVL编码数据结构请求获取IpRoutertable的iproutenexthop字段及接收信息的算法如下所示。
LPTSTR m_strOid[10],smiLPVALUE
m_smivalue[10]
PSnmp.Send(getwayip,1.3.6.1.2.1.4.21.1)
pSnmp.Receive(m_strOid,m_smivalue)
for(int i=1;i<=pSnmp.nCount;i++)
{
switch(m_value[i]->syntax)
getValue(m_strOid ,m_smivalue)}
pSnmp.Send(getwayip,m_strOid)}
为实现SNMP的管理功能,需要要判断所需要管理请求类型。
2.3.1 建立连接
为了实现能够访问MIB信息库中的数据,我们首先应该与MIB库建立连接。这中间包括应该开启SNMP服务器、添加OID等来完成建立数据库过程。为了更形象的表示建立连接的过程,我们用下图2表示该建立过程。
2.3.2信息查询
(1)首先使用函数SnmpMgrOpen()打开与远程代理的会话。
SnmpMgrOpen( _in_opt LPSTR lpAgentAddress, _in_opt LPSTR lpAgentCommunity, INT nTimeOut, INT nRetries );
此函数的四个参数,分别是远程代理的IP地址、远程代理的共同体名称、超时时间和重试次数。
(2)会话连接成功后,接下来就是向远程代理发送请求信息,发送请求信息的函数原型如下。
SnmpMgrRequest(LPSNMP_MGR_SESSION session,BYTE requestType, RFC1157VarBindList *variableBindings, AsnInteger *errorStatus, AsnInteger *errorIndex );
函数中第一个参数就是连接会话的返回值,第二个参数为请求类型,第三个参数为变量绑定的列表,第四和第五个参数分别为错误的状态信息及错误索引。
3 结束语
本文考察了网络管理领域的现状并结合具体的需求,设计出一个网络信息查询系统。该系统采用VC++技术开发,基于SNMP协议访问网络设备中MIB库的信息, 可以是网络管理员在日常工作方便的实时掌控网络的性能状态。
参考文献
[1] 余小高.用WinSNMP API实现网络管理站编程技术的研究.计算机应用与软件.2007.
[2] 李国新.基于SNMP协议的网络管理的研究与实现技术.电脑与信息技术.2007.
[3] 李雄伟等.基于SNMP网络管理系统的研究与开发.网络安全技术与应用.2007.6.
[4] Collins,D,.Carrier Grade Voice over IP ,McGraw-Hill,2011.
[5] Tanenbaum,A.S.,Computer Networks,4ed.,Prentice-Hall,2003.
关键字:网络管理;简单网络管理协议; MIB
中图分类号:TP393 文献标识码:A DOI:10.3969/j.issn.1003-6970.2013.08.024
本文著录格式:[1]高凯,赵登攀.一种基于SNMP的网络信息查询软件的开发与设计[J].软件,2013,34(8): 75-77
0引 言
目前的网络管理标准主要有两大体系:OSI的CMIS( Common Management Information Service,公共管理信息库)/CMIP( Common Management Information Protocol,公共管理信息协议)和IETF的SNMP( Simple Network Management Protocol,简单网络管理协议)。SNMP的产生是由于人们想把它作为TCP/ IP网络管理的临时解决办法,待OSI框架广泛应用以后就用OSI的CMIP代替它。但是,由于CMIP实现复杂、结构庞大,占用资源多,目前还没有开发出实际可用的产品。SNMP却由于易于实现和广泛的TCP/ IP应用基础而获得厂商的支持。而目,由于SNMPv2和 SNMPv3的相继出现,改善了SNMP中的安全问题,使SNMP得到快速的发展。
1 SNMP的体系结构
简单网络管理协议(SNMP)在体系结构分为被管理的设备(Managed Device)、SNMP管理器(SNMP Manager)和SNMP代理(SNMP Agent)三个部分。被管理的设备是网络中的一个节点,有时被称为网络单元(Network Elements),被治理的设备可以是路由器、网管服务器、交换机、网桥、集线器等。每一个支持SNMP的网络设备中都运行着一个SNMP代理,它负责随时收集和存储治理信息,记录网络设备的各种情况,网络管理软件再通过SNMP通信协议查询或修改代理所记录的信息。
2系统的详细设计与实现
2.1系统主要功能模块的设计
基于SNMP协议的网络信息查询系统的主要功能是查询网络信息,该系统只有一个主要模块—信息查询模块。查询网络信息需要访问系统的API接口与网络设备中的MIB建立连接,首先应该开启SNMP服务器,然后添加欲访问主机的IP地址。在WinSNMP API接口中,管理站NMS与代理的通信协议都被封装在一些函数之中,实现网络拓扑自动发现的算法主要是利用深度优先算法探测目标网络,逐一查询每个网络设备的MIB表,发现活动的网络设备并绘制整个网络系统的拓扑图。
2.2信息查询系统界面设计
信息查询模块界面是基于VC++6.0平台上设计的,该编程软件有画图功能,所以可以利用该项功能依照该系统的所要完成的模块设计主界面。它的界面应该包含应查询信息的类型、代理地址及显示查询结果的文本图。具体界面设计如下图1所示。
2.3信息查询的实现
为了获得每个网络设备真实的存活状况连接关系,真实地重构网络连接与分布,我们将每个目的网络中网络设备MIB中的system、interface和iptable组字段信息结合起来获知网络设备连接信息。
算法中,使用图的邻接表来存储网络设备的连接信息,将目的网络的网关存入头节点数组中,每个头节点以网关接口为索引将与网关连接的相关设备信息存入链接表中。头节点中包括网关类型、接口数量、每个接口的网络地址和运行状态。链接表每个节点中存入与网关直接连接设备类型、接口和另一个网络设备指针等信息。绘制网络拓扑图时采用深度算法遍历网络连接邻接图,从目标网络的网关开始,搜索所有与网关直接连接的网络设备并将信息存入连接表中,对于与网关间接连接的目标网络,我们根据设定的深度,有选择地将其子网网关插入头接点中。例如向网关agent发送TVL编码数据结构请求获取IpRoutertable的iproutenexthop字段及接收信息的算法如下所示。
LPTSTR m_strOid[10],smiLPVALUE
m_smivalue[10]
PSnmp.Send(getwayip,1.3.6.1.2.1.4.21.1)
pSnmp.Receive(m_strOid,m_smivalue)
for(int i=1;i<=pSnmp.nCount;i++)
{
switch(m_value[i]->syntax)
getValue(m_strOid ,m_smivalue)}
pSnmp.Send(getwayip,m_strOid)}
为实现SNMP的管理功能,需要要判断所需要管理请求类型。
2.3.1 建立连接
为了实现能够访问MIB信息库中的数据,我们首先应该与MIB库建立连接。这中间包括应该开启SNMP服务器、添加OID等来完成建立数据库过程。为了更形象的表示建立连接的过程,我们用下图2表示该建立过程。
2.3.2信息查询
(1)首先使用函数SnmpMgrOpen()打开与远程代理的会话。
SnmpMgrOpen( _in_opt LPSTR lpAgentAddress, _in_opt LPSTR lpAgentCommunity, INT nTimeOut, INT nRetries );
此函数的四个参数,分别是远程代理的IP地址、远程代理的共同体名称、超时时间和重试次数。
(2)会话连接成功后,接下来就是向远程代理发送请求信息,发送请求信息的函数原型如下。
SnmpMgrRequest(LPSNMP_MGR_SESSION session,BYTE requestType, RFC1157VarBindList *variableBindings, AsnInteger *errorStatus, AsnInteger *errorIndex );
函数中第一个参数就是连接会话的返回值,第二个参数为请求类型,第三个参数为变量绑定的列表,第四和第五个参数分别为错误的状态信息及错误索引。
3 结束语
本文考察了网络管理领域的现状并结合具体的需求,设计出一个网络信息查询系统。该系统采用VC++技术开发,基于SNMP协议访问网络设备中MIB库的信息, 可以是网络管理员在日常工作方便的实时掌控网络的性能状态。
参考文献
[1] 余小高.用WinSNMP API实现网络管理站编程技术的研究.计算机应用与软件.2007.
[2] 李国新.基于SNMP协议的网络管理的研究与实现技术.电脑与信息技术.2007.
[3] 李雄伟等.基于SNMP网络管理系统的研究与开发.网络安全技术与应用.2007.6.
[4] Collins,D,.Carrier Grade Voice over IP ,McGraw-Hill,2011.
[5] Tanenbaum,A.S.,Computer Networks,4ed.,Prentice-Hall,2003.