10M/100M/1000M自協商基理
10M/100M/1000M自協商,主要協商的內容為“速度雙工”、“流控”和“主從”三大類,下面先介紹10M/100M/1000M自協商的BasePage和NextPage的bits分配,然后就這三大類內容進行闡述。
10M/100M/1000M自協商交互方式
1000BASE-T PHY(無EEE能力時)按順尋地不間斷地交換一個自動協商基本頁、一個1000BASE-T格式的下一頁,和兩個1000BASE-T未格式化的下一頁;1000BASE-T PHY(有EEE能力時)按順尋地不間斷地交換一個自動協商基本頁、一個1000BASE-T格式的下一頁,兩個1000BASE-T未格式化的下一頁,一個1000BASE-T格式的下一頁,和一個1000BASE-T未格式化的下一頁;
1000BASE-T BasePage和NextPage編碼格式分別如下圖:
速度雙工協商
速度雙工協商主要靠設置“本地廣告能力寄存器Auto-NegotiationAdvertisement Register Register 4”的bit9:5和“本地控制寄存器1000BASE-T Control Register Page 0, Register 9”的bit9:8實現的。下面為描述問題方便,把Reg 9.bit9:8+Reg 4.bit9:5合并為T[11:5].本端和遠端選擇彼此都有的能力(T[11:5]中的置1的相關bit)中優先級高的那種能力作為本端PHY和遠端PHY的實際工作的速度雙工狀態。
PHY能力優先級由高到低排序如下:
1000BASE-Tfull duplex
1000BASE-T half duplex[沒有芯片支持]
100BASE-T2 full duplex[已淘汰]
100BASE-TX full duplex
100BASE-T2[已淘汰]
100BASE-T4[已淘汰]
100BASE-TX half duplex
10BASE-T full duplex
10BASE-T half duplex
下面分為“本端遠端均為千兆PHY”和“一端為千兆PHY,另一端均為百兆PHY”兩種情況討論。
“本端遠端均為千兆PHY”:
例子1:本端PHY的T[11:5]=2b1001111;雙絞線另一側的遠端PHY的T[11:5]=2b0000101。此時他倆的彼此能力的交集為PHY的T[11:5]=2b0000101,即雙絞線鏈路雙方都支持的PHY能力為T[5]=1(10BASE-T half duplex)和T[7]=1(100BASE-TX half duplex),并且因為優先級順序為100BASE-TX half duplex>10BASE-T half duplex,故此時本端和遠端速度雙工自協商的結果為“100BASE-TX half duplex”;
例子2:本端PHY的T[11:5]=2b1001111;雙絞線另一側的遠端PHY的T[11:5]=2b1001010。此時他倆的彼此能力的交集為PHY的T[11:5]=2b1001010,即雙絞線鏈路雙方都支持的PHY能力為T[6]=1(10BASE-T full duplex)、 T[8]=1(100BASE-TX full duplex)和T[11]=1(1000BASE-T full duplex),并且因為優先級順序為1000BASE-Tfull duplex >100BASE-TX full duplex>10BASE-T full duplex,故此時本端和遠端速度雙工自協商的結果為“1000BASE-T full duplex”;
例子3:本端PHY的T[11:5]=2b1000000;雙絞線另一側的遠端PHY的T[11:5]=2b0001111。此時他倆的彼此能力的交集為PHY的T[11:5]=2b0000000,即雙絞線鏈路雙方沒有PHY能力交集,故此時本端和遠端永遠無法建立正確鏈接。
寫到這里,可能有小伙伴感覺到疑惑,既然88e1111 PHY的“本地控制寄存器1000BASE-T Control Register Page 0, Register 9”的bit8(1000BASE-T half duplex)可設置為1,為什么說芯片均不支持1000BASE-T half duplex呢?筆者曾經實踐多款不同廠家的PHY(broadcom,marvell,vitesse,realtek,micrel等),發現即使本端和遠端的該能力bit均置1,但是實測效果是1000BASE-Thalf duplex模式實際并未生效,為避免產生不必要的混淆,建議驅動工程師將此bit永遠初始化0。其實芯片廠家普遍選擇不實現1000BASE-T half duplex是合乎情理的。我們知道以太網PHY半雙工的技術需求主要是20年前,因為當年LAN主要是基于集線器組網(集線器基于總線廣播模式而非地址表交換模式),并且當年的計算機的CPU能力普遍孱弱,硬件無環境無法支持全雙工的應用。
而在進入1000BASE-T時代(大概是2007年)后,集線器已經被性能優越的交換機(基于SRAM地址表架構的交換機天生支持全雙工能力)完全取代,同時計算機的CPU的處理性能極大飛躍,故此時此刻半雙工的需求不復存在。所有廠家就沒有花額外的成本去支持1000BASE-T half duplex必要。(還有另外一個原因,理論上如果支持基于CSMA/CD的1000BASE-T半雙工200米的沖突域的需求,以太網的最小幀長要從64Byte提高到512Byte,這樣的變動的歷史代價太大)。
“一端為千兆PHY,另一端均為百兆PHY”:
千兆PHY通過“LinkPartner Ability Register - Base Page, Copper Page 0, Register 5”的bit15獲知雙絞線的另一端為百兆PHY(bit15 NextPage=0),故千兆PHY也只支持BasePage發送(此時NextPage永遠不對外發送)。那當前的情況就完全等同于10M/100M自協商了,該部分在“10M/100M自協商基理”章節已闡述過,故這里就不再贅述了。
流控協商
流控主要靠設置“本地廣告能力寄存器Auto-Negotiation Advertisement Register Register 4”的bit11:10實現的。軟件通過本端和遠端的bit11:10的各種組合進行對本端MAC的tx和rx方向的802.3流控進行設置,具體規則如下表:
“MAC-PCS控制寄存器”需要軟件根據“PHY-AN廣告寄存器”和“PHY-AN LP廣告狀態寄存器”的內容進行動態更新配置,交換芯片硬件并不會自動聯動。 流控設置之所以有上表的規則要求,是需要保證雙絞線鏈路雙方的流控狀態匹配(雙方都“tx 使能rx使能”,雙方都“tx關閉rx關閉”和一方“tx關閉rx使能”另一方“tx使能rx關閉”)。如果出現雙絞線鏈路雙方流控失配,在鏈路擁塞時不但不能享受流控的優點,反而會引起鏈路中出現大量Pause流控幀使已經擁塞的鏈路更加擁塞。
主從協商
在1000BASE-T模式中,鏈路的兩端執行環路定時(loop timing)。鏈接的一端協商配置為主設備,另一個協商配置為從設備。主設備發送和接收時鐘鎖定在本地晶振輸入。從設備發送和接收時鐘被鎖定到傳入的接收數據流。環路定時(loop timing)通過確保發射機和接收機在鏈路的每一端都以相同的頻率工作。
主從協商主要靠設置 “本地控制寄存器1000BASE-T ControlRegister Page 0, Register 9”的bit12:10實現的。具體規則如下表:
網絡管理員因避免出現上述表格的最后兩種情況,一旦出現此情況10M/100M/1000M自協商將永遠無法完成,故此時本端和遠端永遠無法建立正確鏈接。 好的小伙伴們,這期10M/100M/1000M自協商就講完啦,下一課會開始“10M/100M/1000M/2.5G/5G/10G/25G/40G自協商”相關內容。
審核編輯:劉清
-
以太網
+關注
關注
40文章
5135瀏覽量
166798 -
集線器
+關注
關注
0文章
339瀏覽量
39176 -
雙絞線
+關注
關注
2文章
211瀏覽量
23512 -
PHY
+關注
關注
2文章
270瀏覽量
51307 -
控制寄存器
+關注
關注
0文章
34瀏覽量
11444
原文標題:以太網自協商機制--雙絞線自協商(四)
文章出處:【微信號:FPGA開源工坊,微信公眾號:FPGA開源工坊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論