10GbE以太网MAC和PHY
10GbE以太網(wǎng)MAC和PHY
概述
10GbE以太網(wǎng)遵循IEEE 802.3ae規(guī)范,其物理傳輸介質(zhì)只支持光纖。
10GbE以太網(wǎng)主要分為串行的10GBase-S/L/E-R/W與并行(4路并行WDM波分復(fù)用)的10GBase-LX4兩類。
10GBase-S/L/E-R/W中,S/L/E表示波長,S表示850nm短波,L表示1310nm長波,E表示1550nm超長波,不同波長有效傳輸距離不一樣;R/W表示PHY類型,R表示LAN PHY,即局域網(wǎng)物理層,碼率為10.3125Gb/s,W表示W(wǎng)AN PHY,即廣域網(wǎng)物理層,碼率為9.95328Gb/s。
串行10GBase-R/W使用64B/66B編碼,而并行10GBase-LX4沿用千兆以太網(wǎng)的8B/10B編碼。通過64B/66B編碼,10Gb/s會(huì)變成10.3125Gb/s,所以10GBase-R的碼率為10.3125Gb/s。但是10GBase-W要與SONET/SDH無縫兼容,所以在10GBase-W的物理層增加了WIS(WAN Interface Sublayer)子層,其主要功能是將10GbE LAN應(yīng)用中的Idle碼去掉,使速率降到9.95328Gb/s,與SDH VC-4-64c和STS-192c兼容。
名詞解釋
MAC Media Access Controller 媒介訪問控制器
PHY Physical 物理層
PCS Physical Coding Sublayer 物理編碼子層
PMA Physical Media Attach 物理附加子層
PMD Physical Media Dependent 物理依賴子層
XGXS XGMII Extender Sublayer XGMII擴(kuò)展子層
XAUI 10 Gigabit Attachment Unit Interface 一種10G以太網(wǎng)接口
CDR Clock Data Recovery 數(shù)據(jù)時(shí)鐘恢復(fù)
pre-emphasis 預(yù)加重技術(shù)
offset cancellation 失調(diào)消除技術(shù)
MII Media Independent Interface
RS Reconciliation Sublayer 協(xié)調(diào)子層
MAC
數(shù)據(jù)鏈路層包括LLC子層、MAC Control子層(可選)、MAC子層和RS子層。MAC層主要負(fù)責(zé)控制與連接物理層的物理介質(zhì)。在發(fā)送數(shù)據(jù)時(shí),MAC協(xié)議事先判斷是否可以發(fā)送數(shù)據(jù),如果可以發(fā)送,將給數(shù)據(jù)添加一些控制信息,最終將數(shù)據(jù)以及控制信息以規(guī)定的格式發(fā)送到物理層;在接收數(shù)據(jù)時(shí),MAC協(xié)議首先判斷輸入的信息是否發(fā)生傳輸錯(cuò)誤,如果沒有錯(cuò)誤,則去掉控制信息發(fā)送至LLC層。
上圖是10GE MAC的內(nèi)部實(shí)現(xiàn)框圖,主要包括Transmit Engine、Receive Engine、Flow Control、RS、管理模塊和時(shí)鐘&復(fù)位模塊。其中Transmit Engine和Receive Engine主要是兩個(gè)FIFO緩沖區(qū),用來緩存發(fā)送和接收的數(shù)據(jù)。Flow Control指流控制,因?yàn)閷?shí)際通信過程中,雙方的處理速度不一致,這樣可能出現(xiàn)MAC接收緩沖區(qū)滿的情況,如果此時(shí)繼續(xù)接收?qǐng)?bào)文,則接收到的報(bào)文會(huì)被直接丟棄,F(xiàn)low Control就是針對(duì)這種情況,當(dāng)接收緩沖區(qū)報(bào)文達(dá)到閾值時(shí),發(fā)送PAUSE幀或者PFC幀,告知對(duì)端MAC停止發(fā)送報(bào)文。Statistics模塊則進(jìn)行報(bào)文統(tǒng)計(jì)。
以太網(wǎng)幀
標(biāo)準(zhǔn)數(shù)據(jù)幀
802.1Q數(shù)據(jù)幀
MAC Control
MAC Control幀格式如上圖,其中,目的MAC是一個(gè)特定的地址,Type字段為0x8808,MAC Control Opcode決定了MAC Control幀的類型。
PAUSE幀和PFC幀是MAC層Flow Control的基礎(chǔ)。
PAUSE幀的目的MAC固定為01-80-C2-00-00-01,它的作用是當(dāng)接收FIFO達(dá)到閾值時(shí),告訴對(duì)端MAC停止發(fā)送報(bào)文。PAUSE幀的參數(shù)表示停止發(fā)送報(bào)文的時(shí)間間隙,當(dāng)對(duì)端MAC接收到PAUSE幀之后,會(huì)在時(shí)間間隙結(jié)束之后繼續(xù)發(fā)送報(bào)文;如果在時(shí)間間隙結(jié)束之前接收到參數(shù)為0的PAUSE幀,則表示可以立即發(fā)送報(bào)文。
PFC(Priority-based Flow Control)幀則是根據(jù)802.1Q VLAN TAG的COS值,依據(jù)優(yōu)先級(jí)進(jìn)行流控。PFC幀的目的MAC也是01-80-C2-00-00-01。
RS
協(xié)調(diào)子層主要是使不同物理介質(zhì)對(duì)MAC子層透明,即把各種MII接口的數(shù)據(jù),以統(tǒng)一的方式和MAC層傳輸。
MII
MII接口是MAC和PHY之間的接口,有MII/RMII/SMII/SSMII/GMII/SGMII/XGMII等,由MII接口轉(zhuǎn)換而來的以太網(wǎng)背板接口有XAUI/10G-KR4等。
XGMII
XGMII總線(IEEE 802.3 Clause 46)有發(fā)送和接收兩個(gè)相互獨(dú)立的通道,每個(gè)通道有一根參考時(shí)鐘信號(hào)、4根數(shù)據(jù)同步信號(hào)(每個(gè)同步信號(hào)控制1個(gè)Lane的數(shù)據(jù)同步)、32根數(shù)據(jù)傳輸信號(hào)(分為4個(gè)Lane),一共74根信號(hào)線。
XGMII碼流格式如上圖,由幀間隙(IFG)、幀前導(dǎo)碼(Preamble)、幀開始定界符(SFD)、幀數(shù)據(jù)(DATA)和幀結(jié)束定界符(EFD)構(gòu)成。
幀間隙從Terminate控制符開始,到Start控制符結(jié)束,幀間隙過程中傳輸Idle控制幀。幀間隙的時(shí)長以字節(jié)為單位,幀間隙最小值根據(jù)雙方MAC實(shí)現(xiàn)確定,10GBASE-R應(yīng)用場(chǎng)景,最小幀間隙(IPG)為5個(gè)字節(jié)。
幀前導(dǎo)碼是7個(gè)連續(xù)的0xAA。
幀開始定界符必須通過XGMII Lane 0傳輸,一個(gè)字節(jié)0xAB。(此處與下表中的Start控制符不一致,待商榷)
幀結(jié)束定界符,可以出現(xiàn)在XGMII的任意Lane,其值不詳。
TXC為低電平時(shí),表示傳輸數(shù)據(jù)幀;TXC為高電平時(shí),表示傳輸控制幀。
RXC為低電平時(shí),表示傳輸數(shù)據(jù)幀;RXC為高電平時(shí),表示傳輸控制幀。
XGXS & XAUI
XGXS包括位于RS側(cè)的DTE XGXS和PHY側(cè)的PHY XGXS兩部分。XGXS子層(IEEE 802.3 Clause 47)的出現(xiàn)有兩個(gè)原因:
1) XGMII接口是并行接口,一共有74根信號(hào)線,XGXS將XGMII接口轉(zhuǎn)為XAUI接口,串行化(4 Lane共16根信號(hào)線);
2) XGMII接口總線的布線長度小于7cm,無法支持二層以太網(wǎng)交換機(jī)跨板(通過背板)通信,經(jīng)過XGXS轉(zhuǎn)換的XAUI接口則支持最長50cm的布線長度;
發(fā)送方向,XGXS接收XGMII的數(shù)據(jù),將XGMII數(shù)據(jù)幀和控制幀轉(zhuǎn)換成XAUI碼流(code-groups),編碼之后傳輸。接收方向,首先解碼XAUI碼流,補(bǔ)償時(shí)鐘和相位,轉(zhuǎn)換成XGMII數(shù)據(jù)幀和控制幀,然后傳輸。
PHY
PHY層包括PCS子層、PMA子層和PMD子層。
PCS
PCS層面向的業(yè)務(wù)接口是XGMII, XGMII是所有10Gb/s PHY針對(duì)RS層或者XGXS層提供的統(tǒng)一接口。
上圖是一個(gè)典型的10GBase-R PHY的IP核內(nèi)部結(jié)構(gòu)體,紅色框圖部分是PCS實(shí)現(xiàn)。其中,64B/66B Encode/Decode負(fù)責(zé)編解碼、Test Pattern Generate/Test Pattern Check負(fù)責(zé)發(fā)送和校驗(yàn)測(cè)試報(bào)文(PHY硬件自檢)、Scramble/Descramble負(fù)責(zé)加解擾、Gearbox(變速箱)和Block Sync負(fù)責(zé)速率匹配和時(shí)鐘、相位補(bǔ)償、字對(duì)齊等功能、BER Mon(Bit Error Rate Monitor)負(fù)責(zé)監(jiān)控誤碼率。
加解擾技術(shù)是一種調(diào)制技術(shù),其原理是將擾碼與原始信號(hào)相乘,從而得到新的信號(hào),與原始信號(hào)相比,新信號(hào)在時(shí)間和頻率上被打散。
PCS層發(fā)送方向和接收方向都可以工作在正常模式(Normal mode)和測(cè)試模式(Test-Pattern mode)。當(dāng)處于測(cè)試模式時(shí),Test Pattern Generate/Check使能。
PCS層Gearbox模塊負(fù)責(zé)將發(fā)送方向的數(shù)據(jù)分組成16位一組的數(shù)據(jù)單元,通過XSBI接口發(fā)送給PMA層。
編解碼的目的有兩個(gè):
1)避免物理傳輸介質(zhì)上出現(xiàn)連續(xù)的1或者0,如64B/66B編碼將64位數(shù)據(jù)編碼成66位數(shù)據(jù)在傳輸介質(zhì)上傳輸,從而降低信噪比;
2)區(qū)分出數(shù)據(jù)和命令。
此外,PCS層還負(fù)責(zé)PHY自協(xié)商,PHY自協(xié)商可以自動(dòng)匹配工作模式、工作速率等。
64B/66B
10GBase-R的PCS層使用64B/66B編碼(IEEE802.3 Clause 49),支持?jǐn)?shù)據(jù)幀和控制幀,同時(shí)擁有健全的錯(cuò)誤檢測(cè)機(jī)制。
發(fā)送方向,PCS從XGMII接收兩組32位數(shù)據(jù),一共64位數(shù)據(jù)。然后添加2位同步頭(根據(jù)XGMII的TXC信號(hào)決定),01表示數(shù)據(jù)幀,10表示控制幀。同步頭不通過Scrambler模塊加擾碼,因?yàn)槿绻筋^被改變,就無法區(qū)分?jǐn)?shù)據(jù)幀和控制幀,也無法進(jìn)行幀定界。
在接收方向,PCS從接收到的66位數(shù)據(jù)塊中提取出同步頭,負(fù)載部分進(jìn)行解擾碼和64B/66B解碼,然后把解碼出來的數(shù)據(jù)通過XGMII接口發(fā)送給XGXS層或者RS層。
PCS層無論是對(duì)接RS層還是XGXS層,都是通過XGMII接口。XGMII接口在發(fā)送和接收方向都有32根數(shù)據(jù)線,通過TXC[3:0]和RXC[3:0]進(jìn)行數(shù)據(jù)同步,每個(gè)TXC/RXC信號(hào)控制8根數(shù)據(jù)線。
64B/66B編碼中,數(shù)據(jù)幀和控制幀除了同步頭之外的負(fù)載部分,均包含8個(gè)字節(jié)。對(duì)于數(shù)據(jù)幀而言,負(fù)載各字節(jié)命名為D0~D7。控制幀負(fù)載的8個(gè)字節(jié),除了Ordered Set(/O/)字符、Start(/S/)字符和Terminate(/T/)字符之外,命名為C0~C7。Ordered Set字符只能由XGMII的第一個(gè)Lane發(fā)送,因此命名為O0或者O4;Start字符同樣只能由XGMII的第一個(gè)Lane發(fā)送,因此命名為S0或者S4;Terminate字符則可以出現(xiàn)在任意字節(jié),因此命名為T0~T7。
對(duì)于控制幀而言,進(jìn)行64B/66B之后,除同步頭之外的負(fù)載部分第一個(gè)字節(jié)稱為Block Type域,用來區(qū)分控制幀類型。對(duì)于包含Start字符或者Terminate字符的控制幀,Block Type域指示了它的類型。其他控制字符被編碼為7位的控制碼(Control Code)或者4位的O碼(Ordered Set Code)。
Control Codes
Idle(/I/)
從XGMII接收到Idle控制字符(0x07)時(shí),PCS會(huì)根據(jù)當(dāng)前數(shù)據(jù)傳輸忙或者閑,動(dòng)態(tài)地插入或者刪除Idle字符,從而調(diào)整時(shí)鐘頻率。/I/字符的插入和刪除需要4個(gè)一組,/I/字符只能出現(xiàn)在/I/或者/O/之后。數(shù)據(jù)接收過程中,不能插入/I/字符。刪除/I/時(shí),緊跟著/T/的四個(gè)/I/不能被刪除。
LPI(/LI/)
/LI/字符的插入和刪除原則同/I/字符。
Start(/S/)
Start字符表示開始發(fā)送報(bào)文。
Terminate(/T/)
Terminate字符表示發(fā)送報(bào)文結(jié)束。
Ordered Set(/O/)
/O/字符表示開始發(fā)送Ordered Set,有兩種類型的Ordered Sets——Sequence Ordered Set和Signal Ordered Set(保留擴(kuò)展用)。其中,/O/出現(xiàn)在XGMII的第一個(gè)Lane中,/Q/緊跟著/O/出現(xiàn)。
Ordered Sets用來發(fā)送控制和狀態(tài)信息,如Remote Fault和Local Fault。Ordered Sets包含一個(gè)控制字符,緊跟著3個(gè)數(shù)據(jù)字符。10GBASE-R應(yīng)用場(chǎng)景只有一種Ordered Set類型,即Sequence Ordered Set,它的控制字符簡(jiǎn)寫為/Q/。
Error(/E/)
當(dāng)從XGMII接收到/E/字符,或者接收到無效控制幀時(shí),/E/被發(fā)送。/E/可以使PCS層或者XGXS層接收到錯(cuò)誤信息。
一個(gè)66位數(shù)據(jù)塊怎么確認(rèn)是否為有效數(shù)據(jù)塊呢?當(dāng)出現(xiàn)以下情況是,被判定為無效數(shù)據(jù)塊:
1) 同步頭不是01或者10;
2) 如果為控制幀,Block Type域?yàn)闊o效類型;
3) 如果為控制幀,控制碼為無效控制碼;
4) 任何無效Ordered Set Code(4位),包括0xF;
5) 64位負(fù)載各字符順序錯(cuò)亂;
PMA
如圖所示,10GBASE-R應(yīng)用場(chǎng)景中,PMA子層介于PCS編碼子層和PMD子層之間,它與PCS編碼子層之間使用XSBI總線接口。
PMA主要包括TX Serializer、RX Deserializer、PLL和CDR幾部分。其中CDR負(fù)責(zé)從接收的數(shù)據(jù)中恢復(fù)出時(shí)鐘信號(hào),并通過PLL輸出發(fā)送數(shù)據(jù)時(shí)鐘。發(fā)送方向,Tx Serializer負(fù)責(zé)將并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)。接收方向,Rx Deserializer負(fù)責(zé)將接收的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)。
在PMA的實(shí)現(xiàn)中,針對(duì)發(fā)送通道可以配置預(yù)加重值和VOD值。預(yù)加重是噪聲整形技術(shù)在模擬信號(hào)處理中的應(yīng)用,其原理是在信號(hào)發(fā)送之前,先對(duì)模擬信號(hào)的高頻分量進(jìn)行適當(dāng)提升;在收到信號(hào)之后,再對(duì)信號(hào)進(jìn)行逆處理,即去加重,對(duì)高頻分量進(jìn)行適當(dāng)衰減。預(yù)加重與去加重技術(shù)可以降低信號(hào)在傳輸過程中的高頻損耗,也可以使噪聲的頻譜發(fā)生變化,這就是模擬降噪的原理。在接收方向,使用失調(diào)消除技術(shù)(offset cancellation)進(jìn)行降噪。
接收方向
接收方向,PMA層從PMD層接收數(shù)據(jù),然后發(fā)送到PCS層:
1) 從接收PMD的串行數(shù)據(jù)中恢復(fù)時(shí)鐘,并將時(shí)鐘信號(hào)傳送到PCS編碼層;
2) 將10Gb/s串行數(shù)據(jù)并行化,變成16bit并行數(shù)據(jù),速率為644.53Mbps,通過XSBI(10G Sixteen Bit Interface)接口,發(fā)送到PCS編碼層;
3) 提供鏈路狀況信息;
發(fā)送方向
發(fā)送方向,PMA層從PCS層接收數(shù)據(jù),然后發(fā)送到PMD層:
1) 提供時(shí)鐘信號(hào)給PCS層;
2) 從PCS編碼層接收16bit并行數(shù)據(jù)進(jìn)行串行化,變成10Gb/s串行數(shù)據(jù)發(fā)送到PMD層;
PMD
10GBASE-R應(yīng)用場(chǎng)景中,PMD子層負(fù)責(zé)光電信號(hào)轉(zhuǎn)換,即光模塊。
自協(xié)商
目前只有千兆PHY才支持自協(xié)商模式,如10/100/1000M自適應(yīng)PHY。
PHY自協(xié)商是通過快速連接脈沖(Fast Link Pulse)信號(hào)實(shí)現(xiàn),簡(jiǎn)稱FLP。自協(xié)商的雙方通過FLP來交互數(shù)據(jù)。
在具備自協(xié)商能力的端口沒有Link的情況下,端口一直發(fā)送FLP,在FLP中包含著自己的連接能力信息,包括支持的速率能力、雙工能力、流控能力等。這個(gè)連接能力是從自協(xié)商能力寄存器中得到的(Auto-Negotiation Advertisement Register ,PHY標(biāo)準(zhǔn)寄存器地址4 )。FLP依靠脈沖位置編碼攜帶數(shù)據(jù),一個(gè)FLP突發(fā)包含33個(gè)脈沖位置。17個(gè)奇數(shù)位置脈沖為時(shí)鐘脈沖,時(shí)鐘脈沖總是存在的;16個(gè)偶數(shù)位置脈沖用來表示數(shù)據(jù):此位置有脈沖表示1,此位置沒有脈沖表示0。這樣1個(gè)FPL的突發(fā)就可以傳輸16bit的數(shù)據(jù)。自協(xié)商交互數(shù)據(jù)就這樣通過物理線路被傳輸。
如果兩端都支持自協(xié)商,則都會(huì)接收到對(duì)方的FLP,并且把FLP中的信息解碼出來。得到對(duì)方的連接能力。并且把對(duì)端的自協(xié)商能力值記錄在自協(xié)商對(duì)端能力寄存器中(Auto-Negotiation Link Partner Ability Register , PHY標(biāo)準(zhǔn)寄存器地址5 )。同時(shí)把狀態(tài)寄存器(PHY標(biāo)準(zhǔn)寄存器地址1)的自協(xié)商完成bit(bit5)置成1。在自協(xié)商未完成的情況下,這個(gè)bit一直為0。然后各自根據(jù)自己和對(duì)方的最大連接能力,選擇最好的連接方式Link。比如,如果雙方都即支持10M也支持100M,則速率按照100M連接;雙方都即支持全雙工也支持半雙工,則按照全雙工連接。一定連接建立后,F(xiàn)LP就停止發(fā)送。直到鏈路中斷,或者得到自協(xié)商Restart命令時(shí),才會(huì)再次發(fā)送FLP。
Error and Fault Handling
數(shù)據(jù)幀接收過程中,通常是/S/ + /D/ … /D/ + /T/序列,如果在/C/控制字符出現(xiàn)在/S/和/T/之間,那么RS層應(yīng)該告知MAC層發(fā)生了FrameCheckError。如果/S/出現(xiàn)在除了lane 0之外的lane上,RS層也會(huì)感知到錯(cuò)誤。
數(shù)據(jù)幀發(fā)送過程中,PHY必須仔細(xì)校驗(yàn)保證數(shù)據(jù)不被篡改,因?yàn)橐坏?duì)端發(fā)現(xiàn)接收到的數(shù)據(jù)被篡改,就會(huì)發(fā)送Error控制字符。
Link Fault Signaling
關(guān)于Link Fault Signaling,參考IEEE 802.3ae Clause46.3.4章節(jié)。
首先要區(qū)分兩個(gè)概念,PHY層Link Up和LLC層Link Up,前者是物理鏈路的連接狀態(tài),后者是邏輯鏈路的連接狀態(tài)。通常,此處,Link Fault指的是PHY層的鏈路連接狀態(tài)。
PHY層的鏈路狀態(tài)指Local RS層和Remote RS層之間的鏈路狀態(tài)。
PHY層的各子層都需要具備檢測(cè)鏈路錯(cuò)誤的能力,檢測(cè)鏈路錯(cuò)誤主要分為兩個(gè)方面:
1) 檢測(cè)I/O信號(hào);
2) 傳輸數(shù)據(jù)/控制幀解析,包括:
CODEC Synchronization;
Lane Alignment,如/S/只能出現(xiàn)在Lane 0等;
Link Status Report Recognized;
Link Status Message是一個(gè)四字節(jié)的Ordered Sets,其中Lane 0是Sequence控制字符,剩下的3個(gè)是數(shù)據(jù)部分。Local Fault幀的Sequence控制字符是0x9C,Remote Fault幀的Sequence控制字符是0x00。
任何一方,在接收過程中檢測(cè)到鏈路錯(cuò)誤,都會(huì)產(chǎn)生Local Fault, Local Fault幀會(huì)在接收方向透?jìng)鱌HY各子層,直到RS層。
RS層負(fù)責(zé)處理Local Fault幀,同時(shí)發(fā)送Remote Fault幀給對(duì)端RS層(只有RS層可以殘生Remote Fault幀)。Remote Fault幀在RS層之間透?jìng)鳌S層之所有會(huì)發(fā)送Remote Fault幀給對(duì)端,是假設(shè)只有接收鏈路發(fā)生鏈路錯(cuò)誤,發(fā)送鏈路沒有問題。
當(dāng)RS層在128個(gè)時(shí)鐘周期內(nèi)接收到4個(gè)以上Local Fault幀時(shí),它會(huì)通知本機(jī)MAC停止發(fā)送數(shù)據(jù),并連續(xù)發(fā)送Remote Fault幀給對(duì)端RS層。當(dāng)RS層在128個(gè)時(shí)鐘周期內(nèi),連續(xù)接收到4個(gè)Remote Fault幀時(shí),才會(huì)認(rèn)為發(fā)送鏈路出現(xiàn)問題,它會(huì)通知本機(jī)MAC停止發(fā)送數(shù)據(jù),并在發(fā)送鏈路上連續(xù)發(fā)送Idle幀。
在128個(gè)時(shí)鐘周期內(nèi),沒有接收到Local Fault幀或者Remote Fault幀,則表示鏈路狀態(tài)正常。
總結(jié)
以上是生活随笔為你收集整理的10GbE以太网MAC和PHY的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是 TypeScript 里的 Co
- 下一篇: TypeScript 定义函数的几种写法