对于实际运行中的网络应用系统,系统管理员需要对其运行效率进行监控和性能分析,通过有效的管理开展最佳服务。对于欲建的网络应用系统,网络设计者需要验证其设计方案的可行性,以建立最优的网络环境。网络规模越大,网络性能监测和性能分析工作越显重要。
对网络性能进行全面监测,是有效管理网络的基础。这种方式之所以目前还没有被广泛采用,主要是因为传统网络监控工具存在着以下几个缺点:网络监测工具本身会增加网络的流量,对网络本身造成很大的影响;网络监控工具造价太高,过于昂贵;网络监控工具都比较复杂,需要专业人士才能操作。因此,需要开发一种更方便有效的网络监测工具,使其具有更强的实用性。
一、开发思路及设计原则
我们在制定系统框架设计方案时,力求克服现有网络监测系统所存在的问题,例如服务器端采用开放式操作系统Linux(同时提供到Unix的移植)以降低成本,将管理界面设计得简单明了,降低对操作者的专业要求等等。
同时,考虑到系统的开放性、可相互操作性和灵活性,应创建一个独立平台的通用网管系统,我们可以使用Web服务器和浏览器来提供静态、动态和交互的管理信息。基于Web的性能监测系统有很多优点,例如:管理者的操作不受地理位置的限制,可以在任何装有Web浏览器的平台下访问;对系统的维护只需在Server上进行,无需在客户端修改,降低了维护费用;可以获得各种可在任何操作系统平台上使用的简单而有效的管理界面,特别适合于低成本、易于理解和远程访问的网络运行环境。
我们可以采用分布式测量方法,在每个被测节点处安装一个测量程序,由该程序完成相应的测量工作,并将最后的测量结果返回服务器。这样不仅避免了将所有的监测工作全部放在服务器上,造成服务器负载过重的弊病,减轻了服务器的负担,而且使系统具有很强的可扩展性。当网络拓扑结构扩展的时候,已有的系统不需要做任何变动,只需要在新增的节点上放上测量程序,在配置信息中加入新增节点的相关测量信息,就可以实现对整个扩展后的系统的监测。
服务器端采用Linux下的标准C系统,客户端软件利用VC++进行程序设计。VC++提供了大量的框架模型及类库,使软件的开发与设计变得更为方便。利用C++语言也是为了保证软件各部分的接口与软件运行的速率。
二、具体系统设计与实现
1.开发目标
国内外已有的性能监测软件,主要是对网络硬件设备以及网络提供的各种服务性能进行监测。本系统的侧重点是从网络层(IP层)给出网络的性能指标,从而为网络性能的分析和管理提供一定的依据和必要的数据。其中主要的性能参数包括以下几方面。
(1)可用性(Availability):链路的可用性是指有物理连接的链路的性能状况。这个信息可以通过类似于Ping程序来实现,即向目标节点发送ICMP报文,如果总是或者过于频繁地出现在等待时间内没有ICMP报文的回应信息,则判断该链路出现故障,是不可用的,管理员应该采取相应的措施。
(2)点到点的延时(End to End Delay) :网络延时是指报文在指定两点间的往返时间(即我们所说的rtt时间)。这个信息也可以使用类似于Ping程序来实现,即向目标节点发送ICMP报文,并根据收到的ICMP报文的回应报文与发送ICMP报文的时间差,求出两点间的延时信息。
(3)丢包率(Packet Loss Ratio):丢包率是指在网络中由于拥塞或其它原因被路由器抛弃的报文在节点发出的报文总数中所占的比例。同样可以通过向目标节点发送ICMP报文,然后通过接收到的回应报文和其发出报文的总数的比值得到这个参数。
(4)路径信息(Routing Information):主要记录两个节点间的路由情况,即源节点在到达目标节点的过程中,实际经过了哪些节点。
2.系统总体框架
本系统采用分布式测量和集中管理的办法,整个系统采用Client/Server的方式,分为三大模块:测量模块、分析模块和用户接口模块,系统总体框架如图1所示。其中,测量模块负责网络链路状态的测量,它对用户到主干网节点、主干网节点之间、主干网节点到用户的链路性能(网络延时和丢包率)进行测量,并将测量所得结果发送给服务器存入测量数据库,以备分析模块时使用。分析模块定时从测量数据库中取出测量数据结果进行处理,通过对各项指标的测量结果的综合分析,将分析结果写入分析数据库中,同时结合网络运行的特点以及用户与ISP之间的服务水平协议(SLA)的要求,对网络性能做出初步判断,并将性能不满足指标的链路以报警信息的形式报告给管理员。用户接口模块负责将网络管理员所配置的信息写入配置数据库中,同时查询分析数据库,将分析的结果以Web页面的形式返回给管理员查看。
这三种模块主要通过数据库进行联接。该系统中存在三种数据库:(1)测量数据库,用于存放测量模块获得的测量信息;(2) 分析数据库,用于存放分析模块的统计信息;(3)配置数据库,用于存放测量模块需要的各种测量配置信息,如测量节点、测量间隔时间、是否需要详细路径信息等等。
系统的总流程如下:
网络管理员通过Web页面对系统参数进行配置,用户接口模块读取配置信息后,将结果存放于配置数据库中;
测量模块向服务器发出请求,服务器读取配置数据库的信息后,将所得配置信息返回给测量模块,使其设置测量方式;
测量模块按照测量参数进行测量,并将测量结果数据返回给服务器,由其存放于测量数据库中;
分析模块定时读取测量数据库中的数据信息,对其进行统计、分析,将结果存放在分析数据库中,并将测量数据库中分析过的数据删除;
当网络管理员想了解网络状况的时候,用户接口模块会读取分析数据库中的数据,并通过Web界面,以图形、报表、图表等多种形式返回给管理员,并对性能较差的链路给出报警信息。
3.测量部分的设计与实现
测量模块负责网络链路状态的测量,包括三种测量方式:(1)用户到主干节点的测量;(2)主干网节点间的测量;(3)主干网节点到用户的测量。(2)、(3)都是从监控工作站发起的有规律的、可由网络管理员控制的主动测量。(1)是由用户发起的到任意站点的测量(我们称之为被动测量),是不可预测的。通过用户接口界面,管理员可以配置测量模块的各种配置信息,然后将这些配置信息存到配置数据库中,最后由服务器读取配置信息,将其传送给测量模块,使其根据配置信息指定的测量方式进行测量。
主动测量主要是骨干网分布节点之间的有规律的定时测量和骨干网测量节点到用户的随机抽样的定时测量。主动测量分为两类。
(1)骨干网测量节点到骨干网任意被测节点之间的测量:这部分测量的目的是为给出测量节点和被测节点之间的网络性能矩阵,并为总控分析模块提供对主干网的分析数据。测量参数由管理员事先配置。
(2)骨干网节点到用户的测量:这部分测量的目的是为了给出测量点到接入用户之间的网络性能,进一步使得网络管理人员判断接入服务器和其他相关设备是否工作正常。我们将从接入服务器所持有的IP范围中做随机抽取一定数量的IP地址,然后进行测试。测量方法和细节与前面类似。
主动测量的流程如下:
(1)测量模块向服务器发起请求,通过服务器的认证后,服务器将从配置数据库中得到的数据传给测量模块;
(2)测量模块根据得到的配置参数进行测量;
(3)测量完毕后,测量模块将所得测量信息传回服务器,并使自己进入睡眠状态,直至下一次测量开始(配置参数中有一个测量时间间隔的参数控制测量间隔);
(4)服务器得到测量参数后将其传回测量数据库,一次测量完成。
被动测量是由用户随机发起的对检测点的集中测量。其测量不仅可以帮助用户了解访问某些站点速度不理想的原因,还可以帮助ISP在处理用户投诉时具体定位故障位置。考虑到管理员和普通用户的不同要求,客户端测量模块又可分为两个部分:从管理员关心的角度出发,程序开始运行后将自动定时测量固定节点的性能(如省网出口路由器、国家网出口路由器等),这将帮助管理员定位网络故障位置;从用户关心的角度出发,用户可以对任意他所关心的节点发起测量,了解当前网络状况。
自动定时测量的流程与主动测量一样,这里不再重复了。用户发起的测量流程如下:
用户选择测量节点IP以及其它测量参数;
测量模块根据参数进行测量;
测量结果以图形的形式返回给用户。
4.分析模块的设计与实现
分析模块主要对测量模块获得的数据进行分析,分析参数主要包括可用性、延时和丢包率。根据用户的要求,分析包括:(1)点到点(或端到端)的延时或丢包率随时间的变化规律;(2)主干节点与相邻链路的延时或丢包率的空间分布规律;(3)用户到主干节点的延时或丢包率随时间的变化规律;(4)主干节点到用户的延时或丢包率随时间的变化规律;(5)用户到省网出口路由器或国家网出口路由器的延时或丢包率随时间的变化规律;(6)主干节点到主干节点的路径变化规律;(7)用户到主干节点的路径变化规律。
分析模块是一个单独运行的进程,它是按照设定时间间隔定时分析。其操作步骤为:
分析模块读取测量数据库的测量信息;
分析模块进行统计、分析;
分析模块将分析后的数据存放在分析数据库中。
分析模块如果在分析过程中发现网络出现错误或出现需要告警的信息,就将这些信息写入错误、告警数据库。
5.用户接口模块的设计与实现
用户接口模块主要用于用户配置测量模块需要的测量参数,以及查询分析模块分析后的数据。它包括两大部分:用户配置接口和用户查询接口。
用户配置接口是用户配置部分的程序接口,它读取用户的配置信息,并将这些信息存入到配置数据库,包括六种参数设置。
(1)主干节点间测量参数设置:设置的参数包括测量方法的选择(Ping或Traceroute测量),每次测量发送数据报的数目、大小、TTL值等。设置的结果是给分布测量中的主干到主干测量部分使用;
(2)主干节点间连接关系设置:设置主干节点间的连接关系信息,从这个设置的结果可以反映主干网的拓扑结构信息。设置的结果是给性能分析中的主干节点空间分析使用;
(3)主干节点与接入服务器设置:设置主干边缘节点、接入服务器以及用户节点的连接关系信息,主要设置包括边缘节点连接接入服务器IP地址以及每个接入服务器对应的IP地址范围。设置的结果是用来在写数据库时确定用户所属的接入服务器;
(4)主干节点IP、域名和别名设置:设置主干节点的IP地址、域名、别名,目的是便于用户记住已设置的主干。设置的结果是给用户接口中的查询部分使用。
(5)用户测量参数设置:设置用户测量主干节点和出口路由器的一些参数,具体参数和(1)中差不多,设置的结果是给分布测量中的用户测量部分和主干到用户测量部分使用。
(6)省网、国家网出口路由器设置:设置网络的省网、国家网的出口路由器。设置的结果是给分布测量中的用户测量部分使用。
6.用户查询接口的功能
用户查询接口是用户查询分析数据的程序接口,它读取测量模块分析后的数据,并将这些数据以各种形式显示出来。数据库维护模块用于整理分析数据库和报警、错误数据库中的过时数据。它主要包括8个子功能。
(1)主干节点间的性能查询:给出主干节点间的性能矩阵,主干节点间的性能随时间和空间的分布规律图,以及主干节点间的SLA评价;
(2)主干节点到用户的性能查询:此功能模块是给出主干节点回测用户时得到的网络性能,包括最小、平均、最大时延和丢包率,有最新、当天、一周、一月和总体这五种性能表;
(3)用户到主干节点的性能查询:此功能模块是给出用户测量主干节点时得到的网络性能,包括最小、平均、最大时延和丢包率。有最新、当天、一周、一月和总体这五种性能表;
(4)主干节点间的路径信息查询:主干节点间的路由路径信息查询结果可由图形和(或)报表两种形式给出,包括路径经过的各个节点的IP地址以及这条路径走的次数;
(5)主干节点间的空间信息查询:此功能模块用来查询某个主干节点到其所有相邻主干节点的网络性能,结果以图形和(或)报表的形式给出;
(6)用户到出口路由器信息查询:此功能模块是给出用户测量主干节点时得到的网络性能,包括最小、平均、最大时延和丢包率,有最新、当天、一周、一月和总体这五种性能表;
(7)用户到主干节点路径信息的查询:此功能模块用户到主干节点间的路由路径信息,结果可由图形和(或)报表两种形式给出,包括路径经过的各个节点的IP地址以及这条路径走的次数;
(8)配置信息的查询:此功能模块用来让使用者查询系统已经设置的运行参数。所有的结果都是以表格形式给出。
三、总结
该网络性能监测系统具有三个功能:对局域网和广域网的设备和链路进行监控;检测各种可能的错误,并给出报警信息;帮助定位和解决故障。该系统在开发时选取普通PC机以及免费的操作系统Linux(基于Linux的大型数据库Oracle也有免费下载版本),可以降低开发成本。系统的监测时间间隔是可以由管理员根据网络情况自动调整进行,这样避免了在网络流量过大的情况下,监控系统本身所产生的大量数据包使网络性能恶化;另外,该系统的各个模块之间均是以数据库来连接的,耦合性不强且易于扩展。当然,本系统也还有些不足之处,例如用户端的测量模块,目前是独立的运行程序,需要用户下载才能使用,以后的版本中可以考虑用浏览器插件的形式实现。
该系统在广州电信局试运行过,用于对广东省163网的性能进行监测。在试运行过程中,该系统运行可靠、稳定,各项功能达到设计要求,管理员可以通过它对网络进行监控,及时发现网络中存在的问题,并采取相应的措施,该系统为管理员提供了多种网络监控的工具。
----《通信世界》