以太網(wǎng)肇始,設(shè)備都連接到同一總線(同軸電纜),以半雙工的方式通信。載波偵聽和沖突檢測(CSMA/CD)就是以太網(wǎng)的代名詞。據(jù)老戚了解,傳奇的Catalyst 6500交換機(jī)也使用這種半雙工的百兆以太網(wǎng)作為控制平面。從總線電路(時鐘同步的總線電路)的角度來看,這是妥妥的共同時鐘總線系統(tǒng)。后來,以太網(wǎng)也經(jīng)歷了從總線拓?fù)涞近c(diǎn)對點(diǎn)的星型拓?fù)?、從物理總線到包交換的轉(zhuǎn)變,交換機(jī)(SDN交換機(jī)的核心 - 可編程交換芯片)應(yīng)運(yùn)而生,成為連接以太網(wǎng)設(shè)備的橋梁。
今天以太網(wǎng)是使用最為廣泛的局域網(wǎng)(LAN)網(wǎng)絡(luò)協(xié)議。相對于同期的其他協(xié)議,以太網(wǎng)勝出的關(guān)鍵在于其成本相對低廉,性能穩(wěn)定可靠,組網(wǎng)方便靈活。其中重要的一點(diǎn):以太網(wǎng)設(shè)備采用本地時鐘,通常低成本的晶振就能滿足要求。不同設(shè)備采用各自本地時鐘,相互之間會有或多或少的頻率偏差(skew)。802.3標(biāo)準(zhǔn)要求相對標(biāo)稱頻率的偏差不能超過100PPM??紤]到極端的情況:一個時鐘快100PPM,一個時鐘慢100PPM,它們之間的頻差可以多達(dá)萬分之二,是不是必然導(dǎo)致丟包?我們在做交換機(jī)測試的時候,也會遇到端口速率99.99%以上就會丟包,低一點(diǎn)點(diǎn)就不丟了。通常認(rèn)為這是以太網(wǎng)時鐘PPM頻率偏差引起的問題,但是很多硬件攻城獅對其中的邏輯感到困惑,老戚在此嘗試作一番解讀。
老戚認(rèn)為,物理層(physical layer)的物理編碼子層(PCS - Physical Coding Sublayer)對解決時鐘PPM問題起了關(guān)鍵作用,PCS借助FIFO處理跨時鐘域,通過刪除或插入IDLE碼組,來消除接收數(shù)據(jù)和本地時鐘的有限頻差,這就是彈性緩存(Elastic buffer)。彈性緩存對突發(fā)(burst)數(shù)據(jù)流量有完美的效果,卻不能解決長時間線速(line rate)流量下的丟包問題,對此局限我們應(yīng)當(dāng)了然于胸。當(dāng)然,通過上層的流控(flow control)協(xié)議,我們可以避免長時間線速。
在深入PCS子層之前,最好先了解一下物理層。
1. IEEE 802.3 物理層規(guī)范
IEEE 802.3標(biāo)準(zhǔn)規(guī)范了有線(wired)傳輸以太網(wǎng)的數(shù)據(jù)鏈路層(MAC layer)和物理層(physical layer)的協(xié)議。不同于無線WIFI,有線傳輸需要媒質(zhì)(media),可以是RJ45接口的網(wǎng)線(4對雙絞線),SFP/QSFP接口的光模塊、無源銅纜,或者PCB背板等等。為了適應(yīng)不同類型的媒質(zhì)(信道),我們需要在發(fā)送端采用不同的編碼(coding)甚至調(diào)制(modulation),以便在接收端能夠正確的恢復(fù)數(shù)據(jù)。好比搬家公司搬運(yùn)家具,會先分拆、打包,然后運(yùn)輸,到達(dá)目的地后再拆包、組裝。跟搬家具不一樣的地方在于,電子信號在媒質(zhì)中的傳輸過程中伴隨著衰減和形變,給接收端的數(shù)據(jù)恢復(fù)帶來挑戰(zhàn)。
<圖1>
OSI七層參考模型中,物理層(physical layer)實(shí)現(xiàn)了MAC幀(frame)和最終進(jìn)入媒質(zhì)中傳輸?shù)?a target="_blank">信號之間轉(zhuǎn)換。物理層又可以細(xì)分為PCS、PMA、PMD,以及其他一些作為可選項(xiàng)的子層。
<圖1>是1000Base-X(1GbE-LX/CX/SX)的物理層結(jié)構(gòu)。如今802.3發(fā)展到了400GbE,速率、編解碼、協(xié)議復(fù)雜程度都今非昔比,但是基本的邏輯的依然未變,1000Base-X儼然閃爍著簡約之美。
在發(fā)送方向(下),PCS把MAC幀(Octets,8bit@125MHz)轉(zhuǎn)化為連續(xù)的8b10b編碼(code group,10bit@125MHz);PMA把8b10b編碼變成串行的比特流(bit stream);PMD把比特流轉(zhuǎn)化為DDR信號,并賦予適當(dāng)?shù)?a href="http://www.brongaenegriffin.com/v/tag/2364/" target="_blank">電氣特性,來滿足驅(qū)動光模塊的接口特性要求。無論是MAC幀、8b10b編碼還是串行比特流,他們都是與本地時鐘同步的信號。最后進(jìn)入媒質(zhì)的信號是625MHz時鐘的DDR信號,我們稱之為內(nèi)嵌時鐘(clock embeded)的數(shù)據(jù),因?yàn)樵诮邮斩丝梢詢H僅依靠數(shù)據(jù)把時鐘恢復(fù)出來。注意,這是發(fā)送端的本地時鐘。
在接收方向(上),PMD從信號中恢復(fù)出比特流和RX時鐘,實(shí)現(xiàn)比特位同步;PMA從比特流中恢復(fù)8b10b碼型,實(shí)現(xiàn)碼同步;PCS把8b10b解碼轉(zhuǎn)換成MAC幀。注意,PMD和PMA此時的RX時鐘其實(shí)是對方(發(fā)送端)的時鐘,而MAC層使用的是接收端的本地時鐘。PCS需要實(shí)現(xiàn)有限頻差的跨時鐘域的數(shù)據(jù)轉(zhuǎn)換而不丟失有用數(shù)據(jù)。
2. 為什么需要8b10b編碼?
通常而言,接收端設(shè)計(jì)的復(fù)雜程度遠(yuǎn)遠(yuǎn)高于發(fā)送端。且看一下我們在接收端面臨的問題:
接收端的PMD通過CDR(clock and Data Recovery)電路把比特?cái)?shù)據(jù)和RX時鐘從625MHz的DDR信號中恢復(fù)出來,前提是比特流有足夠多的0/1切換;而原始數(shù)據(jù)是隨機(jī)的,可能出現(xiàn)長0或者長1;
二進(jìn)制流的0和1數(shù)目對等以實(shí)現(xiàn)直流均衡,這對接收端的光電轉(zhuǎn)換靈敏度很關(guān)鍵;
接收端的PMA把串行的比特流轉(zhuǎn)換成(并行的)10b碼型,需要特殊碼型幫助我們識別碼的比特邊界,實(shí)現(xiàn)碼同步;
接收端的PCS檢測單比特的誤碼,以便于評估誤碼率和信道性能;
8b10b編解碼滿足所有的要求,實(shí)際上,還不止這些。先說數(shù)據(jù)(data)編碼 - Dxy.z。
8b10b編碼把8bit的原始數(shù)據(jù)轉(zhuǎn)化為10bit編碼,同時保證10bit編碼不出現(xiàn)連續(xù)5個以上的長0或者長1;
假如10b編碼的0和1的數(shù)量不一樣,那么它和它的鏡像(位取反)作為正/負(fù)編碼都對應(yīng)于同一個8b數(shù)據(jù),發(fā)送端通過選擇正負(fù)碼(多0/1)來實(shí)現(xiàn)直流均衡;
任何單比特錯誤形成的碼型不屬于有效的碼型,這樣單比特誤碼能夠被發(fā)現(xiàn);
當(dāng)然還有最簡單的編碼解碼的RTL邏輯。
<圖2>
實(shí)際上,8b/10b編碼是由5b/6b和3b/4b兩部分組成。圖<2>中,
5b/6b: EDCBA -> abcdei
3b/4b: HGF -> fghj
其中,A和a都是最低比特位(lsb)。
D[EDCBA].[HGF]代表二進(jìn)制數(shù)據(jù)‘HGFEDCBA’的8b10編碼(code group)。
原始數(shù)據(jù)是隨機(jī)的,它們占用了1024(2^10)個10b碼型中的256(2^8)個。在它們之外,少數(shù)碼型被挑選出來作為控制碼。
<圖3>
8b10b的碼的缺點(diǎn)是25%的額外帶寬開銷。隨著端口速率的提升和技術(shù)的發(fā)展,新的編碼方式也被開發(fā)出來,比如10G以上的以太網(wǎng)都改成64b/66b編碼,PCIe 3.0以上使用128/130b編碼,等等。
3. PCS(Physical Coding Sublayer)物理編碼子層
8b10b控制碼和數(shù)據(jù)碼一起構(gòu)成了PCS碼組(ordered set)。PCS碼組由一個或者多個8b10b碼型組成。常用的有配置(Configuration),空閑(IDLE),封裝(Encapsulation,標(biāo)志幀頭和幀尾)。
<圖4>
PCS完成了MAC幀和10b碼型的轉(zhuǎn)換。圖<5>的左邊是以完整的以太網(wǎng)幀,包括幀與幀之間的間隙(沒有有效數(shù)據(jù)),右邊是每一字節(jié)對應(yīng)的10b編碼。想象一下,左右兩側(cè)同時被125MHz的時鐘驅(qū)動,從上往下,形成MAC幀8b10b編碼解碼的流水線。
<圖5>
我們看到,第一個前導(dǎo)碼被控制碼/K27.7/取代,代表幀頭。
從第二個前導(dǎo)碼開始一直到校驗(yàn)碼幀尾,都是8b10b數(shù)據(jù)碼轉(zhuǎn)換。
幀之后第一個字節(jié)(IPG的一部分)被控制碼/K29.7/取代,代表幀尾。
幀之后第二個字節(jié)(IPG的一部分)被控制碼/K23.7/取代,代表載波信號延伸一拍。(根據(jù)幀長度是奇數(shù)偶數(shù)會有差異)
其他IPG將會被/I/完全填充。
IDLE(/I/)是處理時鐘PPM的關(guān)鍵,因?yàn)樗鼈儾皇荕AC幀的組成部分,可以根據(jù)需要來增加或者刪除。
限于篇幅,上篇到此為止。本篇闡述了以太網(wǎng)時鐘PPM頻率偏差問題的由來,基于1000Base-X總結(jié)了物理層和PCS層的結(jié)構(gòu)。
我們將在下篇講講基于異步FIFO的彈性緩存(Elastic buffer)和解決PPM時鐘問題的局限。
-
以太網(wǎng)
+關(guān)注
關(guān)注
41文章
5635瀏覽量
176019 -
時鐘
+關(guān)注
關(guān)注
11文章
1901瀏覽量
133248 -
Mac
+關(guān)注
關(guān)注
0文章
1117瀏覽量
53133 -
總線系統(tǒng)
+關(guān)注
關(guān)注
0文章
31瀏覽量
10228 -
PPM
+關(guān)注
關(guān)注
0文章
47瀏覽量
17503
發(fā)布評論請先 登錄
以太網(wǎng)應(yīng)用關(guān)鍵技術(shù)及設(shè)計(jì)方案集錦
設(shè)計(jì)坊第三期:靈活的工業(yè)以太網(wǎng)解決方案
基于標(biāo)準(zhǔn)的汽車以太網(wǎng)解決方案的優(yōu)勢有哪些?
工業(yè)以太網(wǎng)方案選擇指南
高速以太網(wǎng)引動超大規(guī)模計(jì)算技術(shù)革新,時鐘方案是實(shí)現(xiàn)高速以太網(wǎng)的關(guān)鍵
Linux以太網(wǎng)解決方案的介紹
半導(dǎo)體車用以太網(wǎng)解決方案

以太網(wǎng)與數(shù)字電網(wǎng)相結(jié)合的解決方案

100G以太網(wǎng)光模塊解決方案

數(shù)據(jù)中心市場的關(guān)鍵以太網(wǎng)解決方案

MMWAVEPOEEVM以太網(wǎng)供電解決方案用戶指南

TOSUN 車載以太網(wǎng)仿真測試解決方案

評論