在傳統以太網中,為什么要有最小幀長度和最大幀長度的限制


在傳統以太網中,為什么要有最小幀長度和最大幀長度的限制?

 

以太網(IEEE 802.3)幀格式:

1、前導碼:7字節0x55,一串1、0間隔,用於信號同步

2、幀起始定界符:1字節0xD5(10101011),表示一幀開始

3、DA(目的MAC):6字節

4、SA(源MAC):6字節

5、類型/長度:2字節,0~1500保留為長度域值,1536~65535保留為類型域值(0x0600~0xFFFF)

6、數據:46~1500字節

7、幀校驗序列(FCS):4字節,使用CRC計算從目的MAC到數據域這部分內容而得到的校驗和。 以CSMA/CD作為MAC算法的一類LAN稱為以太網。CSMA/CD沖突避免的方法:先聽后發、邊聽邊發、隨機延遲后重發。一旦發生沖突,必須讓每台主機都能檢測到。關於最小發送間隙和最小幀長的規定也是為了避免沖突。

 

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

按照標准,10Mbps以太網采用中繼器時,連接的最大長度是2500米,最多經過4個中繼器,因此規定對10Mbps以太網一幀的最小發送時間為51.2微秒。這段時間所能傳輸的數據為512位,因此也稱該時間為512位時。這個時間定義為以太網時隙,或沖突時槽。512位=64字節,這就是以太網幀最小64字節的原因。

512位時是主機捕獲信道的時間。如果某主機發送一個幀的64字節仍無沖突,以后也就不會再發生沖突了,稱此主機捕獲了信道。

由於信道是所有主機共享的,如果數據幀太長就會出現有的主機長時間不能發送數據,而且有的發送數據可能超出接收端的緩沖區大小,造成緩沖溢出。為避免單一主機占用信道時間過長,規定了以太網幀的最大幀長為1500。

100Mbps以太網的時隙仍為512位時,以太網規定一幀的最小發送時間必須為5.12μs。 1000Mbps以太網的時隙增至512字節,即4096位時,4.096μs。

 

對於1000Mb/s的吉比特以太網,MAC層有兩種選擇,要么保留CSMA/CD,要么不用它。若保留CSMA/CD協議,必須面臨碰撞檢測問題,這就要再一次減小網絡的最大有效傳輸距離到25米。當然您可以不縮短網絡的距離,而是增加一個幀的程度,就如我們開始分析100Mb/s以太網那樣,讓一個幀持續足夠長的時間。但因為上層來的數據沒有這么多,所以就需要在MAC層進行一些無用數據的填充來滿足這個要求。

最后,我們推導出以下比例關系:

最小幀長/傳輸速率 正比於 網絡最大傳輸距離/光速

一個網絡的最大傳輸距離也稱為沖突域,傳輸一個最小幀所用的時間(最小幀長/傳輸速率)正比於1位信息穿越沖突域的時間。

 

以太網的最大幀長有1518,1522,1536。那么這幾個值是怎么來的呢?

下面是最初802.3定義的以太網幀結構:

Preamble (7-bytes) --前導位

Start Frame Delimiter (1-byte) --定界符

Dest. MAC Address (6-bytes) --目的地址

Source MAC Address (6-bytes) --源地址

Length / Type (2-bytes) --長度或幀類型

MAC Client Data --數據,n最大為1500,即MTU

(0-n bytes) Pad --填充字段,p最大為46

(0-p bytes) Frame Check Sequence (4-bytes) --幀校驗碼

其實Ethernet V2為實際的標准了。所以我們最常見到的是,源地址后是類型而非長度。

在1998年提出的802.3ac里,加入了對vlan的支持。也就是在有vlan的情況下在源地址后多加入4個字節,所以就有了1522這個幀長度了。

Preamble (7-bytes) --前導位

Start Frame Delimiter (1-byte) --定界符

Dest. MAC Address (6-bytes) --目的地址

Source MAC Address (6-bytes) --源地址

Length/Type = 802.1Q Tag Type (2-byte) --表明是VLAN,這個為8100

Tag Control Information (2-bytes) --3-bits User Priority Field;1-bit Canonical Format Indicator (CFI);12-bits VLAN Identifier (VID)

Length / Type (2-bytes) --長度或幀類型

MAC Client Data --數據,n最大為1500,即MTU

(0-n bytes) Pad --填充字段,p最大為46

(0-p bytes) Frame Check Sequence (4-bytes) --幀校驗碼

最后要提的就是1536這個長度了。我們知道802.3中規定,如果Length / Type的值大於0×600則表示是類型,而這個值就是1536。

1998年提出的802.3z中的應用。802.3中提出了一個Extension字段放在了最末尾。它主要作用是在短封包(如64)傳輸時,由於1000M速度的加快,導致傳輸時間的減少,破壞了原有沖突檢測的機制,縮短了有效傳輸矩離,所以要增加一些字節,使長度達到512。當然,這個只用在半雙工時了。

第2 / 3頁

其實在802.3中沒有規定要擴展的值的大小的,所以最大可以擴展到1536。

還有一個就是802.1ad。也就是所謂的“Q-in-Q”,就是多重的vlan了,主要為網絡運營商用來管理的,實現用戶的vlan和運營商的vlan相隔離。這個也會加大現有封包的長度,會增加4個字節。 以太網最大幀長 最小幀長 - Sacrifice - BabyUnion

還有一個Jumbo frame。這東西不是802.3的標准,而一些廠商提出來的,為了提高1000M時的傳輸效率。由於是非標的,所以各家支持的大小也不盡相同。一般來說,現在一般可以支持到9k。 在802.3z中還提出一個Frame Bursting。這個東西可以提高短包的傳輸效率。在1000M以太網下,limit”。幀和幀之間以extension bits來填充gap,以表示線路處於占用狀態。burst mode唯一特殊的是,第一個幀要加一個”extension field”。

新的改變可以參見802.3as-2006。

使用burst mode,一端可以連續發包,直到達到了65,536 bit times (8192 byte times)的”burst


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM