基于ICMP协议的网络延迟测量研究

时间:2022-06-15 02:08:03

基于ICMP协议的网络延迟测量研究

摘要:网络规模的扩大和网络数据拥塞现象的频繁发生,要求对网络延迟的测量理论和方法进行深入研究。基于ICMP这一最常用的TCP/IP协议,可以有效的对网络延迟进行测量,文章介绍了利用ICMP进行延迟测量的常用报文和进行延迟测量的基本方法,并给出了应用实例。

关键词:网络延迟测量;ICMP;报文;LSRR

中图分类号:TP393文献标识码:A文章编号:1009-3044(2012)06-1271-02

Research of Network Delay Measurement Based on ICMP

HE Hui

(Network Center, Lanzhou Polytechnic College, Lanzhou 730050,China)

Abstract: The expansion of the scale of network and network data of the phenomenon of congestion frequent, asked to delay the measure? ment network theory and method for further research. Based on the most commonly used ICMP TCP/IP protocol, can be an effective measure of network delay, the article introduced the use of the commonly used for measuring delay ICMP messages and introduce the basic method of measurement, and the application example was given.

Key words: network delay measurement; ICMP; datagram; LSRR

网络延迟是报文在传输介质中传输所用的时间,即从报文开始进入网络到离开网络之间的时间,单位为毫秒(ms)。要测量远端网络节点与管理工作站的延迟情况,须追踪(Trace)报文传输所经过的网络路径,逐一测量报文传输路径上各网段的延迟时间。若要测量管理工作站之外两个相邻节点A、B之间的网络延迟,需要向这两个A、B节点发送报文,用报文返回的时间减去报文到达A节点和从B点返回的时间,即可得到报文通过A、B节点之间的延迟时间,最常用延迟测量方式是TCP/IP协议所提供的ICMP(Inter? net Control Message Protocol,Internet控制报文协议)[1]。

1 ICMP协议与常用报文

1.1 ICMP协议

ICMP协议是一种面向连接的协议,用于传输出错报告控制信息。ICMP是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动向发送端发送ICMP消息。

可以将ICMP协议定义的9种报文格式(Message Type)分为两类[2],第一类是错误报文(Error Message),共5种,如表4.1所示;第二类是消息报文(Information Message),共4种,如表4.2所示。当数据在IP网络传输有异常情况产生时,被测主机或接收端主动向发送端(网管工作站)发送消息,提醒发送端停止或调整信息发送方式,这些由接收端向发送端送出的消息就是第一类格式的报文,即错误报文。第二类(消息报文)由数据的发送者主动提出,希望目的主机(接收端)回应的报文。

1.2常用报文

网络延迟测量中最常使用的ICMP报文是Echo Request、Echo Reply和Time Exceeded。

1) Echo Request/Echo Reply

Echo Request/Echo Reply是ICMP协议中最常用的报文格式,Echo Request要求目的主机在收到消息后做一个简单的回答,以检查网络是否通畅以及目的主机是否在线(alive);Echo Reply是专门响应Echo Request的报文,若目的主机正常,则会向ICMP发送端主机发送Echo Reply报文――“我在线”。Echo Request/Echo Reply属于消息报文(Information Message),只有在发送端下达指令时才会产生。

发送Echo Request消息报文最常见的程序是“ping”。利用ping操作,使用者可以立即得到两个信息,第一是目的主机是否仍然正常运行,第二是数据包来回的时间,即网络延迟。ping程式具有简单的工作原理:向目标主机发出ICMP报文后,就进行侦听(lis? ten),等待目的主机的响应,若目的主机超过指定的时间仍没有响应,则认为目的主机“Time out”。

2) Time Exceeded

为防止无法到达目的地的数据包在网络中无限制地传递,IP协议的设计者在IP协议的包头设计了一个8位的TTL(Time To Live)字段,TTL字段设置的值是数据包在网络中可以跳跃的次数上限。TTL是由数据包的发送者设置的,在前往目的地的过程中,每经过一台主机或设备,TTL的值就减一,如果在数据包到达目的地前, TTL的值被减到了0,那么这个数据包将作为一个ICMP错误的数据包被丢弃。

