信道利用率
信道的效率即為信道的利用率,是指發送方在一個發送周期的時間內,有效的發送數據所需要的時間占整個發送周期的比率。
例如,發送方從開始發送數據,到收到第一個確認幀為止,稱為一個周期,設為T。發送方在這個周期內共發送L比特的數據,
發送方的傳輸速率為C,則發送方用於發送有效數據的時間為L/C,這種情況下信道的利用率為(L/C)/T。
信道吞吐率 = 信道利用率 * 發送方的發送速率
信道利用率,也叫信道的效率,定義很多,但是常用的是時間角度的定義。
OK,上定義:對發送方而言,發送方在一個發送周期內,有效地發送數據所需要的時間占整個發送周期的比率。
那么,什么是發送周期?
發送周期:發送方從發送第一個數據開始,到接收到第一個確認幀為止。
設發送周期為T
,這個周期內發送的數據量為L
,發送方的速率是C
,則發送方用於發送有效數據的時間是L/C
。
在這種情況下,信道的利用率是:
另外,信道的吞吐率 = 信道的利用率 * 發送方的發送速率。
看一道題目加深理解:
題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
從而發送效率
這里就是求如何使得 最大。
這樣推導的結果是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.
即:要能夠區分新舊輪次的幀。
得到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字節,則:
就是說在一個發送周期內至少發7.2幀就可滿足要求。
因此,需要編號的比特數為n;
所以n至少為4.
此外,還需要特別思考一下,信道的數據傳輸速率的極限是128kbps,理論上最大每秒可傳輸16000B,即16幀,大於12.8,因此符合要求。
另一種思路是:
即在1秒要發送12.8幀才能滿足要求。但是我們不是拿12.8計算比特數的,而是一個發送周期內需要發多少幀!
一個發送周期是0.5625s,所以發送:7.2幀。
同樣為了區分新舊:
可直接計算得到4比特。
另外可以參考:
http://blog.csdn.net/u011240016/article/details/52613941
終於不再互相有矛盾了。
總結點如下:
- 推導一個發送周期大小是關鍵
- 計算幀序號數是針對一個發送周期而言,不是特指1秒
- 給定的是幀范圍,幀越大,幀數越少。幀數最大時需要最多的比特數,卻可以說是滿足最大信道利用率的最小比特數。