自協商基本原理?
自動協商模式是端口根據另一端設備的連接速度和雙工模式,自動把它的速度調節到最高的公共水平,即線路兩端能具有的最快速度和雙工模式。
自協商功能允許一個網絡設備能夠將自己所支持的工作模式信息傳達給網絡上的對端,并接受對方可能傳遞過來的相應信息,從而解決雙工和10M/100M速率自協商問題。自協商功能完全由物理層芯片設計實現,因此并不使用專用數據包或帶來任何高層協議開銷。?
自協商功能的基本機制是:每個網絡設備在上電、管理命令發出、或是用戶干預時發出FLP(快速連接脈沖),協商信息封裝在這些FLP序列中。FLT中包含有時鐘/數字序列,將這些數據從中提取出來就可以得到對端設備支持的工作模式,以及一些用于協商握手機制的其他信息。當一個設備不能對FLP作出有效反應,而僅返回一個NLP(普通連接脈沖)時,它被作為一個10BASE-T兼容設備。 快速鏈路脈沖FLP和普通鏈路脈沖NLP都僅使用于非屏蔽雙絞線上,而不能應用在光纖媒體。?
自動協商的內容主要包括雙工模式、運行速率、流控等內容,一旦協商通過,鏈路兩端的設備就鎖定在這樣一種運行模式下。1000M以太網也支持自協商,在此從略。?
電口和光口自協商主要區別是在OSI 中它們所處的位置不同。對于電口來說,協商發生在鏈路信號傳輸之前;對于光口來說, 自協商機制與PCS在同一層, 這意味著光口的協商必須先建立鏈路同步以后才可以進行協商。
協商過程
? 如果兩端都支持自協商,則都會接收到對方的FLP,并且把FLP中的信息解碼出來。得到對方的連接能力。并且把對端的自協商能力值記錄在自協商對端能力寄存器中(Auto-Negotiation Link Partner Ability Register , PHY標準寄存器地址5 )。同時把狀態寄存器(PHY標準寄存器地址1)的自協商完成bit(bit5)置成1。在自協商未完成的情況下,這個bit一直為0。
然后各自根據自己和對方的最大連接能力,選擇最好的連接方式Link。比如,如果雙方都即支持10M也支持100M,則速率按照100M連接;雙方都即支持全雙工也支持半雙工,則按照全雙工連接。
一定連接建立后,FLP就停止發送。直到鏈路中斷,或者得到自協商Restart命令時,才會再次發送FLP。
為了保證在對端不能支持自協商的情況下也能連接,引入了被稱為并行檢測(Parallel Detection)的機制。在一端打開自協商,另一端關閉自協商的情況下,連接的建立就依靠并行檢測功能實現。
并行檢測機制是這樣的:在具有自協商能力的設備端口上,如果接收不到FLP,則檢測是否有10M鏈路的特征信號或100M鏈路的特征信號。
如果設備是10M設備,不支持自協商,則在鏈路上發送普通連接脈沖(Normal Link Pulse)簡稱NLP。NLP僅僅表示設備在位,不包含其它的額外信息。NLP脈沖如圖:
如果是100M設備,不支持自協商,則在沒有數據的情況下,在鏈路上一直發送4B/5B編碼的Idle符號。
并行檢測機制如果檢測到NLP,則知道對方支持10M速率;如果檢測到4B/5B編碼的Idle符號,則知道對方支持100M速率。但是對方是否支持全雙工、是否支持流控幀這些信息是無法得到的。因此在這種情況下,認為對方只支持半雙工,不支持全雙工,且不支持流控幀。
基于以上原理,在對端不打開自協商時,打開自協商的一方只能協商成半雙工模式。
802.3協議規定,通過并行檢測建立連接后,PHY的狀態寄存器(PHY標準寄存器地址1)的自協商完成bit(bit5)依然要置位成1,盡管鏈路上并非使用了真正的自協商操作。同時規定在自協商完成bit為1的情況下,本地自協商能力寄存器(PHY標準寄存器地址4)和對端自協商能力寄存器(PHY標準寄存器地址5)是有意義的。所以,要把寄存器5中的數據更新。如果建立的連接為10M,則寄存器5的10M能力bit(bit5)置1,其它bit置0,表示對端只能支持10M半雙工;如果建立的連接為100M,則寄存器5的100M能力bit(bit7)置1,其它bit置0,表示對端只能支持100M半雙工。
千兆光口自協商
千兆光口可以工作在強制和自協商兩種模式。802.3規范中千兆光口只支持1000M速率,支持全雙工(Full)和半雙工(Half)兩種雙工模式。
自協商和強制最根本的區別就是兩者再建立物理鏈路時發送的碼流不同,自協商模式發送的是/C/碼,也就是配置(Configuration)碼流,而強制模式發送的是/I/碼,也就是idle碼流。
千兆光口自協商過程:
1.兩端都設置為自協商模式
雙方互相發送/C/碼流,如果連續接收到3個相同的/C/碼且接收到的碼流和本端工作方式相匹配,則返回給對方一個帶有Ack應答的/C/碼,對端接收到Ack信息后,認為兩者可以互通,設置端口為UP狀態
2.一端設置為自協商,一端設置為強制
自協商端發送/C/碼流,強制端發送/I/碼流,強制端無法給對端提供本端的協商信息,也無法給對端返回Ack應答,故自協商端DOWN。但是強制端本身可以識別/C/碼,認為對端是與自己相匹配的端口,所以直接設置本端端口為UP狀態
3.兩端均設置為強制模式
雙方互相發送/I/碼流,一端接收到/I/碼流后,認為對端是與自己相匹配的端口,直接設置本端端口為UP狀態
快速鏈接脈沖(FLPs)和普通鏈接脈沖(NLPs)
自動協商的執行是通過FLPs來實現的。NLPs是周期為16ms左右的脈沖,脈沖寬度為100ns(10base-T)、10ns(100base-TX)。FLPs類似于NLPs,它是連續的17~33個的脈沖用來傳輸16bit的連接碼(link code word)以進行自動協商,碼寬為125us,在125us碼寬中間有脈沖為1,無脈沖為0。link code word并不是以太網通信結點的有效數據,只被PHY接口模塊識別。