通常,数据包从发送端被送出时,TTL值一般会设置为该字段所允许的最大值255,若被送出的数据包的TTL值被减到0,则表示该数据包已经“迷路”。在IP协议中,传送数据包的最后一个节点(hop)会自动放弃该数据,而此时,发送端还不知道数据已经丢失,因此,丢弃数据的节点会向发送端ICMP报文,这个报文就是Time Exceeded[3]。

2利用ICMP测量网络延迟

根据上述ICMP协议的功能,就可以对网络上任意节点的网络延迟进行测量。首先送出特定TTL的Echo Request报文,然后等待网络中继节点反馈回来的Time Exeeded消息,并记录数据包的往返时间,计算出数据包的每个网段之间的网络延时状况。

如图1所示,路由器Router1到路由器Router5之间网络正常。主机172.16.254.10向主机210.26.22.80发送ping包,设置该数据包的TTL值为1,当数据包经过路由器Router1时,TTL值将减为0,Router1会向主机172.16.254.10回传Time Exceeded报文,该报文中会包含Router1的IP地址,这样就可以知道由主机172.16.254.10向主机210.26.22.80发送数据的第一站就是Router1。主机172.16.254.10发送ping包一直到收到Time Exceeded报文的时间及时往返路由器Router1的时间。

图1 ICMP延迟测量1

图1中,主机172.16.254.10向主机210.26.22.80再次发送ping包,这次就TTL值设为2,这样数据包经过路由器Router2时TTL值会减为0,主机172.16.254.10会收到来自Router2的Time Exceeded报文,同理可以计算出主机172.16.254.10到Router2之间的延迟。接着用主机172.16.254.10到Router2的延迟减去到Router1的延迟,这个差值就是路由器Router1与Router2之间的网络延迟时间。以此类推,即可完整的计算出源主机172.16.254.10到目的主机210.26.22.8的路径和其中每一网段的网络延迟。

利用LSRR(Loose Source Record Route,宽松的源站及记录路由)[4]可以指定数据包所经过的路由,LSRR将所要经过节点的IP地址依次放在数据包IP头的选项(option)字段,传递数据包的路由器会读取该选项(option)并依序传送数据包。这样就可以测出网络上任意两个节点的网络延迟。

图2中,要测量节点A与节点B之间的网络延迟,首先可以测量出节点S到节点A之间的网络延迟X和节点S到节点B间的延迟是Y,然后从节点S发送一个ICMP包,利用LSRR指定该ICMP包的路径为从节点A到节点B,所以该ICMP包会按照图2中的箭头方向传递,并最终返回到节点S,设该ICMP包的网络延迟为Z,则节点A到节点B之间的网络延迟应该是:Z-Y-X。

3结束语

本文从网络延迟和延迟测量的基本方法入手,介绍了ICMP协议的基本概念和常用报文,详细介绍了在网络延迟测量中最常使用的ICMP报文Echo Request、Echo Reply和Time Exceeded,最后,通过LSRR(Loose Source Record Route,宽松的源站及记录路由)指定数据包所经过的路由,测量出网络上任意两个节点的网络延迟。

参考文献:

[1]陈银桂.基于电力线通信的智能家居网络系统研究[D].哈尔滨:哈尔滨理工大学,2009.

[2] William Stallings.SNNP网络管理[M].胡成松,汪凯,译.北京:中国电力出版社,2001.

[3]武孟军.精通SNMP[M].北京:人民邮电出版社,2010.

[4]潘磊,裴斐.一种面向大规模网络拓扑发现的研究[J].计算机工程与应用,2010,46(19):74-76.

上一篇:网站内核管理系统的思想研究与技术实现 下一篇:学生学籍管理信息系统的开发实践与研究