基于SNMP的通信网络性能管理模块设计

引 言
目前通信网络结构越来越复杂,通信网络使用的设备也越来越复杂,随着网络的大型化与复杂化,如何有效地进行网络管理日益成为人们普遍关注的问题。iso定义的网络管理包含五个功能域:配置管理、故障管理、性能管理、安全管理和计费管理,其中性能管理的目标是优化网络性能,提高运行质量。性能管理是测试组成网络各个单元性能的过程,它包括测试网络连接和当前网络段利用率、识别可能发生拥塞域、杜绝高出错率和检测网络传输状态等,帮助用户解决当前网络存在的问题。
目前典型的网络管理标准主要有两大体系:osi的cmis(common management information service,公共管理信息服务)/cmip(common management in-formation protocol,公共管理信息协议)和ietf的snmp(simple network management protocol,简单网络管理协议)。snmp由于易于实现和广泛的tcp/ip应用基础而获得厂商的支持。而且,由于snmp不断完善,snmp中的安全问题也得到了一定程度的解决,使snmp得到更快的发展。
1 snmp网络管理模型
snmp网络管理模型包括四个关键性部件:管理站、管理代理、管理信息库和网络管理协议,如图1所示。
(1)管理站(manager)是一个独立的设备或者是一个共享网络中的一员,为管理者和网络管理系统提供接口。
(2)管理代理(agent),一般厂家的网络产品如路由器、交换机等在出厂时都已配置好相关的snmp管理代理,对于不支持snmp协议的设备,可以开发委托代理(proxy agent)来支持snmp协议。管理代理的功能是响应从网管站发出的读取请求(get)和设置请求(set),并且给网管站发送事件及告警信息(trap)。
(3)管理信息库(mib)存放了该设备上被管对象资源的所有信息,每个被管对象有一个惟一对象的对象标识符(oid)。
(4)snmp网络管理协议主要具有以下三个功能:取值(get)使网管站能够从代理处获取相关对象的值;设置值(set)使网管站能够在代理上设置相关对象的值;告警信息(trap)使代理能够通知管理站、代理端(agent)的管理信息库mib值的重大变化以及其他重要事件发出。
2 性能管理模块的设计
2.1 性能管理模块基本结构
根据上述对snmp网络管理模型的讨论,设计了一种性能管理模块的基本结构,如图2所示。该性能管理模块主要包括性能数据采集、性能分析和数据管理存储三个部分。其中,数据管理存储主要是针对数据库管理的具体技术,这里主要讨论性能数据采集和性能分析技术及其实现问题。
2.2 性能数据采集
性能数据的采集方式主要有三种:循环定时模式、实时模式和事件驱动模式。
循环定时模式 预先配置好定时时间间隔,由服务器端进行采集,采集的数据存入数据库,也可以根据需要同时发往控制台,用于统计分析的性能参数主要采用该模式进行数据采集。
实时模式 由用户在控制台进行操作,用于采集被管设备的当前性能数据,采集的数据马上送回用户界面,控制台程序在判断其是否超过阈值后,将数据以某种形式实时呈现给用户,本类数据主要用于监测当前性能,一般不存储到数据库,不作为历史数据进行查询。事件驱动模式 通过对关键事件的预定义,agent在这些事件发生时,向管理者发送trap报文。事件驱动对监视状态变化不很频繁的对象时用处很大,并且可以在网络设备发生异常情况时,及时向管理者发出报警信息。
2.3 性能分析
性能分析一般分为历史性能分析和实时性能分析。历史性能分析包括对历史信息(如:性能日志及性能报告等)的查询、检索,从数据库提取性能历史数据,进行分析、计算性能指标,再经过统计和整理,以直观的图形显示和表数据来反映性能分析的结果,并生成性能日志,管理员可以设定时间范围,选择该时间段内设备的某种属性信息进行统计,还可以选用各种图形显示方式,直观地查看性能状态。
实时性能分析 提供实时数据采集、分析和可视化的工具(如mib浏览器),可以对流量、负载、丢包、设备温度、内存利用率、网络延迟等网络设备和线路的性能指标进行实时监控,并可设置数据采集的时间间隔。
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++进行了具体实现,该工具可以作为复杂通信网络管理系统设计和实现的参考。随着网络技术的进一步发展,开放、异构的复杂网络管理系统将成为进一步研究的重点。

2016年中国无人驾驶产业报告出炉
移动广电5G共建共享迈出重要一步,建网、维护、运营如何开展?
以色列将投资3000万美元建设生物芯片设备研发中心
苹果放出iOS13.3公测版 修复杀后台等问题
VivoX5Max的铂金版可使用4150mAh电池
基于SNMP的通信网络性能管理模块设计
织物静态拉伸测试仪的检测原理和试验方法介绍
华为云推出场景化解决方案帮助制造企业加速数字化转型
一文解析扇出型封装技术
腾讯引进Nintendo Switch ™将首次参展进博会
电源模块替代开关电源的优点
扎心了老铁,小米6发布时间确定,小米6要来了
日本优衣库采用机器人打包,效率高生产快
YouTube 现已支持 PWA 网页应用,Chrome 浏览器直接安装
紫光展锐新一轮融资和股权重组已于日前完成
CAT蓄电池-德国卡特彼勒蓄电池(中国)有限公司
宁德时代将成为现代E-GMP平台电池供应商
为什么分页场景下mysql请求速度非常慢
叶片营养诊断仪的特点
氢气检测仪应用于哪些领域?