3 性能管理模块的编程实现
在性能管理模块的开发过程中,可利用SNMP++类库来实现数据采集模块的开发,SNMP++是由HP公司提供的一个开放的软件包,它能够较好地实现SNMP协议,利用它的成员函数get(),getnext(),get-bulk(),set(),trap()可以编程实现对设备和主机性能数据的采集。SNMP++提供跨平台可移植的API。任何使用SNMP++编写的网络管理应用程序,不需要做任何改变就可以移植到其它平台。SNMP++在Target类中提供了超时和重传机制,直接设置参数就可以实现超时和重传功能。同时SNMP++可以运行在各种不同协议之上,它采用面向对象的设计方法,把WinSNMP的API函数封装成一个个相关的类,大大简化了SNMP网络管理软件开发的复杂性和开发难度。以下给出网络性能管理的部分关键对象(表1)和性能参数的计算公式。大多MIB组都提供性能数据变量。
端口状态ifOperStatus有三种取值,1(up)代表当前接口正处于使用状态;2(down)代表当前接口处于关闭状态;3(test)代表接口正处于测试状态。
端口当前状态保持时间=sysUpTime—if-LastChange
对于一段时间丁内,MIB变量值的变化:△(MIB-variable)=MIB-Value(t1)-MIB-Value(t0)
接口收到的包的总数:TOTAL_INPUT_PACK-ETS=△ifInUcastPkts+△ifInNUcastPkts
发出的包的总数:TOTAL_OUTPUT_PACK-ETS=△ifOutUcastPkts+△ifOutNUcastPkts
输入丢包率=△ifInDiscards/(△ifInUcastPkts+△ifInNUcastPkts)*100%
输出丢包率=△ifOutDiscards/(△ifInUcastPkts+△ifInNUcastPkts)*100%
输入差错率=△ifInErrors/(△ifInUcastPkts+△ifInNUcastPkts)*100%
输出差错率=△ifOutErrors/(△ifOutUcastPkts +△ifOutNUcastPkts)*100%
接口输入流量=ifInOctets*8/sysUpTime
接口输出流量=ifOutOctets*8/sysUpTime
接口利用率=((△ifInOctes+△ifOUtOetets)*8)/(T*ifSpeed)*100%
同样可以计算其他参数,如:
IP吞吐量=(△ipInRecieves+△ipOutRequests+△ipForwDatagrams)/T
UDP吞吐量=(△udpInDatagrams+△udpNoPorts+△udpInErrors+△udpOutDatagrams)/T
下面给出了SNMP++编程的关键步骤(标“*”):
4 结 语
基于目前广泛应用的SNMP设计了网络管理系统中的性能管理模块,采用HP公司提供的SNMP++类库和编程工具Visual C++进行了具体实现,该工具可以作为复杂通信网络管理系统设计和实现的参考。随着网络技术的进一步发展,开放、异构的复杂网络管理系统将成为进一步研究的重点。