出处:http://www.ctax.org.cn/news/rdzt/bjdl/yxzp/jsyy/yxj/t20110104_624943.shtml
内容提要:随着Internet应用的急剧增长,越来越多的网络应用程序需要了 解流量等网络运行参数,以支持可区分的服务,因而,对以流量监测和性能分析为主要功能的网络管理系统有着巨大的社会需求。网络性能管理是进行网络性能分 析,确保计算机网络能够提供可靠而稳定的服务,促进网络资源的合理运用,使网络能够健康发展的重要手段之一。本文详细论述了一个基于 SNMP(Simple Network Management Protocol)的网络性能管理系统的设计及实现过程:通过SNMP协议对路由器上的MIB数据库数据进行定时采集,经过数据整理,得到性能管理所需的 各项指标数据,向用户提供了网络的性能查询。
关键词: SNMP协议 网络性能 管理MIB
随着网络的发展,计算机网络在我们的日常生活中已经变得越来越普遍。计算机网络的重要性在于它能够快速而有效地访问大量信息。我们如此依赖计算机网络,以
至于网络的崩溃就可能意味着日常生活的停滞。因此,在当今的信息化社会里,保持计算机网络的良好运行状态显得非常的重要。
一个组织花费大量的时间和资金建立起来的计算机网络,随着信息流的增加和网络的进一步扩大,潜在问题的数目会随之增加,这就需要不断的进行维护和优化,以
提高网络的性能,由此产生了网络性能管理的概念。网络管理是控制一个复杂的计算机网络使它具有最高的效率和生产力的过程,这一过程通常包括数据收集、数据
处理和数据分析并提供解决方案。网络性能管理,是网管系统中的重要组成部分。网络性能管理得目标就是掌握网络资源的利用情况,并通过对各种性能参数的提
取,反映网络的实际运动质量,分析网络资源的使用情况,维持网络传输品质,保障网络应用系统与服务顺畅运行,为网络的优化运行及带宽的调整提供决策支持。
性能管理包括网络性能数据监测、收集、统计和分析等功能。为管理人员提供依据。
国际标准化组织ISO将网络管理的功能划分为5个管理功能域MFA(Management Function Area):
[1]故障管理(Fault Management)。
[2]性能管理(Performance Management)。
[3]配置管理(Configuration Management)。
[4]计费管理(Accounting Management)。
[5]安全管理(Security Management)。
五大功能之间既相互独立,又存在着千丝万缕的联系。在五大网络管理功能中,故障管理是整个网络管理的核心。配置管理则是各管理功能的基础,其他各管理功能都需要使用配置管理的信息。性能管理、安全管理和计费管理相对来说具有较大的独立性。
故障管理功能
故障管理是网络管理的诸多任务中最重要的任务。故障管理是网络管理功能中与故障检测、故障隔离、故障诊断和恢复等工作有关的部分,其目的是保证网络能够提
供连续可靠的服务。对网络故障的检测依据是对网络组成部件状态的监测。当网络中某个组成失效时,网络管理器必须迅速查找到故障并及时排除。网络故障管理包
括故障监测、隔离和纠正三个方面,应包括以下典型功能:
[6]差错检测:发现网络故障,维护和检查差错日志,接收故障报告
[7]差错诊断:寻找故障发生的原因,执行诊断测试,以寻找故障发生的准确位置
[8]差错纠正:将故障点从正常系统中隔离出去,并根据故障原因进行修复
配置管理功能
配置管理是网络管理基本的功能,它负责监控和管理整个网络的配置状态。收集和监控网络设备的配置信息,供网络管理人员查询网络运行参数和配置状况;根据网
络管理其他功能生成的事件和网络管理人员的命令自动调整网络设备配置,以保持整个网络的正常操作。配置管理至少应包括以下功能:
定义配置信息;
设置和修改管理对象的属性值;
定义和修改管理对象间的关系;
定义和更改管理域;
监视属性值和关系的变化;
生成配置状态报告。
安全管理功能
网络安全管理有两层含义,即网络的安全管理和安全的网络管理,相应地,安全管理子系统也可分为两部分,一是网络管理系统本身的安全,二是被管网络对象的安
全。网络安全管理的首要功能是确保各被管网络资源,包括路由器等网络互连设备和主机、服务器等端系统及网络服务本身的安全,以及它们之间数据通信的安全。
另一方面,网络管理系统存储和传输的管理和控制信息对网络的运行和管理至关重要,一旦出现信息泄漏、被篡改和被伪造,将给该网络造成灾难性的破坏。因此,
网络管理系统还必须确保其自身的安全。
性能管理功能
一个计算机网络就像一条公路,信息通过它进行传输。正像高速公路会慢慢变得拥挤一样,用户们日益增长的要求也会使网络公路的容量负担过重,网络设备超负荷
运转,LAN和WAN连接饱和,结果导致性能下降。性能管理就是要保证网络保持在可通过和不拥挤的状态,为用户提供更好的服务。它通过下列途径实现这一
点:
监控网络设备和它们的相关连接以确定使用率和出错率。
保证设备和连接的容量不会被过度使用到对性能引起有害的影响程度。
性能管理包括下面四个内容:
收集网络设备和连接的当前使用数据;
分析相关数据,辨别使用趋势;
设置利用率阈值;
使用模拟确定如何调查网络达到最佳性能。
该性能管理系统最终实现如下目的:
1.启用独立的采集线程对广域网的交换机、路由器等网络设备的性能参数进行采集,高速写入数据库中;
2.同时启用独立的分析线程将收集到的数据进行统计分析,计算出网络设备端口的流量、吞吐率、丢包率等;
3.显示线程基于分析线程的输出结果以图形化的方式直观地显示出网络运行的情况。
通过收集主干网上交换机各端口的流入和流出字节数并进行处理,使管理人员可以在浏览器中以图表的形式直接观察,实时地观察网络的运行情况,发现超载的部
件,找出潜在的问题。通过对不同时刻点、不同时间段的网络流量进行分析,对网络性能进行长久的规划,及时完成网络设备的更新,从而避免网络饱和所引起的低
性能。
记费管理(略)
一、数据采集模块的实现
1数据采集频率
最小采集时间间隔在配置系统时确定,一般建议为3-5分钟,这里采用的时间间隔为每5分钟一次。当出现异常情况或管理员有特殊需要时,可以根据具体情况自行设定采集频率。
2数据采集对象的确定
数据采集是进行管理的基础,采集前要根据管理的需要,确定采集对象,也就是确定使用哪些MIB来进行性能管理。数据采集模块的采集对象列表如表1-1所
示。图1-1显示了使用MIB浏览器,使用IP地址及对象名找到该对象对应的对象标识符OID.MIB浏览器的实现界面如图1-1所示。
表1-1用到的MIB-II对象列表
Table.1-1 The Object List of MIB-II
3采集过程
1.获取SNMP数据包
用普通数据格式设置SNMP报文所需的数据项,包括设置报文标签,SNMP版本号,共同体名,PDU标签,Request ID,变量列表(OID)。
2.通信过程
在161端口接收网管工作站发来的请求报文,传递给SNMP报文处理模块进行处理;将SNMP报文处理模块生成的响应报文发送到网管工作站。
3.接收响应报文
定义一个接收响应报文的变量response,采用同步通信机制与被管代理通信,发送请求报文后获取到响应报文。函数的返回值是一个整数,用来判断通信是
否成功。如果通信成功并且响应报文没有错误,就调用数据分析处理模块,把指向响应报文中绑定变量列表的指针作为参数,传递给数据分析处理模块;如果有错
误,进行异常处理。如果响应正常,送数据分析处理模块,直到数据分析处理结束,释放此次响应所占用的内存资源。由于以5分钟每次的采样频率进行连续的数据
采集,所以一直保持会话通道连通的状态,等待5分钟后,如程序流程图所示,重新创建PDU,发送,接收,如此循环。在循环跳出之后,关闭会话。
4阈值设定及告警
性能管理过程中的另一个步骤是设置使用率阈值。可以对影响网络性能的各项设置网络阈值,对一台网络设备或主机来说可能设置的阈值包括处理器使用率、警告持
续时间等。对一个连接则可以选择对出错率、平均利用率和总吞吐量等项设置阈值。可以针对不同的时间段和性能指标进行阈值设置。通过设置阈值并进行阈值检查
可以在网络将出现性能问题时及时向管理人员告警。一旦阈值被设定,当网络性能达到一个特定的出错率或使用率时,性能管理工具就会向管理者汇报。
二、数据分析处理模块的实现
1性能参数的计算及意义
用到的性能参数有平均速率、利用率、丢包率、差错率、吞吐量等。这些性能参数都分为输入和输出两种情况。计算公式如下:
平均输入速率=△ifInOctets/T
平均输出速率=△ifOutOctets/T
输入利用率=(△ifInOctets*8)/(ifSpeed*T)*100%
输出利用率=(△ifOutOctets*8)/(ifSpeed*T)*100%
输入丢包率=△ifInDiscards/(△ifInUcastPkts+△ifInNucastPkts)*100%
输出丢包率=△ifOutDiscards/(△ifOutUcastPks+△ifOutNucastPks)*100%
输入差错率=△ifInErrors/(△ifInUcastPkts+△ifInNucastPkts)*100%
输出差错率=△ifOutErrors/(△ifOutUcastPkts+△ifOutNucastPkts)*100%
输入吞吐量=(△ifInOctets-△ifInDiscards-△ifInErrors)/T
输出吞吐量=(△ifOutOctets-△ifOutDiscards-△ifOutErrors)/T
还可以在计算各种丢包率和错误率的时候不考虑通信量的总量情况,因为有时候的传输错误会导致大量的通信量被重新发送,丢包率和错误率影响了通信总量。这种情况下,可以不考虑通信总量,只察看丢包和错误统计就能了解到是否存在拥塞或者错误。
此时计算公式如下:
输入丢包率=ifInDiscards/T
输出丢包率=ifOutDiscards/T
输入差错率=△ifInErrors/T
输出差错率=△ifOutErrors/T
以上公式中T表示查询频率,△表示某对象值在一个查询周期内的变化差值。
导致错误或丢弃的原因有多种:接口运行不正常、媒体有问题、设备中的缓存有问题,等发现了错误以后,就可以着手解决它们。但是并不是所有的丢弃都表示有问
题。例如,一个设备可能由于它接收到了许多未知或不支持的协议的包而有很高的丢弃百分比。这种情况导致丢弃的包数也在其中。比如一个只进行互联网络协议路
由的网络设备,该设备有一个接口在以太网上,在那里许多个人计算机构成了一个有客户和服务器的网络。它们以以太网广播在它们之间发送消息。
通过SNMP从interface组读出的这些数据都是原始数据,需要经过处理才能直观地表示网络流量情况。我们的网络流量监测系统通过定时地采集这些数据,按照下列公式计算就可以得出传输情况。性能分析的6种数据类型定义如下:
1流量=接口接收的字节数+接口发送的字节数=ifInOctets+ifOutOctets;
2可用率=流量/接口速率=(接口接收的字节数+接口发送的字节数)/接口速率
=(ifInOctets+ifOutOctets)*8/ifSpeeds;
3出错分组数=接口接收的分组中被丢弃的字节数+接口发送的被丢弃分组数
=ifInDiscards+ifInErrors+ifInUnknownProtos+ifOutDiscards+ifOutErrors;
4差错率=出错分组数/总的接收和发送的分组数=(接口接收的分组中被丢弃的分组数+接口发送的被丢弃的分组数)/(接口接收的分组中被接受的单播分组数+接口接收的分组中被接受的广播和多播分组数十接口发送的单播分组数十接口发送的广播和多播分组数
=(ifInDiscards+ifInErrors+ifInUnknownProtos+ifOutDiscards+ ifOutErrors)/
(ifInUca stPkts+ifInNucastPkts+ifOutUcastPkts+ifOutNUcastPkts);
5接收和发送字节的速率=(ΔifInOctets+ΔifOutOctets)/Δt;
6发送和接收数据包速率=(ΔifInUcastPkts+ΔifInNUcastPkts+ΔifOutUcastPkts+
ΔifO utNUcastPkts)/Δt;
由此,我们得到了交换机一个端口的流量情况,交换机上所有网络端口求和就得到了整个局域网中的流量情况。
2性能分析
1.拥塞问题
网络性能管理一个主要任务是发现和处理网络的拥塞问题,网络拥塞的原因有很多。由于通信子网中每个结点的处理速度、缓冲器容量和物理信道的传输速度是有限
的。当发往子网的报文分组数目超过子网正常的处理能力时,某些结点就会出现处理速度跟不上,信道的传输速率跟不上,需要的队列被填满,缓冲器被用光,出现
大量丢失报文分组的现象,就发生了拥塞。可见网络拥塞的原因主要是通信子网内传输的分组总数太多。
当一个网络设备丢弃了许多试图离开接口的包,而输出的字节数却在减少,即丢包率增长很快而利用率增长缓慢,则说明该设备的这个接口发生了拥挤。
对于获得的响应时间值,如果持续增大说明该网络节点到路由器之间的网络可能出现了拥塞。或者该节点自身出现了问题。
2.判定网络传输高峰时间
以判断每天的使用高峰时间为例。这需要每天的流量历史数据,通过对这些数据的过滤查询得出。需要先设定一个用于判断属于高峰用量的流量阈值,然后使用查询
条件进行查询。所得到的分析结果通过曲线图的方式直观表示出来,将一天的时间作为横坐标,以流量作为纵坐标,可以得出一天内的高峰所在,将每天的高峰统计
情况单独存入一张数据表,这样当旧的原始数据表删除时,以后仍然可以对高峰时间进行历史统计。在存储了一定天数的统计表后,通过概率统计知识对查询结果进
行取样计算,看统计出的高峰时间是否具有普遍意义。
3.预测利用率的发展趋势
随着网络的发展,上网的机器和访问量可能增加,如果超出网络传输能力负荷,会造成网络拥塞,影响用户使用。我们可以根据历史的利用率的增长趋势,预测网络
可能的发展速度。可以设计这样一张曲线图来帮助观察历史情况,以时间为横坐标,利用率为纵坐标。计算从建网初期以来的每天利用率的平均值,作为一个点,描
画在曲线图上,观察这些点构成的曲线的趋势。
3阈值设定及告警模块
1几个概念
性能管理应用一般要观察接口的错误率。要完成这些,需要首先找出接口的总包数和错误数。接口收到的包的总数为ifInUcastPkts和ifInNUcastPkts之和,发出的包的总数为ifOutUcastPkts和ifOutNUcastPkts之和。
可以使用相似的方法利用对象ifInDiscards和ifOutDiscards监视被接口丢弃的包数。
对象ifOutQlen可告知一个设备的接口是否在发送数据上有问题。当等待离开接口的包数增加时,该对象的值也相应增加。在发送数据上的问题可能是由于
接口上的错误导致的,也可能是由于设备处理的包的速度跟不上包的输入速度。大量的包等待在输出队列中虽不是一个严重的问题,而它不断的增长可能意味着接口
发生了拥挤。
IfOutDiscards、ifOutOctets一起给出网络拥挤情况,如果一个设备丢弃了很多试图离开接口的包,而输出字节的总数却在减少(由ifOutOctets表示),说明接口可能发生了拥挤。
2具体算法
由上面的定义可知,我们可以根据网络的运行情况制定出符合实际情况的阈值,以便用于检测。具体的流程如所述:
设置所需对象的阈值
从原始数据库中读取对象值的记录,并计算出相应的性能指标。
比较计算所得的值是否超过阈值,如果超过,调用故障报警模块进行报警。如果没有,经过一定时间间隔再重复取数计算并检测。
三、数据显示模块的实现
图3-1、图3-2、图3-3显示的是某区两核心交换机之间链路上的流量,反映的是当天、本周、本月、本年的流量数据。横坐标表示时间,即24个小时,纵坐标表示流量(单位为M)。
1广域网内流量的统计与显示
图3-1显示的是基于地址流量的统计图,其中包括流入量和流出量两方面的统计,统计与显示结果如图所示。
2网络设备性能测试
图3-2显示的网络设备性能测试结果,其中主要对网络设备的CPU和内存进行统计,横坐标表示时间,即24个小时,纵坐标表示流量,该图反映了随着时间的变化,CPU和内存所使用的流量会由于多种因素不断发生变化。
3线路流量的测试
图3-3显示的线路流量的测试结果,其中主要对流入量和流出量进行统计,横坐标表示时间,即24个小时,纵坐标表示流量,该图反映了随着时间的变化,流入
量和流出量会由于多种因素不断发生变化。对线路流量的监测抽取了本周及本月的流量数据进行了统计,统计结果如线路流量的曲线图所示。
四、性能管理数据库的设计与实现
在整个性能管理系统中,性能管理数据库起到举足轻重的作用。它存储采集到的数据,以便数据分析处理模块进行分析处理。
1数据库的详细定义
2数据库的实现
ODBC技术
ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open
Services
Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用
SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC.
应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起
ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。(代码略)
本文重点讨论了所设计的性能管理系统中与流量控制相关联的数据采集、性能分析与预测三个模块的实现方法以及数据库的设计实现与管理,其中数据采集部分着重
考虑了如何确定采集频率,如何定位采集对象以及确定恰当的采集方法;性能分析与预测部分着重考虑了影响系统性能的基本指标以及如何使性能预测更接近于实际
状况;数据库的设计实现与管理部分主要考虑了如何通过ADO.NET访问数据库。
参考文献:
[1]岑贤道,安常青,网络管理协议及应用开发[M].北京:清华大学出版社,1998, 57-59
[2]杨家海,任宪坤,王沛瑜,网络管理原理与实现技术[M].北京,清华大学出版社,2000,25-35
[3]白英彩,计算机网络管理系统设计及应用[M],北京,清华大学出版社,1998,87-88
[4]胡谷雨,现代通信网和计算机网管理[M],北京,电子工业出版社,1996,68-79
[5]网络管理及计费系统的设计与实现[J],徐强广西师范大学学报,2005,47(6)
作者单位:
山西省阳泉市国家税务局