时延相关
之前我们学习过,时延由发送时延、传播时延和处理时延三部分构成。
发送时延的计算公式为“分组长度除以发送速率”,
发送速率应该从网卡速率、信道带宽、以及对端的接口速率中取最小。
传播时延的计算公式为“信道长度除以电磁波传播速率”,
处理时延一般不方便计算。
下面更深入地探讨一下发送时延和传播时延。
假设主机要发送数据,横坐标表示距离,链路带宽为1Mb/s,信号在该链路上的传播速率为m/s。
主机发送1个比特的信号,由于该链路的带宽为1Mb/s,因此主机的发送速率可以是1Mb/s。那么主机发送完发送完1比特的时间为(1b)/(1Mb/s)。结果为 。
此时表示该比特的信号的前端已经传播出去200m了,也就是用 乘以信号在该链路上的传播速率 m/s即可得出。
紧跟着第一个比特的信号,主机发送完第二个比特的信号。很显然,第二个比特也要耗费 的发送时间,此时共耗费 。并且第一个比特的信号前端已经传播出去400m了。
而第二个比特的信号前端传播出去200m,以此类推:
如果我们把链路带宽提高8倍,到8Mb/s,信号在该链路上的传播速率不变;
那么经过 的时间,主机可以发送的信号就变成了8个比特,单位时间内发送比特的数量是原来的8倍:
习题1
两主机间的链路长度为60m,链路带宽为10Mb/s,信号的传播速率为 m/s, 其中一台主机给另一台主机发送1b信息,当主机接收完该信息时共耗费多长时间?
解析
发送时延 =
传播时延 =
总时延为
下面分别是距离为20m和10m的计算情况:
习题1-改
两主机间的链路长度为60m,链路带宽为10Mb/s,信号的传播速率为 m/s, 若其中一台主机给另一台主机连续发送n比特信息,当主机接收完该信息时共耗费多长时间?
错误解法:
正确解法 :
解析
比特信号是一个跟着一个向前同时传播的,因此,无论有多少个比特,在总时延中只包含一个传播时延。增加比特数量,只是增大了发送时延,而传播的时延数量不变。
示意图:(横坐标表示时间,纵坐标表示一段或多段链路)
用这样的平行四边形来表示数据传输,这样非常容易看出发送时延和传播时延。
由于比特单位太小,我们讨论问题时,常常使用分组。一个分组由若干个比特构成。
因此,可以得出这样的结论:
若主机在一段链路上连续发送分组,则总时延为所有分组的发送时延加上信号在这一段链路上的传播时延。
我们来看看分组在分组交换网(也就是多段链路)上的传输情况:
若有n个分组,m段链路,则总时延是多少?
总时延= n个分组的发送时延 + 1个分组的发送时延 * (m - 1) + 1段链路的传播时延 * m
m-1其实是转发次数,m段链路就有(m-1)次转发。
(注意该结论的前提是:假设分组等长,各链路长度相同、带宽也相同,忽略路由器的处理时延
)
习题2
试在下列条件下比较电路交换和分组交换。
要传送的报文共x(bit)。从源点到终点共经过k段链路,每段链路的传播时延为d(s),带宽为b(bit/s)。 在电路交换时,电路的建立时间为s(s)。在分组交换时,报文可被划分成若干个长度为
p(bit)的数据段,添加首部后即可构成分组,假设分组首部的长度以及分组在各结点的排队等待时间忽略不计。
问在怎样的条件下,电路交换的的时延比分组交换的要大?
先计算电路交换的总时延,根据题意,画出示意图:(横坐标为时间,纵坐标表示k段链路)
电路交换的总时延等于电路建立时间s,加上x个比特的发送时延x/b,加上信号在k段链路上的传播时延kd。
即,电路交换的时延 =
再来计算分组交换的总时延,
运用刚才的学习内容和结论,很容易就可以得出本题的分组交换总时延:
即,分组交换的时延 =
p/b是1个分组的发送时延,x/p是分组的数量,k是链路数量,那么(k-1)就是转发次数,kd是k段链路的传播时延。
最后,令电路交换的时延大于分组交换的时延,解不等式得: 。
END