信道利用率和吞吐量

信道利用率

信道的效率即为信道的利用率,是指发送方在一个发送周期的时间内,有效的发送数据所需要的时间占整个发送周期的比率。

例如,发送方从开始发送数据,到收到第一个确认帧为止,称为一个周期,设为T。发送方在这个周期内共发送L比特的数据,

发送方的传输速率为C,则发送方用于发送有效数据的时间为L/C,这种情况下信道的利用率为(L/C)/T。


信道吞吐率 = 信道利用率 * 发送方的发送速率

信道利用率,也叫信道的效率,定义很多,但是常用的是时间角度的定义。

OK,上定义:对发送方而言,发送方在一个发送周期内有效地发送数据所需要的时间占整个发送周期的比率。

那么,什么是发送周期

发送周期:发送方从发送第一个数据开始,到接收到第一个确认帧为止。

设发送周期为T,这个周期内发送的数据量为L,发送方的速率是C,则发送方用于发送有效数据的时间是L/C

在这种情况下,信道的利用率是:
(L/C)T \frac{(L/C)}{T}

另外,信道的吞吐率 = 信道的利用率 * 发送方的发送速率

看一道题目加深理解:

题1

(2012年联考) 两台主机之间的数据链路层采用了后退N帧协议(GBN)传输数据,数据的传输速率为16kbps,单向传播时延为270ms,数据帧的长度范围是128~512字节,接收方总是以数据帧等长的帧进行确认(即确认帧长度与发送的帧一样大)。为使信道利用率最高,帧序列的比特数至少是(B)

A.5 B.4 C.3 D.2

思考:本题用的并不是捎带确认,因此只需要看一个帧的确认即可。
传输速率C = 16kbps
延迟是R = 270ms
设帧的大小是a字节。则发送周期是:T = a / C + 2 * R + a / C

第一个a/c是发送方发送一帧的时间,2*R是发送的帧和确认帧的传播时延,这里的确认帧大小不可忽略,所以是a/C

从而发送效率
α=(a/C)(2(a/C+R)) \alpha = \frac{(a/C) } { (2*(a/C+R))}

这里就是求如何使得α \alpha最大。

这样推导的结果是512B时利用率最高!

但是答案又说,为了发送的数据帧数更多!Why? 帧数大和帧数多居然直接取帧数多作为优先?

不科学,因此这题存疑

update: 2016.11.13修正。

我之前一直理解错了题干的含义。题干说数据帧的长度范围是128B~512B。我片面的认为取512B时可以使得数据链路不停发送数据,即利用率接近100%时,用的帧序号数最小。诚然,这没有任何可以争论的点。我存疑就是因为大部分的解释是,为了使信道利用率最高,需要多发帧。所以帧长越短越好。这个推导逻辑是不对的!因为无论使用128B还是512B都可以理论上达到最大的100%。现在是,我们需要考虑到最极端的情况,即帧序号用的编码比特数无论何时都能满足。很显然128B,帧长最小时,需要的帧序号编码数自然多与512B。如果就以512B计算,那么得到的最小帧序号数在128B的帧长下,达不到最大的信道利用率。因为帧序号数目的限制,连续发送的数目有限。这才是整个题目的设计逻辑。

有了这个理解,问题就简单多了,我们考虑128B至少需要多少比特,就是我们需要的数。

发送一帧用时:128B/16kbps = 64ms
RTT = 540ms
发送周期T = 64+RTT+64 = 668ms

则连续不断发送时可以发送:668/64 = 10.4帧

因此,需要比特数是n.

2n10.4+1 2^n\geq 10.4+1即:要能够区分新旧轮次的帧。

得到n至少为4.

进一步思考:668ms发送10.4帧,则数据传输率是:15.942kbps
10.4是取了约数的,即我们可以直接认为连续不断发送。则用16kbps,因此,每秒发送的帧数是:15.6帧。则一个发送周期内发送:10.4帧。
也是一样的结果。

特别注意,我们算帧数时,是以一个发送周期为单位计算的,不是1秒!
我们担心的是不能区分每个发送周期的帧是新的还是旧的,因此,才来计算序号,换算成1秒发送多少,毫无意义!所以之前考察2015年的一道习题时理解错了。这里一并纠正。那边也更新了。

题2

两台主机之间的数据链路层采用退后N帧协议(GBN)传输数据,数据传输速率为16kbps,单向传播时延270ms,数据帧长度范围是128~512字节,接收方总是以与数据帧等长的帧进行确认。为使信道利用率达到最高,帧序号的比特数至少为 答案为4.疑问是,为什么为达到最大利用率要按照每帧128B计算?  

