崔鸿 顾兆军
摘要:国内大多数高校的《计算机网络》教材,在介绍计算机网络基本原理分组交换技术时,给出相同的总时延公式,对该公式进行了探讨,提出其修正公式及分析。
关键词: 关总时延公式;计算机网络
Abstract: When introducing the basic principle of computer network and packet switching technology, the same total delay formula is given in the textbook of computer network in most domestic colleges and universities. This paper discusses the formula, and puts forward its correction formula and analysis.
Key words: total delay formula; computer network
1 引言
国内大多数高校的本科“计算机网络”课程选用的是《计算机网络》1或《计算机网络:自顶向下方法》2为教材,这两种教材在计算机网络概述部分,在介绍网络基本原理分组交换技术时,给出了相同的分组交换总时延公式。笔者认为该公式应该修正。
2 总时延公式
计算机网络的基本原理是分组交换技术,分组从源主机出发,经过多个路由器,到达终点主机。分组从源端到目的端所花费的时间为总时延。
2.1 总时延原公式与修正公式
两种教材给出的总时延公式为:
总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
笔者认为总时延公式应当修正为:
总时延 = 发送时延 + 传播时延 + 存储时延
先介绍这几个时延概念,再介绍本文提出的“存储时延”的概念。
发送时延(dtrans)是指主机向网络发送数据所花费的時间,就是数据量除以网络带宽。举例,链路的数据传输速率为100Mbps,分组大小为1000B,该分组的发送时延就是0.08ms。注意分组数据以字节为单位,网络带宽以比特为单位,要换算一下。
传播时延(dprop)是指信号电磁波在信道中传播一定的距离而花费的时间,电磁波在电缆中的速度通常按200m/us计算。举例:某两个主机相距1000m,传播时延的计算结果就是5us。
排队时延(dqueue)分组在路由器内排队等待处理的时间,称为排队时延。排队时间实质是当时网络的拥塞程度。
处理时延(dproc)是指路由器CPU处理分组的时间,CPU处理时间也非常小。
2.2 修正公式的分析
计算机网络基本原理是分组交换技术,就是说一个分组从源主机出发,穿越多个路由器后,到达目的主机。其中的关键就是“路由器存储-转发分组(store and forward)”。分组在网络中传输过程如图1所示。
在这个过程中,关键是分析清楚分组在路由器内部的过程,现在详细分析一下分组在路由器内的全过程。
第一步:接收分组
当分组的第1个比特到达路由器的接口时,接口芯片开始接将分组数据存储在I/O设备的缓冲区里,当整个分组接收完毕,分组完全存入路由器的I/O设备的缓冲区后,路由器的I/O设备产生一个中断信号给路由器CPU。从第1个比特到达路由器I/O接口,到分组接收完毕,这段时间我称其为“存储时延”,是“存储-转发”中存储两个字的意思,是路由器I/O设备的读写时间。
第二步:分组排队
分组进入路由器后,路由器可能已经接收了多个分组,这些分组在路由器内部排队,等待CPU处理。排队的长度是不确定的,依赖于路由器当前的拥塞程度。这段时延称为“排队时延”。
第三步:转发分组
当分组排队排到后,路由器的CPU开始处理分组,就是检索路由表,转发分组,这段CPU处理所用时间很短。这段时间称为“处理时延”。
路由器的存储转发原理绝不是分组的第1个比特到达路由器I/O设备时,路由器就开始转发分组。而是要完成三个步骤,路由器接收分组,分组排队,转发分组。接收分组所花的时间,不能忽略,必须计算。分组进入路由器后,所花时间为排队时延和处理时延,如无特殊需求,应忽略不计。
总时延公式的瑕疵就是没有将“路由器存储转发”原理与总时延公式匹配,没有展开详细的讨论。在总时延公式中,将不能忽略的忽略了,将通常忽略的写入了,弄反了整件事情的方向和重点。这样一来,就无法说明白存储转发原理与总时延公式是同一个事物,只是两种表达,文字表达和公式表达。读者就无法将存储转发原理与总时延公式匹配在一起。
总时延 = 发送时延 + 传播时延 + 存储时延
现对“存储转发”原理展开了详细的讨论,明确提出了“存储时延”的概念,修正了总时延的计算公式,明确表述存储转发原理与总时延公式是同一个事物,将原理、公式、分析图统一在一起。
3 总时延修正公式的应用
此处通过一例题(2010年考研题34题单选题),详述存储转发原理、总时延公式、分析图,给出总时延公式的实际应用。
例1在下图所示的采用“存储-转发”方式分组的交换网络中,所有链路的数据传输速率为100Mbps,分组大小为1000B,其中分组首部大小20B,若主机H1向主机H2发送一个大小为980000B的文件,则在不考虑分组拆装时间和传播延迟的情况下,从H1发送到H2接收完为止,需要的时间至少是() A.80ms B.80.08ms C.80.16ms D.80.24ms 单项选择
解析:题中有“至少”两个字,如何理解。看下图,从主机H1到主机H2,可以有两条路径,路径①与路径②。
路径①经过3段链路,路径②经过4段链路,电磁信号的速度是200m/us的常数,那是不是路径②花的时间多呢?题目中说明了“不考虑传播时延”,就是说花的时间都按0计算。那么走路径②就和路径①花的时间一样多了,都是0?选哪条路都无所谓吗?
路由器是“存储转发”,传播时延忽略不计,存储时延不能忽略不计。走路径①,途中经过2个路由器,会产生2个存储时延,如果选择路径②,途中会经过3个路由器,会产生3个存储时延,转发流程示意图如下:
题中要求“至少”,所以应选择路径①。按经过2个路由器计算,分析总时延最好的工具就是分组转发示意图。注意,因为忽略传播时延,图中的分组传播线就应该是水平的,表示8:00从H1出发,8:00就到达R1,从H1到R1花费时间为0。由题目知,每个分组1000B,注意B是字节,数据传输速率为100Mbps,注意b是比特。每个分组的发送时延就是1000*8 / 100Mbps = 80 us= 0.08 ms。分组首部20B,数据部分就是1000-20=980 B,文件大小為980000B, 980000B / 980 B=1000,文件被切分为1000个分组。分组转发流程如图5所示。
总时延= 发送时延 + 传播时延 + 存储时延
总时延= 1000 * 0.08ms + 0 (忽略)+ 0.08ms * 2, 共计80.16ms,故应选C。
继续引申。假设上题主机到路由器链路的数据传输速率为100Mbps,路由器之间的链路数据传输速率为1000Mbps,其余条件不变,从H1发送到H2接收完为止,需要的时间至少是多少呢?
第一段链路是低速链路,传输1000B的分组需要0.08ms,在0.08ms后,第1个分组完全到达路由器R1,路由器开始转发,因第二段链路是高速链路,传输1000B的分组仅仅需要0.008ms,传输完之后,路由器能立即传输第2个分组吗?不行,路由器是存储转发,此时第2个分组在第一段链路中还没有传输完,必须在传输结束后,路由器才能开始转发,这段时间就只能空闲等待。由存储转发原理可清晰地分析出路由器R1的存储时延为0.08ms,路由器R2的存储时延为0.008ms。
总时延= 发送时延 + 传播时延 + 存储时延
总时延=1000*0.08ms + 0(忽略) + 0.08ms + 0.008ms, 共计80.088ms。
在例题的引申变化中,能更加清晰地解释总时延公式与存储转发原理的关系,二者完全是同一个事物,只是两种表达方式。在实际分析与应用中,通常忽略排队时延与处理时延,但不能忽略存储时延。
参考文献:
[1] 谢希仁.计算机网络第7版[M].北京:电子工业出版社,2017.
[2] James F.Kurose,Keith W.Ross.计算机网络:自顶向下方法[M]. 陈鸣,译.北京:机械工业出版社,2009.
【通联编辑:代影】