自協(xié)商技術(shù)
摘要:本文介紹了自協(xié)商的基本原理和工作模式,以及自協(xié)商相關(guān)細(xì)節(jié)介紹。
縮略語(yǔ):
FLP:快速連接脈沖
NLP:普通連接脈沖
CSMA/CD:載波監(jiān)聽(tīng)多路訪問(wèn)/沖突檢測(cè)
PCS:物理編碼子層
OSI :開(kāi)放式系統(tǒng)互聯(lián)參考模型
關(guān)鍵詞:
自協(xié)商,F(xiàn)LP,NLP,CSMA/CD,PCS,全雙工,半雙工,并行檢測(cè)
1.概述
1.1 產(chǎn)生背景
最早的以太網(wǎng)都是10M 半雙工的,所以需要CSMA/CD 等一系列機(jī)制保證系統(tǒng)的穩(wěn)定性。隨著技術(shù)的發(fā)展,出現(xiàn)了全雙工,接著又出現(xiàn)了100M,以太網(wǎng)的性能大大改善。但是隨之而來(lái)的問(wèn)題是:如何保證原有以太網(wǎng)絡(luò)和新以太網(wǎng)的兼容?
于是,提出了自動(dòng)協(xié)商技術(shù)來(lái)解決這種矛盾。自動(dòng)協(xié)商的主要功能就是使物理鏈路兩端的設(shè)備通過(guò)交互信息自動(dòng)選擇同樣的工作參數(shù)。自動(dòng)協(xié)商的內(nèi)容主要包括雙工模式、運(yùn)行速率以及流控等參數(shù)。一旦協(xié)商通過(guò),鏈路兩端的設(shè)備就鎖定在同樣的雙工模式和運(yùn)行速率。
1.2 技術(shù)優(yōu)點(diǎn)
自協(xié)商功能允許一個(gè)網(wǎng)絡(luò)設(shè)備能夠?qū)⒆约核С值墓ぷ髂J叫畔鬟_(dá)給網(wǎng)絡(luò)上的對(duì)端,并接受對(duì)方可能傳遞過(guò)來(lái)的相應(yīng)信息,從而解決雙工和10M/100M 速率自協(xié)商問(wèn)題。自協(xié)商功能完全由物理層芯片設(shè)計(jì)實(shí)現(xiàn),因此并不使用專用數(shù)據(jù)包或帶來(lái)任何高層協(xié)議開(kāi)銷。
2.自協(xié)商介紹
2.1 概念及原理
802.3 標(biāo)準(zhǔn)中的第28條是這樣定義自動(dòng)協(xié)商功能的:它允許一個(gè)設(shè)備向鏈路遠(yuǎn)端的設(shè)備通告自己所運(yùn)行的工作方式,并且偵測(cè)遠(yuǎn)端通告的相應(yīng)的運(yùn)行方式。自動(dòng)協(xié)商的目的是給共享一條鏈路的兩臺(tái)設(shè)備提供一種交換信息的方法,并自動(dòng)配置它們工作在最優(yōu)能力下。
照字面上來(lái)講,自動(dòng)協(xié)商就是一種在兩臺(tái)設(shè)備間達(dá)到可能的最大傳輸速率的方式。它允許設(shè)備用一種方式“討論”可能的傳輸速率,然后選擇雙方可接受的最佳速率。它們使用叫做快速鏈路脈沖的FLP 交換各自傳輸能力的通告。FLP 可以讓對(duì)端知道源端的傳輸能力是怎樣的。當(dāng)交換FLP 時(shí),兩個(gè)站點(diǎn)根據(jù)以下從高到低的優(yōu)先級(jí)偵測(cè)雙方共有的最佳方式。
• 1000M 全雙工 注:左邊從上到下優(yōu)先級(jí)依次遞減
• 1000M 半雙工
• 100M 全雙工
• 100M 半雙工
• 10M 全雙工
• 10M 半雙工
自協(xié)商功能的基本機(jī)制是:每個(gè)網(wǎng)絡(luò)設(shè)備在上電、管理命令發(fā)出、或是用戶干預(yù)時(shí)發(fā)出FLP(快速連接脈沖),協(xié)商信息封裝在這些FLP 序列中。FLP 中包含有時(shí)鐘/數(shù)字序列,將這些數(shù)據(jù)從中提取出來(lái)就可以得到對(duì)端設(shè)備支持的工作模式,以及一些用于協(xié)商握手機(jī)制的其他信息。
當(dāng)一個(gè)設(shè)備不能對(duì)FLP 作出有效反應(yīng),而僅返回一個(gè)NLP(普通連接脈沖)時(shí),它被作為一個(gè)10BASE-T 兼容設(shè)備。快速鏈路脈沖FLP 和普通鏈路脈沖NLP 都僅使用于非屏蔽雙絞線上,而不能應(yīng)用在光纖媒體。
電口和光口自協(xié)商主要區(qū)別是在OSI 中它們所處的位置不同。對(duì)于電口來(lái)說(shuō),協(xié)商發(fā)生在鏈路信號(hào)傳輸之前;對(duì)于光口來(lái)說(shuō),自協(xié)商機(jī)制與PCS(物理編碼子層)在同一層,這意味著光口的協(xié)商必須先建立鏈路同步以后才可以進(jìn)行協(xié)商。
2.2 相關(guān)術(shù)語(yǔ)
2.2.1 全雙工和半雙工概念
全雙工是在微處理器與外圍設(shè)備之間采用發(fā)送線和接受線各自獨(dú)立的方法,可以使數(shù)據(jù)在兩個(gè)方向上同時(shí)進(jìn)行傳送操作。指在發(fā)送數(shù)據(jù)的同時(shí)也能夠接收數(shù)據(jù),兩者同步進(jìn)行,這好像我們平時(shí)打電話一樣,說(shuō)話的同時(shí)也能夠聽(tīng)到對(duì)方的聲音。
所謂半雙工就是指一個(gè)時(shí)間段內(nèi)只有一個(gè)動(dòng)作發(fā)生,舉個(gè)簡(jiǎn)單例子,一條窄窄的馬路,同時(shí)只能有一輛車通過(guò),當(dāng)有兩輛車對(duì)開(kāi),這種情況下就只能一輛先過(guò),等到頭后另一輛再開(kāi),這個(gè)例子就形象的說(shuō)明了半雙工的原理。早期的對(duì)講機(jī)、以及早期集線器等設(shè)備都是基于半雙工的產(chǎn)品。隨著技術(shù)的不斷進(jìn)步,現(xiàn)在制造的網(wǎng)卡、交換機(jī)、路由器都支持全雙工模式。半雙工的網(wǎng)絡(luò)設(shè)備已經(jīng)逐漸退出歷史舞臺(tái)。
2.2.2 全雙工和半雙工以太網(wǎng)的特點(diǎn)
1.半雙工以太網(wǎng)
①任意時(shí)刻只能接收數(shù)據(jù)或者發(fā)送數(shù)據(jù)
②采用CSMA/CD 訪問(wèn)機(jī)制
③有最大傳輸距離的限制
2.全雙工以太網(wǎng)
①同一時(shí)刻可以接收和發(fā)送數(shù)據(jù)
②傳輸數(shù)據(jù)幀的效率大大提高,最大吞吐量達(dá)到雙倍速率
③全雙工從根本上解決了以太網(wǎng)的沖突問(wèn)題,以太網(wǎng)從此告別CSMA/CD
④消除了半雙工的物理距離限制
2.2.3 協(xié)商脈沖FLP
自協(xié)商是通過(guò)一種叫做快速連接脈沖(Fast Link Pulse)的信號(hào)實(shí)現(xiàn)的,簡(jiǎn)稱FLP。自協(xié)商的雙方通過(guò)FLP 來(lái)交換數(shù)據(jù)。FLP 的編碼方式如下圖
(1)FLP脈沖波形
(2)FLP編碼方式
在具備自協(xié)商能力的端口沒(méi)有Link 的情況下,端口一直發(fā)送FLP,在FLP 中包含著自己的連接能力信息,包括支持的速率能力、雙工能力、流控能力等。這個(gè)連接能力是從自協(xié)商能力寄存器中得到的(PHY 標(biāo)準(zhǔn)寄存器地址4),依靠脈沖位置編碼攜帶數(shù)據(jù)。
一個(gè)FLP 突發(fā)包含33 個(gè)脈沖位置。17 個(gè)奇數(shù)位置脈沖為時(shí)鐘脈沖,時(shí)鐘脈沖總是存在的;
16 個(gè)偶數(shù)位置脈沖用來(lái)表示數(shù)據(jù):此位置有脈沖表示1,此位置沒(méi)有脈沖表示0。這樣1 個(gè)FLP的突發(fā)就可以傳輸16bit 的數(shù)據(jù)。自協(xié)商交互數(shù)據(jù)就這樣通過(guò)物理線路被傳輸。
如果兩端都支持自協(xié)商,則都會(huì)接收到對(duì)方的FLP,并且把FLP中的信息解碼出來(lái)。得到對(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ì)方的最大連接能力,選擇最好的連接方式。比如,如果雙方都即支持10M 也支持100M,則速率按照100M連接;雙方都即支持全雙工也支持半雙工,則按照全雙工連接。一旦連接建立后,F(xiàn)LP就停止發(fā)送。直到鏈路中斷,或者得到自協(xié)商Restart命令時(shí),才會(huì)再次發(fā)送FLP。
2.2.4 并行檢測(cè)
為了保證在對(duì)端不能支持自協(xié)商的情況下也能連接,引入了被稱為并行檢測(cè)(Parallel Detection)的機(jī)制。在一端打開(kāi)自協(xié)商,另一端關(guān)閉自協(xié)商的情況下,連接的建立就依靠并行檢測(cè)功能實(shí)現(xiàn)。
并行檢測(cè)機(jī)制是這樣的:在具有自協(xié)商能力的設(shè)備端口上,如果接收不到FLP,則檢測(cè)是否有10M鏈路的特征信號(hào)或100M鏈路的特征信號(hào)。
如果設(shè)備是10M設(shè)備,不支持自協(xié)商,則在鏈路上發(fā)送普通連接脈沖(Normal Link Pulse)簡(jiǎn)稱NLP。NLP僅僅表示設(shè)備在位,不包含其它的額外信息。NLP脈沖如圖:
如果是 100M 設(shè)備,不支持自協(xié)商,則在沒(méi)有數(shù)據(jù)的情況下,在鏈路上一直發(fā)送4B/5B編碼的Idle符號(hào)。
并行檢測(cè)機(jī)制如果檢測(cè)到NLP,則知道對(duì)方支持10M速率;如果檢測(cè)到4B/5B編碼的Idle符號(hào),則知道對(duì)方支持100M 速率。但是對(duì)方是否支持全雙工、是否支持流控幀這些信息是無(wú)法得到的。因此在這種情況下,認(rèn)為對(duì)方只支持半雙工,不支持全雙工,且不支持流控幀。
基于以上原理,在對(duì)端不打開(kāi)自協(xié)商時(shí),打開(kāi)自協(xié)商的一方只能協(xié)商成半雙工模式。
802.3 協(xié)議規(guī)定,通過(guò)并行檢測(cè)建立連接后,PHY 的狀態(tài)寄存器(PHY標(biāo)準(zhǔn)寄存器地址1)的自協(xié)商完成bit(bit5)依然要置位成1,盡管鏈路上并非使用了真正的自協(xié)商操作。同時(shí)規(guī)定在自協(xié)商完成bit 為1 的情況下,本地自協(xié)商能力寄存器(PHY 標(biāo)準(zhǔn)寄存器地址4)和對(duì)端自協(xié)商能力寄存器(PHY 標(biāo)準(zhǔn)寄存器地址5)是有意義的。所以,要把寄存器5 中的數(shù)據(jù)更新。如果建立的連接為10M,則寄存器5 的10M能力bit(bit5)置1,其它bit置0,表示對(duì)端只能支持10M半雙工;如果建立的連接為100M,則寄存器5 的100M能力bit(bit7)置1,其它bit置0,表示對(duì)端只能支持100M半雙工。
2.3 以太網(wǎng)電口自協(xié)商
1.以太網(wǎng)口的兩端工作模式(10M半雙工、10M全雙工、100M半雙工、100M全雙工、自協(xié)商)必須設(shè)置一致。
2.如果一端是固定模式(無(wú)論是10M、100M),另外一端是自協(xié)商模式,即便能夠協(xié)商成功,自協(xié)商的那一端也將只能工作在半雙工模式。
3.如果一端工作在全雙工模式,另外一端工作在半雙工模式(包括自協(xié)商出來(lái)的半雙工,也一樣處理),Ping是沒(méi)有問(wèn)題的,流量小的時(shí)候也沒(méi)有任何問(wèn)題,流量達(dá)到約15%以上時(shí),就會(huì)出現(xiàn)沖突、錯(cuò)包,最終影響了工作性能!
4.對(duì)于兩端工作模式都是自協(xié)商,最后協(xié)商成的結(jié)果是“兩端都支持的工作模式中優(yōu)先級(jí)最高的那一類”。
5. 如果A端自協(xié)商,B端設(shè)置為100M全雙工,A協(xié)商為100M半雙工后,再?gòu)?qiáng)制將B改為10M全雙工,A端也會(huì)馬上向下協(xié)商到10M半雙工;如果A端自協(xié)商,B端設(shè)置為10M全雙工,A協(xié)商為10M半雙工后,再?gòu)?qiáng)制將B改為100M全雙工,會(huì)出現(xiàn)協(xié)商不成功,連接不上!這個(gè)時(shí)候,如果插拔一下網(wǎng)線,又會(huì)重新協(xié)商在100M半雙工。
2.4 千兆光口自協(xié)商
千兆光口可以工作在強(qiáng)制和自協(xié)商兩種模式。802.3規(guī)范中千兆光口只支持1000M速率,支持全雙工(Full)和半雙工(Half)兩種雙工模式。
自協(xié)商和強(qiáng)制最根本的區(qū)別就是兩者再建立物理鏈路時(shí)發(fā)送的碼流不同,自協(xié)商模式發(fā)送的是/C/碼,也就是配置(Configuration)碼流,而強(qiáng)制模式發(fā)送的是/I/碼,也就是idle碼流。
千兆光口自協(xié)商過(guò)程:
1.兩端都設(shè)置為自協(xié)商模式
雙方互相發(fā)送/C/碼流,如果連續(xù)接收到3個(gè)相同的/C/碼且接收到的碼流和本端工作方式相匹配,則返回給對(duì)方一個(gè)帶有Ack應(yīng)答的/C/碼,對(duì)端接收到Ack信息后,認(rèn)為兩者可以互通,設(shè)置端口為UP狀態(tài)
2.一端設(shè)置為自協(xié)商,一端設(shè)置為強(qiáng)制
自協(xié)商端發(fā)送/C/碼流,強(qiáng)制端發(fā)送/I/碼流,強(qiáng)制端無(wú)法給對(duì)端提供本端的協(xié)商信息,也無(wú)法給對(duì)端返回Ack應(yīng)答,故自協(xié)商端DOWN。但是強(qiáng)制端本身可以識(shí)別/C/碼,認(rèn)為對(duì)端是與自己相匹配的端口,所以直接設(shè)置本端端口為UP狀態(tài)
3.兩端均設(shè)置為強(qiáng)制模式
雙方互相發(fā)送/I/碼流,一端接收到/I/碼流后,認(rèn)為對(duì)端是與自己相匹配的端口,直接設(shè)置本端端口為UP狀態(tài)
2.5 自協(xié)商注意事項(xiàng)
有關(guān)自動(dòng)協(xié)商的大多數(shù)問(wèn)題是由于有一方?jīng)]有工作在自動(dòng)協(xié)商方式。當(dāng)一個(gè)站點(diǎn)工作在自動(dòng)協(xié)商方式而另一方?jīng)]有時(shí),只有一方發(fā)送快速鏈路脈沖。另一方已經(jīng)設(shè)定在特定的速率和雙工方式下,這樣就不會(huì)跟對(duì)端進(jìn)行協(xié)商。他已經(jīng)被強(qiáng)行設(shè)定,就不會(huì)再考慮他連接端的工作方式。
由于強(qiáng)行設(shè)定的站點(diǎn)不會(huì)告訴正在協(xié)商的站點(diǎn)自己的速率和單雙工方式,自動(dòng)協(xié)商的站點(diǎn)就必須自己決定合適的速率和單雙工方式來(lái)匹配對(duì)端,這叫做并行檢測(cè)。協(xié)商站點(diǎn)監(jiān)聽(tīng)從對(duì)端過(guò)來(lái)的鏈路脈沖能夠辨別通信速率。10,100和1000Mbs以太網(wǎng)使用不同的信號(hào)方式,所以協(xié)商站點(diǎn)能識(shí)別對(duì)端的工作速率。
然而,全半雙工又是另外一回事了。因?yàn)閺?qiáng)行設(shè)定的站點(diǎn)不進(jìn)行協(xié)商,協(xié)商站點(diǎn)沒(méi)有方法知道強(qiáng)行設(shè)定站點(diǎn)工作在哪種雙工方式下。協(xié)商站點(diǎn)為了避免全半雙工不匹配,根據(jù)802.3標(biāo)準(zhǔn),它必需與強(qiáng)行設(shè)定的站點(diǎn)使用相同的速率,但是它工作在半雙工方式下。
不管速率如何(除了10Giga),半雙工是以太網(wǎng)的默認(rèn)方式。在許多情況下,這會(huì)產(chǎn)生全半雙工不匹配問(wèn)題。
如上面幾幅圖,為了兩端都達(dá)到全雙工方式,要么兩端都自動(dòng)協(xié)商,要么兩端都強(qiáng)行設(shè)定。務(wù)必不要一端自動(dòng)協(xié)商,另一端強(qiáng)行設(shè)定。這會(huì)導(dǎo)致雙工不匹配。建議把兩端設(shè)置留在自動(dòng)協(xié)商以減少人為錯(cuò)誤。
3.參考文獻(xiàn)
IEEE802.3ab
IEEE 802.3u
IEEE 802.3z
OSI