天天看點

[轉載]以太網的最小幀長度64B是如何計算出來的?

以CSMA/CD作為MAC算法的一類LAN稱為以太網。CSMA/CD沖突避免的方法:先聽後發、邊聽邊發、随機延遲後重發。一旦發生沖突,必須讓每台主機都能檢測到。關于最小發送間隙和最小幀長的規定也是為了避免沖突。

考慮如下極限的情況,主機發送的幀很小,而兩台沖突主機相距很遠。在主機A發送的幀傳輸到B的前一刻,B開始發送幀。這樣,當A的幀到達B時,B檢測到沖突,于是發送沖突信号。假如在B的沖突信号傳輸到A之前,A的幀已經發送完畢,那麼A将檢測不到沖突而誤認為已發送成功。由于信号傳播是有時延的,是以檢測沖突也需要一定的時間。這也是為什麼必須有個最小幀長的限制。

下面介紹一下碰撞槽時間的概念.

假設公共總線媒體長度為S,幀在媒體上的傳播速度為0.7C(光速),網絡的傳輸率為R(bps),

幀長為L(bps),Tphy為某站的實體層時延;

則有:碰撞槽時間=2S/0.7C+2Tphy      2S是因為要計算往返傳輸距離

因為Lmin/R=碰撞槽時間, 意思是Lmin的幀完全傳輸到對端所需的時間,應該大于對端發過來的訓示發生碰撞的幀所需要的時間.

是以:Lmin =(2S/0.7C+2Tphy )×R

Lmin 稱為最小幀長度。

碰撞槽時間在以太網中是一個極為重要的參數,有如下特點:

(1)它是檢測一次碰撞所需的最長時間。

(2)要求幀長度有個下限。(即最短幀長)

(3)産生碰撞,就會出現幀碎片。

(4)如發生碰撞,要等待一定的時間。t=rT。(T為碰撞槽時間)

按照标準,10Mbps以太網采用中繼器時,連接配接最大長度為2500米,最多經過4個中繼器, 介紹一個公式如下:

Lmin/R = 2*S/(0.7*C) + 2*Tphy + 2*n*Tr

Lmin – 最小幀長

R – 網絡速率(10M等)

S – 碰撞域   (*2 表示一來一回,劃個圖就明白了)

C – 标準光速(*0.7表示在雙絞線中,用光纖的話别論)

Tphy – 實體層延時(*2 是因為要經過一收一發兩個主機的實體層)

Tr – 中繼器延時(一般來說,相當于兩個實體層的延時

如圖所示,

主機 A                中繼器 B                主機 B

——————————————————————

|                         實體層                         |

+—————————+    +————————+

|<——————————S ——————–——>|

根據以太網媒體通路控制機制,A 在發出長度為La的資料流後如果收到B傳回的碰撞訓示,則停止該幀的發送,并且發32bit的010101…以強化碰撞;并延時t = r*T 這樣長的時間;其中T = 1/C,r是一個在(0, 2^k)内的随機數,k = min(n,10) n 為本次發生連續碰撞的次數,如果n過大則上交高層處理。

是以,如果我們規定了某種媒體的碰撞域S,就可以通過上面的公式計算出Lmin。反之,如果先定義了Lmin,同樣可以定出S。

如 IEEE 802.3 Lmin = 64B;設R = 10M bps Tphy = 15us Tr = 0   則可以計算出 S = 2.3km 

按照标準,10Mbps以太網采用中繼器時,連接配接最大長度為2500米,最多經過4個中繼器,是以規定對于10Mbps以太網規定一幀的最小發送時間必須為 51.2μs(電氣标準)。51.2μs也就是512位資料在10Mbps以太網速率下的傳播時間,常稱為512位時。這個時間定義為以太網時隙。512 位時=64位元組,是以以太網幀的最小長度為512位時=64位元組。

512位時是主機捕獲信道的時間。如果某主機發送一個幀的64位元組仍無沖突,以後也就不會再發生沖突了,稱此主機捕獲了信道。由于信道是所有主機共享的,為避免單一主機占用信道時間過長,規定了以太網幀的最大幀長為1500。

100Mbps以太網的時隙仍為512位時,以太網規定一幀的最小發送時間必須為5.12μs。

1000Mbps以太網的時隙增至512位元組,即4096位時,4.096μs。

最小MTU應該是傳輸媒體實體特性和鍊路層協定特性共同決定的。以太網封裝下幀最大MTU為1500,這個是标準規定的值,目的也是因為以太網媒體是一個帶沖突檢測的共享的鍊路。

本文轉自jasonccier 51CTO部落格,原文連結:http://blog.51cto.com/jasonccie/391047,如需轉載請自行聯系原作者

繼續閱讀