题目问信道利用率最高情况下的帧序号的比特数,很容易联想到实际上要求的是信道利用率最高情况下发送窗口的大小  
(因为GBN协议的发送窗口W跟帧序号比特数n的关系为:)。  
下面找出信道利用率和发送窗口大小之间的联系。在数据传输速率一定的条件下,  
信道利用率可以等同于发送数据的时间 /(发送数据的时间+信道空闲的时间)  
为了保证信道利用率最高为100%,那么我们必须保证发送方时刻有数据发出。  
对于发送方来说,从第一个发送帧发出到第一个发送帧的确认帧返回,把这个期间定义为发送周期。  
如果把一个发送周期内发送方可以发出的帧的个数定为发送窗口的大小,那么此时信道利用率最高为100%。  
也就是说在一个发送周期中,发送方正好把一个发送窗口中的帧全部发出去了,没有闲置等待的时间。  
  
设帧长为P,数据传输速率为B,单向传播时延为T。  
发送周期为 (P/B+T) * 2信道利用率最高时,  
发送窗口大小为(P/B + T) * 2 * B / P = (1 + T * B / P) * 2  
由上式易知,发送窗口大小是帧长P的单调递减函数。取帧长 P =128 Byte,  
得到发送窗口大小的最大值,也就得到了能够满足要求的帧序号比特数的最小值。

最大吞吐量

题3

通信信道的带宽为1Gb/s,端到端的时延为10ms.TCP的发送窗口为 65535 字节。试问:可能达到的最大吞吐量是多少?信道的利用率是多少 

L=65536×8 + 40×8 = 524600 //为什么要加40×8呀??  

C=109 b/s //这个是怎么得来的??  

L/C = 0.0005246s  

Td = 10×10 - 3s //这又是什么啊??  

Throughput = L/(L/C + 2*Td) = 25.5 Mb/s 这个公式表达的意思是什么?  

Efficiency = (L/C)/(L/C+2*D) = 0.0255 //这个表达式也不懂

1、加40x8是因为要求最大吞吐量,TCP报头有个可变部分就是选项,最大长度是40字节
2、C就是信道带宽 是1Gb/s=10^9b/s,而不是109
3、Td就是传播时延=10*10^-3s

信道利用率总结专题

@(计算机网络)

T = P/C+RTT需要的在捎带确认中才有。否则针对每一个帧进行确认的话,发送周期是T = P/C+RTT
如果确认帧传输时延不可忽略,则T = P/C+RTT+P/C

P是一帧长度,C是数据传输速率。

以2015年一题为例。

核心是理解发送周期的计算方式。至于确认帧的大小是否计较,是是否计算一个帧的传输时延的问题。

2012年的真题个人觉得是有问题的,不去管,后来的就也越来越没有争议。

(2015.35)主机甲通过128kbps卫星链路,采用滑动窗口协议向主机乙发送数据,链路单向传播时延为250ms,帧长为1000字节。不考虑确认帧的开销,为使链路利用率不小于80%,帧序号的比特数至少是:B.

A.3
B. 4
C. 7
D. 8

分析:以发送周期为切入点来思考这个问题。开始发送帧到收到第一个确认帧为止,用时:
T = 第一个帧的传输时延+第一个帧的传播时延+确认帧的传输时延+确认帧的传播时延。

因为确认帧的开销不计,所以它的传输不计。但是传播时延要计的。
所以T = 1000B/128kbps + RTT = 0.5625s
那么在0.5625s内需要发送多少数据可以满足利用率80%呢?

设为L字节,则:

L128kbpsT0.8L=7200B

就是说在一个发送周期内至少发7.2帧就可满足要求。

因此,需要编号的比特数为n;

2n17.2
所以n至少为4.

此外,还需要特别思考一下,信道的数据传输速率的极限是128kbps,理论上最大每秒可传输16000B,即16帧,大于12.8,因此符合要求。

另一种思路是:160.8=12.8

即在1秒要发送12.8帧才能满足要求。但是我们不是拿12.8计算比特数的,而是一个发送周期内需要发多少帧!
一个发送周期是0.5625s,所以发送:7.2帧。
同样为了区分新旧:

2n17.2

可直接计算得到4比特。

另外可以参考:
http://blog.csdn.net/u011240016/article/details/52613941

终于不再互相有矛盾了。

总结点如下:

  • 推导一个发送周期大小是关键
  • 计算帧序号数是针对一个发送周期而言,不是特指1秒
  • 给定的是帧范围,帧越大,帧数越少。帧数最大时需要最多的比特数,却可以说是满足最大信道利用率的最小比特数。

posted @ 2020-08-14 16:39  naonaoa  阅读(9357)  评论(3编辑  收藏  举报