ICMP回显的监控应用(1)


我们以前曾经讲解过ICMP协议的有关内容。了解了ICMP的基础知识,那么对已ICMP协议的应用,我们今天来讲解一下ICMP回显的内容。这里面我们,我们主要是根据对监控系统的分析来学习这部分知识。

一、概述

在电信级设备功能日益完善,组网日趋复杂的今天,对设备的管理监控已经成为保障设备稳定、正常运转的必要手段.其中,对底层通信网络的监控是整个监控管理系统的核心和基础.

以前众多企业级的通信核心网设备因为没有完善的监控管理,缺乏告警及系统运行状态的相关日志信息,致使维护人员无法准确掌握设备运行状态,设备运转达不到用户所必须的稳定性及安全性要求.尤其当网络物理硬件出现故障造成网络中断时,如果不能及时发现并定位,不仅会造成用户长时间通信中断,而且会让我们厂商的研发和工程人员无谓浪费时间去逐步查找软件问题.针对这种现象,我们提出一种网络状态监测的解决方案.

这种监测方法主要是基于ICMP协议开发的,基本原理类似Windows自带的Ping功能.Ping的目的是为了测试网络中的另一台主机是否可达.该程序给主机发送一份ICMP回显请求报文,并等待返回ICMP回显应答.通常Ping是对两个TCP/IP系统连通性进行测试的基本工具.它只利用ICMP回显请求和回显应答报文,无须经过传输层TCP/UDP),从而将问题定位到IP层以下,避免了传输层和应用层的问题干扰.Ping服务一般在内核中实现ICMP的功能.

由于Ping具有上述特点,其统计结果信息可以被利用显示底层传输网络的状态.关键的统计数据有:

报文抵达序列,由ICMP序列号ICMP-seq)显示;

每个报文往返所用时间,单位为ms毫秒);

报文丢失百分比,它在ping命令输出的总结行显示.

其中,序列号用于标识每一个响应包的先后顺序,用于检验网络传输是否会重复或失序;往返时间RTT可以显示出网络传输状态的好坏;而报文丢失百分比则是对网络传输质量的统计评估.

基于上述特性,我们提出一种多方向网络状态监测的方法,并简要说明其实现原理.

二、网络状态监测实现原理

TCP/IP三层网络作为应用层传输数据的基础,尤其是电信级交换数据的传输基础,无论从安全性还是可靠性上都有非常高的要求,因此,网络状态监控已经成为目前众多设备提供商的研究重点之一.

如果仅仅使用Windows或者Linux系统自带的Ping功能作为状态监控手段,我们只能实现单一的一台服务器到另一台服务器的通信监测.如果该服务器与多个其它服务器同时建立TCP/IP连接,就必须通过多次重复使用ping命令才能达到同时监控每条链路方向的目的.对于复杂的电信核心网来说,单一的点对点监控已经无法满足其发展需求,我们必须找出一种单台服务器可同时监控多台几十甚至几百台)服务器的跨平台网络状态监测方法,以满足集中监控整个核心网络的目的.

基于上述原因,利用ping的原理开发出一种用于多点通信状态监测的系统,具体实现机制如下:

监控系统模块通过指定接口函数接收待监测的客户端服务器IP地址,将该客户端的地址记录到内部统计结构列表中,并在记录时判定该地址与已保存地址的重复性重复的地址将不会被二次记录),然后,通过定时器周期向所有客户端地址方向发送ICMP探测包,对其链路状态进行监控.

监测过程中,分别对每一被控链路方向的收发ICMP探测消息进行统计:当收到响应的时延小于用户指定阀值的时候,记录该消息的接收时间、序列号,以及接收ICMP响应的RTT往返时间,否则做丢包处理.通常情况下,由于电信级设备的高要求性,我们认为响应时间大于1s的网络是不可用网络,属于严重堵塞或中断状态,必须告警并尽快查明恢复.正常通信时,网内响应时间应小于10ms,网间小于100ms才是具有高可靠性的传输网络.发送ICMP探测包的周期应该由用户根据安全需要自行设定.

每发送10包ICMP探测消息后,应该对各被控方向的整体网络状况进行一次统计,内容包括收到响应的数量、时延及丢包率等.将所有的统计数据全部记录在指定目录下的log日志文件中,日志文件的大小在大于一个阀值时应该保存为备份文件,然后重新记录.通过日志在本机中查看服务器在一个周期时间例如一周)内的网络通信状况,便于维护人员及时发现并提前避免传输层的问题.

这里需要设置一个周期上报线程,每隔一个用户指定的时间周期,通过计算,将网络状态统计数据主动上报到操作维护台.上报内容包括被监控端的IP地址,RTT往返时间和丢包率等.此外,该线程还对每个被监测客户端的收发消息进行差值统计,一旦发现丢包立即通过接口函数上报告警至维护台.告警内容包含监控客户端的IP地址和告警级别.

需要注意的是,由于采用多方向连续ICMP监,所以,对于ICMP响应消息一定要进行合理的区分,以避免各个监控方向的统计混乱.由于传输网络具有不确定性,并不能保证每一包到达的先后顺序,此时通过IP地址、序列号和消息pid号区分响应消息就显得尤为重要.另外,为了使用发送接收超时设置,必须设定socket为SO_RCVTIMEO和SO_SNDTIMEO方式,否则一旦某一监测方向出现网络超时中断问题,程序将面临被悬挂死锁的危险.

当返回ICMP回显应答时,要保存消息序列号和TTL生存时间,并计算探测消息往返时间.ICMP消息序列号计数从0开始,每发送一次新的回显请求,序列号加1.程序记录返回的每个分组的消息序列号,供查看是否有分组丢失、失序或重复,并通过在ICMP报文数据中存放发送请求的时间值来计算往返时间.当应答返回时,用当前时间减去存放在ICMP报文中的消息发起时间,即往返时间.

基于ICMP的网络监测方法,优点是具有平台无关性.无论服务器、普通计算机或者电信交换机,只要是支持TCP/IP协议的操作系统,都可以被列为监控对象.即此监控方式不受被控端所使用的操作系统和操作平台限制.这样不仅提供了极强的平台通用性,还大大减少了开发和维护所需成本.


相关内容

    暂无相关文章