? 自協商基本頁信息
在鏈路初始化的時候,自協商協議向對端發送16Bit的報文,也就是所謂的脈沖信號,然后從對端接收類似的報文,這個16Bit的報文就是我們所說的基本頁,不同的設備,在針對基本頁做字位信息的時候,那就能識別它是屬于哪一個情況.。
bit0~4:指示自協商數據幀,對于802.3標準,設置為'10000';
bit5~12:指示結點(端口)信息性能域;
?bit5~9:定義端口可連接類型,按照優先級從高到低如下(SETBIT有效):
? bit8:100base-TX全雙工;bit9:100base-T4;bit7:100base-TX半雙工;bit6:10base-T全雙工;bit5:10base-T半雙工;
?bit10:指示流量控制信息:0:流控無效;1:流控有效,決定了端口后續通信是否有PAUSE幀;
?bit11:支持全雙工連接時的非對稱暫停機制;
?bit12:擴展下一頁信息頁,僅用于千兆端口;
bit13:遠程故障指示;
bit14:握手信號Ack,當收到三個連續的相同FLP后,此位置1;
bit15:指示是否有下一頁基本頁信息。下一頁信息用來傳輸在自協商過程中已連接節點的額外信息。
PAUSE幀(流量控制)
為什么要有流量控制呢?現在的網絡有10M和100M的以太,那么當10m以太和100m以太共存的時候,那就有可能會產生這種線路速率不匹配的情況,這個時候,當通過交換機一個端口的流量過大,超出了它的處理能力時,就會發生端口擁塞,擁塞的時候那么丟包、重傳、時延等都會隨之而來,流量控制的作用時防止在出現擁塞的情況下丟幀。
這里的流量控制采用的是最常用的一種方式—PAUSE幀。
在半雙工方式下,流量控制是通過后退壓力(backpressure)技術實現的,模擬產生碰撞,使得信息源降低發送速度。
在全雙工方式下流控一般遵循IEEE 802.3X標準。采用一64字節的PAUSE的幀來控制,使用一個保留的組播地址:01-80-C2-00-00-01發送給正在發送的站,發送站接到該幀后,就會暫停或停止發送。這個地址的數據不會被網橋和交換機所轉發,所以PAUSE幀不會產生附加信息量。
PAUSE功能應用場合:
? ->一對終端(簡單的兩點網絡)
? ->一個交換機和一個終端
?->交換機和交換機之間的鏈路
PAUSE功能的增加主要是為了防止瞬時流量的過載導致的緩沖區溢出而造成以太網幀的丟棄。
PAUSE功能不能解決下列問題:
? ->穩定狀態的網絡擁塞
? ->端到端流量控制
? ->比簡單“停—啟”更復雜的機制
以太網端口電口工作模式簡單介紹
1.以太網口的兩端工作模式(10M半雙工、10M全雙工、100M半雙工、100M全雙工、自協商)必須設置一致。
2.如果一端是固定模式(無論是10M、100M),另外一端是自協商模式,即便能夠協商成功,自協商的那一端也將只能工作在半雙工模式。?
3.如果一端工作在全雙工模式,另外一端工作在半雙工模式(包括自協商出來的半雙工,也一樣處理),Ping是沒有問題的,流量小的時候也沒有任何問題,流量達到約15%以上時,就會出現沖突、錯包,最終影響了工作性能!??
4.對于兩端工作模式都是自協商,最后協商成的結果是“兩端都支持的工作模式中優先級最高的那一類”。?
5. 如果A端自協商,B端設置為100M全雙工,A協商為100M半雙工后,再強制將B改為10M全雙工,A端也會馬上向下協商到10M半雙工;如果A端自協商,B端設置為10M全雙工,A協商為10M半雙工后,再強制將B改為100M全雙工,會出現協商不成功,連接不上!這個時候,如果插拔一下網線,又會重新協商在100M半雙工。??
建議
以太網口的兩端工作模式必須設置一致。 否則,就會出現流量一大速度變慢的問題。大多數設備以太網口的默認的出廠設置是自協商。如果兩端都是自協商,協商成功了,但網絡不通,此時請檢查網線是否支持100M。如果兩端都是自協商,協商成功并且運行在全雙工,在沒有Link Down的前提下,將其中一端“立刻”設置為固定的“10M/100M全雙工”,兩端仍然能夠工作在全雙工。但是,萬一將來插拔網線或者其他原因出現重新Link,就會重新協商為“一端全雙工&一端半雙工”的不穩定連接。因此,這種情況一定要避免!