以太網自動協商原理

自協商基本原理?

  自動協商模式是端口根據另一端設備的連接速度和雙工模式,自動把它的速度調節到最高的公共水平,即線路兩端能具有的最快速度和雙工模式。

  自協商功能允許一個網絡設備能夠將自己所支持的工作模式信息傳達給網絡上的對端,并接受對方可能傳遞過來的相應信息,從而解決雙工和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接口模塊識別。

以太網接口自動協商原理 - cqy-chenqiyao - cqy-chenqiyao的博客

? 自協商基本頁信息

在鏈路初始化的時候,自協商協議向對端發送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,就會重新協商為“一端全雙工&一端半雙工”的不穩定連接。因此,這種情況一定要避免!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253071.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253071.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253071.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python學習-文件的調用-讀取

1.文件的打開 open(filename[,mode[,buffering]]) #這個一定要記得關文件。close.() filename,要以路徑的形式展示,比如在"c:\"中,則要這樣寫: rc:\filename 如果不用路徑展示,那就用filename.其會在執行文件所在的文件夾進行搜索…

javascript . 05 json的組成、for...in 遍歷對象、簡單數據類型與復雜數據類型的傳值與傳址、內置對象...

對象字面量 JSON var obj { aaa :999};   var json{"aaa":999,“bbb”:888}; ”kay“:value 對象字面2??定義方法和json很像,只有一點不同,json的key 必須加“”   ; 對象,數…

nohup命令

nohup命令 起因 ssh到機器上,然后執行某個程序,再登錄發現程序早就不運行了。 原因 ssh過去之后,執行的大部分命令(守護進程不會斷開),都是ssh進程的子進程,ssh斷開,命令自然會中斷 …

mac與phy如何實現網絡自適應

這兩天修改網卡驅動以實現10/100/1000M自適應,因此研究了下phy芯片和emac驅動如何兼容10/100/1000M網絡環境,記錄在此。 網絡中設備端數據鏈路層由mac芯片和phy芯片組成,phy芯片根據外部網絡環境完成自動協商以及配置,驅動中根據p…

asp.net(mvc) 框架

1、NFine mvcef 2、Grove orm架構 3、NHibernate orm 4、NBear 5、petshop 6、Membership 7、Brnshop 網上商城 8、cms快速開發:http://www.open-open.com/news/view/a90f1 9、c#開源框架:http://www.cnblogs.com/gaoyuchuanIT/articles/5612268.html 來…

LVM邏輯卷詳解及創建

我們先來看一下這張圖片:PV: 底層的一個硬盤設備,可以是一個分區,也可能是一個RAID。我們可以把這個塊設備創建成一個物理卷格式,即一個PV。VG: 將一個或多個PV提供的存儲空間在一個更低的單位上劃分成一個個獨立的存儲單元&#…

python文件操作總結

python中對文件、文件夾(文件操作函數)的操作需要涉及到os模塊和shutil模塊。 得到當前工作目錄,即當前Python腳本工作的目錄路徑: os.getcwd() 返回指定目錄下的所有文件和目錄名:os.listdir() 函數用來刪除一個文件:os.remove() 刪除多個目…

Fread 和fwrite的參數不同,返回值不同

函數fwrite 功能C語言函數,向文件寫入一個數據塊 。size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);注意:這個函數以二進制形式對文件進行操作,不局限于文本文件返回值:返回實際寫入的數據塊數目&…

課程簡介及算法分析

先學課程 -概率論 運行時間(running time) - 輸入(eg 已經排序) - 輸入規模(6和6*10^9) 各種各樣的分析: - 最壞情況分析(worst case)usually T(n) max time when inp…

利用shell腳本添加環境變量

在shell腳本設置了環境變量,如export LIBRARY_PATH./lib/,執行了此腳本后, 在執行生成的可執行文件,提示錯誤 error while loading shared libraries: libww.so: cannot open shared object file: No such file or directory 但是如果把expor…

2017 ACM-ICPC西安網賽B-Coin

B-Coin Bob has a not even coin, every time he tosses the coin, the probability that the coins front face up is \frac{q}{p}(\frac{q}{p} \le \frac{1}{2})?p??q??(?p??q??≤?2??1??). The question is, when Bob tosses the coin kktimes, whats the pr…

Java第四次作業

Dog dognew Dog("哈士奇","黑白",2);System.out.println(dog);}}class Dog {private String name;private String color;private int age;public String getName(){return name;}public String getColor(){return color;}public int getAge(){return age;}…

ITU-RBT.656視頻標準接口

601是SDTV的數據結構 656是SDTV的interface 709是HDTV的數據結構 1120是HDTV的interface ITU-R BT.601是演播室數字電視編碼參數標準,而ITU-R BT.656 則是ITU-R BT.601附件A中的數字接口標準, 用于主要數字視頻設備(包括芯片)之間采用27Mhzs并口或243Mb…

C語言博客作業03--函數

1.本章學習總結 1.1思維導圖 1.2本章學習體會及代碼量學習體會 1.2.1學習體會 本周學習了函數,其實,函數于之前學習的三大控制結構是密不可分的,而函數又有其特殊的地方,例如:函數的聲明、函數的調用等等。我們之前編寫…

Shell記錄-Shell命令(其他)

top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似于Windows的任務管理器。 .命令格式 top [參數]Shell2.命令功能 顯示當前系統正在執行的進程的相關信息,包括進程ID、內存占用率、…

Insta360:從軟到硬,一年做出360°全景相機,中間填了多少坑?

摘要劉靖康在大學就開始創業。在大二的時候他曾經去騰訊實習,然后又去了“超級課程表”這個團隊實習半年,2013 年 9 月回到南京創業,一開始的產品叫“名校直播”,是一款圍繞院校名師講座所做的視頻直播產品。 不久前,一…

No.10 awk、變量、運算符、if多分支

awk、變量、運算符、if多分支 awk語法 ~ awk -F: {print $3,$4} /etc/passwd //-F指定:分隔符 默認以空格作為分隔符 ~ awk -F: {print &0,NF} //$0打印全部,NF有幾段內容 ~ awk -F: {print $NF} /etc/passwd //$NF打印最后一段內容 ~ awk -F: {print NR} /etc/passwd…

什么是自然語言處理技術

自然語言處理(NLP)是計算機科學,人工智能,語言學關注計算機和人類(自然)語言之間的相互作用的領域。自然語言處理是計算機科學領域與人工智能領域中的一個重要方向。它研究能實現人與計算機之間用自然語言進…

SDOI2005 區間

題目描述 現給定n個閉區間[ai, bi]&#xff0c;1<i<n。這些區間的并可以表示為一些不相交的閉區間的并。你的任務就是在這些表示方式中找出包含最少區間的方案。你的輸出應該按照區間的升序排列。這里如果說兩個區間[a, b]和[c, d]是按照升序排列的&#xff0c;那么我們有…

排序: 選擇排序

1. 基本原理 將待排序的元素分為已排序(初始為空)和未排序兩組&#xff0c;依次將未排序的元素中值最小的元素放入已排序的組中。 直接選擇排序簡單直觀&#xff0c;但性能略差&#xff1b;堆排序是一種較高效的選擇排序方法&#xff0c;但實現起來略微復雜。 2. 直接選擇排序 …