專利名稱:鏈路狀態(tài)自協(xié)商方法
技術領域:
本發(fā)明涉及鏈路自協(xié)商方法(機制),尤其涉及一種可擴展的、通過在信元中加入開銷的方式傳遞鏈路狀態(tài)的鏈路自協(xié)商方法。
背景技術:
隨著網絡對帶寬的要求日益增加,交換網的接口往往需要高達10G甚至是40G的帶寬,但是目前沒有這么快的串行總線,業(yè)界的做法都是將幾個2.5G或者3.125G的Serdes(SERializer/DESerializer,并串/串并轉換器)捆綁來提供一個10G,或者是40G的端口,為了提供一個業(yè)務帶寬為10G的端口,需要將8個2.5G的Serdes捆綁來支持,40G的帶寬就需要32個2.5G的Serdes來支持。對于一個10G的接口來說,目前一般的做法都是將8個2.5G的Serdes捆綁來提供。
如圖1所示,圖1的左側表示流量管理芯片102(TrafficManager,TM,其中TMI 106表示TM 102的上行部分,TME 112表示TM 102的下行部分),右側表示交換網芯片104(Switch Fabric,SF,其中SFI 108表示SF 104的上行部分,SFE 110表示SF 104的下行部分)。TMI 106中有8個2.5G的Serdes(圖1中以SD_TX0~SD_TX7表示)互相捆綁來支持一個10G端口,SFI 108中,8個2.5G的Serdes互相捆綁來支持一個10G接口,8個互相捆綁的Serdes用SD_RX0~SD_RX7表示?;槔壍膸讉€Serdes由于鏈路延時不可能絕對相等,它們之間可能會存在一定的延時差異,為了保證接收方向的Serdes按照正確的順序接收數(shù)據,所以在信元頭中增加了序列號(LSN)信息。
圖2示出了在信元頭中增加的序列號信息的示意圖。序列號信息占用8比特,比特0-5,即LSN[5:0]202用于存儲序列號信息,比特6和比特7,即保留比特204,留待以后使用。
圖3示出了根據現(xiàn)有技術的鏈路捆綁的信元序列號的示意圖。如圖所示,LSN標識的方法為在第M個信元周期中,SD_TX0302發(fā)送的是第N個信元,SD_TX1304發(fā)送的是第N+1個信元,SD_TX2發(fā)送的是第N+2個信元,依次類推,SD_TX7306發(fā)送的是第N+7個信元。SD_TX0~SD_TX7發(fā)送信元攜帶的序列號都為M。在第M+1個信元周期中,SD_TX0302發(fā)送的是第N+8個信元,SD_TX1304發(fā)送的是第N+9個信元,SD_TX2發(fā)送的是第N+10個信元,依次類推,SD_TX7306發(fā)送的是第N+15個信元。SD_TX0~SD_TX7發(fā)送信元攜帶的序列號都為M+1。接收端接收到攜帶有序列號的信元以后,將序列號相等的信元按照從SD_RX0~SD_RX7的順序將信元排序后順序寫入緩存中。
雖然這個方案解決了提供高帶寬接口問題,但是這種簡單的捆綁為系統(tǒng)的穩(wěn)定性和可靠性帶來了很大的隱患。比如其中有一條高速鏈路由于某種原因斷掉,這種簡單的捆綁將導致整個10G端口不能正常接收信元。比如圖1中,從TMI 106到SFI 108的第一條高速鏈路ITX0114斷掉,此時SFI 108可以通過SD_RX0檢測到ITX0114鏈路出錯,接收到的數(shù)據錯誤,SFI 108為了不帶來亂序問題,必須將其他7個好的Serdes接收的數(shù)據全部丟棄(因為其實此時TMI 106還向ITX0114發(fā)送數(shù)據信元,只是由于鏈路錯誤導致數(shù)據信元已經丟失)。這樣就導致整個10G端口都不能接收數(shù)據,直到SFI 108的SD_RX0重新檢測到ITX0114鏈路恢復正常以后才能接收數(shù)據。
為了解決上面提出的問題,目前的解決方案是通過軟件干預的方式來解決。具體操作如下當接收端Serdes檢測到鏈路連續(xù)錯誤時,上報鏈路錯誤中斷,單板上的CPU通過讀取中斷,判斷是哪條高速鏈路錯誤,然后通過CPU通知發(fā)送端,關掉發(fā)送端的對應出錯鏈路的Serdes調度器不再向此Serdes,調度數(shù)據信元,此Serdes只發(fā)空信元。當CPU確認已經成功關閉了調度器,調度器不再向出錯的鏈路發(fā)送信元以后,再通知接收端Serdes,可以接收剩下幾個鏈路正確的信元,此時接收的信元就不會帶來亂序的問題了。
當出現(xiàn)錯誤的鏈路又恢復正常時,CPU需要查詢接收端Serdes狀態(tài),發(fā)現(xiàn)Serdes狀態(tài)恢復正常,此時需要開始接收來自這條恢復正常的端口數(shù)據,同時CPU需要通知發(fā)送端調度器,開始向此條恢復的鏈路發(fā)送數(shù)據信元。這樣就可以比較好的解決上述的問題,不會導致互相捆綁的幾條鏈路中,其中有一條由于某種原因鏈路錯誤導致整個端口都不可用的問題。
以圖1為例,TMI 106到SFI 108的鏈路ITX0出現(xiàn)連續(xù)錯誤,此時SFI 108上報鏈路錯誤中斷給單板上的CPU,單板上的CPU檢測到SFI 108上報中斷以后,查詢中斷,并判斷是哪條鏈路出錯,同時通知TMI 106關閉SD_TX0,控制調度器不再向SD_TX0調度數(shù)據信元,SD_TX0只發(fā)送空閑信元。當CPU確認已經成功關閉TMI106的調度器不向SD_TX0調度數(shù)據信元以后,再配置SFI 108接收來自其他七個正常的鏈路發(fā)送來的數(shù)據。如果ITX0114又恢復正常,SFI 108的SD_TX0檢測到鏈路ITX0114恢復正常,此時通知信元重組和寫緩存控制模塊接收來自SD_RX0的信元,同時產生中斷,通知CPU此條鏈路恢復正常,CPU發(fā)現(xiàn)鏈路恢復正常以后,必須及時通知TMI 106,TMI 106打開SD_TX0,重新向SD_TX0調度數(shù)據信元。
圖4a示出根據現(xiàn)有技術的鏈路錯誤處理流程示意圖。鏈路錯誤處理的流程可以分為以下幾個步驟步驟402,SFI的接收端Serdes檢測到高速鏈路連續(xù)上報鏈路錯誤,SFI產生中斷,并上報中斷給CPU。
步驟404,CPU查詢中斷,發(fā)現(xiàn)是某條高速鏈路出現(xiàn)錯誤。
步驟406,CPU發(fā)送命令關閉TMI的調度器,禁止調度器向出現(xiàn)錯誤的鏈路調度數(shù)據信元,同時CPU確認關閉成功。
步驟408,CPU確認關閉成功以后,通知SFI可以接收來自其他幾個正確鏈路的數(shù)據信元。
圖4b示出根據現(xiàn)有技術的鏈路恢復處理流程示意圖。鏈路恢復的過程可以分為以下步驟步驟410,SFI的接收Serdes檢測到出現(xiàn)錯誤的鏈路恢復正常,產生中斷,并上報CPU。
步驟412,CPU查詢SFI,發(fā)現(xiàn)鏈路恢復正常,并確認是哪條鏈路恢復正常。
步驟414,CPU通知TMI打開調度器,使調度器可以向恢復好的鏈路調度數(shù)據信元。
但是,通過CPU控制的方式需要軟件干預,增加軟件工作量。通過軟件干預的方式速度太慢,效率不高。在某些應用中有嚴重的缺陷,不可實現(xiàn)。比如在多框方案中,TM和SF之間采用光纖互連。TM和SF不在同一個機框中,導致CPU無法讓TM和SF之間協(xié)調工作。
發(fā)明內容
本發(fā)明的目的在于提供能夠克服現(xiàn)有技術中存在的至少一個缺陷的鏈路狀態(tài)自協(xié)商的方法(機制),用于在發(fā)送端和接收端之間進行數(shù)據傳輸鏈路狀態(tài)的自協(xié)商,其特征在于,包括以下步驟所述接收端通過查詢信元頭中的序列號(Link sequence number,LSN)來按照正確的順序接收數(shù)據;通過信元頭的鏈路關比特和鏈路錯誤比特來傳遞鏈路狀態(tài);在接收端和發(fā)送端分別增加鏈路狀態(tài)表;在鏈路出現(xiàn)故障和鏈路恢復的過程中,通過接收端和發(fā)送端的收發(fā)狀態(tài)來控制數(shù)據的接收和發(fā)送,完成鏈路的自協(xié)商過程。
在鏈路狀態(tài)自協(xié)商的過程中還通過查詢和設置并串/串并轉換器開關狀態(tài)表來完成鏈路的自協(xié)商過程。
其中,發(fā)送端和接收端可以為流量控制器的上行部分、流量控制器的下行部分、交換網的上行部分以及交換網的下行部分。
在信元頭增加的鏈路關比特(Link_off)表示LSN對應的對端發(fā)送Serdes(并串/串并轉換器)是否被關掉,是否有數(shù)據信元從對端Serdes發(fā)送。
在信元頭增加的鏈路錯誤比特(Link_err)表示是否檢測到鏈路錯誤。
增加的鏈路狀態(tài)表具有n比特,分別代表n個接收Serdes檢測到的n條鏈路狀態(tài)。
增加的Serdes開關狀態(tài)表具有n比特,分別代表n個Serdes的開關狀態(tài)。
其中,Link_off為1時,表示LSN對應的Serdes被關掉,不向此通道發(fā)送數(shù)據信元。Link_off為0時,表示LSN對應的Serdes打開,對端已經開始發(fā)送數(shù)據信元。
其中,Link_err為1時,表示對端與LSN對應的接收Serdes檢測到鏈路錯誤。Link_err為0時,表示對端與LSN對應的接收Serdes沒有檢測到鏈路錯誤。
如果某個Serdes檢測到鏈路狀態(tài)在連續(xù)N個信元周期都處于未準備好狀態(tài),則鏈路狀態(tài)表對應的比特被置為高。如果某個Serdes檢測到鏈路狀態(tài)在連續(xù)M個信元周期都處于準備好狀態(tài),則鏈路狀態(tài)表對應的比特被置為低。
Serdes開關狀態(tài)表中的狀態(tài)信息是從信元的信元頭(LinkHead)中提取的Link_off狀態(tài)信息。Serdes開關狀態(tài)表中的對應比特位為1,表示對端對應的Serdes已經關閉,不從Serdes發(fā)送數(shù)據信元,只發(fā)空信元。Serdes開關狀態(tài)表中的對應比特位為0,表示對端對應的Serdes沒有關閉,對端對應的Serdes可以發(fā)送數(shù)據信元。
將鏈路狀態(tài)表和Serdes開關狀態(tài)表加入流量控制器的上行部分(TMI)、流量控制器的下行部分(TME)、交換網的上行部分(SFI)和交換網的下行部分(SFE)。
其中,TMI到SFI的鏈路出現(xiàn)故障的處理包括以下步驟步驟702,SFI檢測到鏈路故障,并更新對應的鏈路狀態(tài)表。
步驟704,SFE將鏈路狀態(tài)表的信息周期性地通過Link Head的Link_err傳遞到TME。
步驟706,TME收集SFE傳遞過來的Link Head中的Link_err。
步驟708,TMI根據TME收集到的鏈路狀態(tài)信息控制TMI中的調度器停止向出現(xiàn)故障的鏈路調度數(shù)據信元。
步驟710,確認關閉調度器后,TMI通過Link Head的Link_off將調度狀態(tài)傳遞到SFI。
步驟712,SFI收集Link_off的狀態(tài)信息,更新鏈路開關狀態(tài)表的對應比特,同時根據Link_off狀態(tài)和Link_err狀態(tài)接收數(shù)據。
其中,TMI到SFI的鏈路恢復的過程包括以下步驟步驟714,SFI的Serdes檢測到鏈路狀態(tài)恢復正常,更新鏈路狀態(tài)表的對應比特,同時開始接收恢復正常的鏈路數(shù)據。
步驟716,SFE周期性地將鏈路狀態(tài)表的信息通過Link_err傳遞到TME。
步驟718,TME收集Link_err信息。
步驟720,TME根據收集到的Link_err信息控制TMI的調度器,打開被關閉的通道,開始向通道調度數(shù)據信元。
步驟722,打開恢復正常的鏈路后,TMI將鏈路開關狀態(tài)通過Link Head的Link_off傳遞到SFI。
步驟724,SFI收集Link_off信息,更新Serdes開關狀態(tài)表的對應比特。
SFE到TME的鏈路出現(xiàn)故障的處理包括以下步驟步驟802,TME檢測到鏈路故障,并更新對應的鏈路狀態(tài)表。
步驟804,將鏈路狀態(tài)表的信息周期性地通過TMI的所有鏈路發(fā)送的信元的信元頭的link_err傳遞到SFI。
步驟806,SFI收集TMI傳遞過來的信元頭中的link_err。
步驟808,SFI根據收集到的鏈路狀態(tài)信息控制SFE中的調度器停止向出現(xiàn)故障的鏈路調度數(shù)據信元。
步驟810,確認調度器不向出現(xiàn)錯誤的鏈路調度數(shù)據信元后,SFE通過信元的信元頭的Link_off將調度狀態(tài)傳遞到TME。
步驟812,TME收集Link_off的狀態(tài)信息,更新鏈路開關狀態(tài)表的對應比特,同時根據Link_off的狀態(tài)和link_err的狀態(tài)接收數(shù)據。
SFE到TME的鏈路恢復的過程包括以下步驟步驟814,TME的并串/串并轉換器檢測到鏈路狀態(tài)恢復正常,更新鏈路狀態(tài)表的對應比特,同時開始接收恢復正常的鏈路的數(shù)據。
步驟816,TMI周期性地將鏈路狀態(tài)表的信息通過link_err傳遞到SFI。
步驟818,SFI收集link_err信息。
步驟820,SFE根據SFI收集的鏈路錯誤狀態(tài)信息控制SFE的調度器,打開被關閉的通道,開始向通道調度數(shù)據信元。
步驟822,打開恢復正常的鏈路后,SFE將鏈路開關狀態(tài)通過信元的信元頭的Link_off傳遞到TME。
步驟824,TME收集Link_off信息,更新并串/串并轉換器開關狀態(tài)表的對應比特。
SFI到TMI的鏈路錯誤處理過程和鏈路恢復過程與SFE到TME的鏈路錯誤處理過程和鏈路恢復過程相同。
本發(fā)明電路實現(xiàn)簡單,耗費資源少。不需要軟件干預,降低了軟件工作量,降低軟件開發(fā)成本。由于不需要軟件干預,提高了協(xié)商的效率,提高了系統(tǒng)的可靠性,很好地解決了軟件協(xié)商在多框方案下的局限性。
通過參考附圖,本發(fā)明的特征和優(yōu)點將變的更加明顯,其中圖1是根據現(xiàn)有技術的Serdes捆綁示意圖;圖2示出了根據現(xiàn)有技術的在信元頭中增加的序列號信息(LSN)的示意圖;圖3示出了根據現(xiàn)有技術的鏈路捆綁的信元序號的示意圖;圖4a示出根據現(xiàn)有技術的鏈路故障處理流程示意圖;圖4b示出根據現(xiàn)有技術的鏈路恢復處理流程示意圖;圖5示出根據本發(fā)明的信元頭中增加的Link_off和Link_err示意圖;圖6示出根據本發(fā)明的帶自協(xié)商功能的鏈路捆綁示意圖;
圖7a示出根據本發(fā)明的TMI到SFI的高速鏈路故障的處理流程圖;圖7b示出根據本發(fā)明的TMI到SFI的鏈路恢復的處理流程圖;圖8a示出根據本發(fā)明的SFE到TME的高速鏈路故障的處理流程圖;以及圖8b示出根據本發(fā)明的SFE到TME的鏈路恢復的處理流程圖。
具體實施例方式
現(xiàn)在參照附圖對根據本發(fā)明的具體實施例進行說明,應當理解,此處所描述的具體實施例僅僅用于解釋本發(fā)明,并不用于限定本發(fā)明。
圖5示出根據本發(fā)明的信元頭中增加的Link_off 506和Link_err 504的示意圖。作為例子,在信元頭中增加8比特開銷,比特0-5為序列號502信息,是互為捆綁的Serdes編號。對于10G端口(共8個通道),只有低3位有效,但是序列號會從0至63遞增。比如,當LSN[2:0]為3’b000,Link_off 506為1,Link_err 504為0,表示對端發(fā)送的Serdes0已經關閉,從對端的SD_TX0已經不再發(fā)送數(shù)據信元過來。Link_err 504為0表示對端SD_RX0沒有檢測到鏈路錯誤?;ハ嗬壍?個Serdes由于各個鏈路的傳輸延時存在差異,可能使發(fā)送端發(fā)送的LSN 502等于N的信元沒有同時到達接收端,接收端必須知道到達信元的正確順序,否則將會導致信元亂序。
比特7為Link_off 506,是TM芯片和SF芯片的交換信息的通道,表示LSN 502對應的對端發(fā)送Serdes是否被關掉(即,表示發(fā)送端Serdes的開關狀態(tài)),是否有數(shù)據信元從對端Serdes發(fā)送。比特8為Link_err 504,表示是否檢測到鏈路錯誤(即,接收端Serdes檢測到的鏈路狀態(tài))。
其中,Link_off 506為1時,表示LSN 502對應的Serdes被關掉,不向此通道發(fā)送數(shù)據信元。Link_off 506為0時,表示LSN對應的Serdes打開,對端已經開始發(fā)送數(shù)據信元。
其中,Link_err 504為1時,表示對端與LSN 502對應的接收Serdes檢測到鏈路錯誤。Link_err 504為0時,表示對端與LSN 502對應的接收Serdes沒有檢測到鏈路錯誤。
另外,Link Head中的LSN 502除了起到信元對齊的作用外,同時還起到表示本次攜帶的Link_err 504和Link_off 506是哪個Serdes的。
圖6示出根據本發(fā)明的帶自協(xié)商功能的鏈路捆綁示意圖。其中,增加了鏈路狀態(tài)表612和Serdes開關狀態(tài)表614。鏈路狀態(tài)表612具有n比特,分別代表n個接收Serdes檢測到的n條鏈路狀態(tài)。Serdes開關狀態(tài)表614具有n比特,分別代表n個Serdes的開關狀態(tài)。
如果某個Serdes檢測到鏈路狀態(tài)在連續(xù)N個(N的大小由CPU配置寄存器來決定)信元周期都處于未準備好狀態(tài),則鏈路狀態(tài)表612對應的比特被置為高。如果某個Serdes檢測到鏈路狀態(tài)在連續(xù)M個(M值由CPU配置寄存器決定)信元周期都處于準備好狀態(tài),則鏈路狀態(tài)表612對應的比特被置為低。
Serdes開關狀態(tài)表614中的狀態(tài)信息是從Link Head中提取的Link_off狀態(tài)信息。Serdes開關狀態(tài)表614中的對應比特位為1,表示對端對應的Serdes已經關閉,不從Serdes發(fā)送數(shù)據信元,只發(fā)空信元。Serdes開關狀態(tài)表614中的對應比特位為0,表示對端對應的Serdes沒有關閉,對端對應的Serdes可以發(fā)送數(shù)據信元。
鏈路狀態(tài)表612和Serdes開關狀態(tài)表614加入流量控制器的上行部分604(TMI)、流量控制器的下行部分606(TME)、交換網的上行部分610(SFI)和交換網的下行部分608(SFE)。
如上圖6所示,TMI 604到SFI 606的第一條高速鏈路602(ITX0)出現(xiàn)故障,SFI接收端Serdes(SD_RX0)檢測到鏈路故障,SFI 606將鏈路狀態(tài)表612(lk_st_tbl)對應的比特0置為1。同時控制信元重組和寫入控制模塊將來自8個通道的數(shù)據全部丟棄。SFE 608的8個發(fā)送Serdes按照順序將鏈路狀態(tài)表的信息通過Link Head的Link_err發(fā)送出去。攜帶的標準是當LSN[2:0]為0時將鏈路狀態(tài)表的比特0填充到Link Head的Link_err,LSN[2:0]等于1時,將鏈路狀態(tài)表612的比特1填充到Link Head的Link_err。依次類推,當LSN[2:0]等于7時,將鏈路狀態(tài)表612的比特7發(fā)送出去。TME610的接收端口從信元中提取Link_err,并將8個互為捆綁的Serdes通道中提取的Link_err狀態(tài)做邏輯“與”,邏輯“與”的結果用來控制TMI 604調度器,如果邏輯與的結果為1,則表示這條高速鏈路出現(xiàn)故障,不能向此條鏈路再調度數(shù)據信元。如果邏輯與的結果為0,則此條鏈路工作正常,可以從此條鏈路發(fā)送數(shù)據信元。當TMI604確認已經不再向出現(xiàn)故障的ITX0602發(fā)送數(shù)據信元(只發(fā)送空閑信元)后,TMI 604將對應的Serdes開關狀態(tài)表的比特0置為1,Serdes開關狀態(tài)表614被TMI 604的發(fā)送Serdes周期性的通過LinkHead的link_off傳遞到SFI 606,SFI 606沒有出現(xiàn)故障的Serdes通道提取其中的信元頭中的link_off,并將從沒有故障的通道提取出來的link_off狀態(tài)做邏輯“與”操作,只有當與操作的結果為1時,才表示TMI 604已經成功的將出現(xiàn)鏈路故障的Serdes關閉,TMI 604已經成功禁止調度器向鏈路錯誤的鏈路發(fā)送數(shù)據信元。此時SFI 606才能開始接收其他7個通道(ITX1~ITX7)的數(shù)據信元。才不會導致信元亂序和丟失。
TMI 604到SFI 606的鏈路恢復處理過程為如果由于某種原因ITX0602鏈路恢復正常,此時SFI 606的SD_RX0檢測到鏈路恢復正常,則將對應的鏈路狀態(tài)表612的比特0置為0,同時開始接收來自ITX0602的數(shù)據(此時TMI 604的調度器并沒有調度數(shù)據信元到此鏈路,直到SFE 608將鏈路狀態(tài)傳遞到TME 610,然后TMI 604使調度器向此鏈路發(fā)送數(shù)據信元,所以此時此鏈路接收到的全是空閑信元),SFE 608的8個Serdes周期性的將此狀態(tài)傳遞到TME 610,TME 610收集到此狀態(tài)以后,發(fā)現(xiàn)ITX0602鏈路恢復正常,則通知調度器可以向ITX0602調度數(shù)據信元,打開調度器以后,則將Serdes開關狀態(tài)表614的比特0更新為0。Serdes開關狀態(tài)表614被TMI 604的發(fā)送通道周期性地傳遞到SFI606。更新SFI 606的Serdes開關狀態(tài)表。
圖7a示出根據本發(fā)明的TMI到SFI的高速鏈路故障的處理流程圖。TMI到SFI的鏈路出現(xiàn)故障的處理包括以下步驟步驟702,SFI檢測到鏈路故障,并更新對應的鏈路狀態(tài)表。
步驟704,SFE將鏈路狀態(tài)表的信息周期性地通過link Head的Link_err傳遞到TME。
步驟706,TME收集SFE傳遞過來的link head中的Link_err。
步驟708,TMI根據TME收集到的鏈路狀態(tài)信息控制TMI中的調度器停止向出現(xiàn)故障的鏈路調度數(shù)據信元。
步驟710,確認關閉調度器后,TMI通過Link Head的Link_off將調度狀態(tài)傳遞到SFI。
步驟712,SFI收集Link_off的狀態(tài)信息,更新鏈路開關狀態(tài)表的對應比特,同時根據Link_off狀態(tài)和Link_err狀態(tài)接收數(shù)據。
圖7b示出根據本發(fā)明的TMI到SFI的鏈路恢復的處理流程圖。TMI到SFI的鏈路恢復的過程包括以下步驟步驟714,SFI的Serdes檢測到鏈路狀態(tài)恢復正常,更新鏈路狀態(tài)表的對應比特,同時開始接收恢復正常的鏈路數(shù)據。
步驟716,SFE周期性地將鏈路狀態(tài)表的信息通過Link_err傳遞到TME。
步驟718,TME收集Link_err信息。
步驟720,TME根據收集到的Link_err信息控制TMI的調度器,打開被關閉的通道,開始向通道調度數(shù)據信元。
步驟722,打開恢復正常的鏈路后,TMI將鏈路開關狀態(tài)通過Link Head的Link_off傳遞到SFI。
步驟724,SFI收集Link_off信息,更新Serdes開關狀態(tài)表的對應比特。
SFE到TME的鏈路錯誤處理過程和鏈路恢復過程與TMI到SFI的鏈路錯誤處理過程和鏈路恢復過程相同。
圖8a示出根據本發(fā)明的SFE到TME的高速鏈路故障的處理流程圖。SFE到TME的鏈路出現(xiàn)故障的處理包括以下步驟
步驟802,TME檢測到鏈路故障,并更新對應的鏈路狀態(tài)表。
步驟804,將鏈路狀態(tài)表的信息周期性地通過TMI的所有鏈路發(fā)送的信元的信元頭的Link_err傳遞到SFI。
步驟806,SFI收集TMI傳遞過來的信元頭中的link_err。
步驟808,SFI根據收集到的鏈路狀態(tài)信息控制SFE中的調度器停止向出現(xiàn)故障的鏈路調度數(shù)據信元。
步驟810,確認調度器不向出現(xiàn)錯誤的鏈路調度數(shù)據信元后,SFE通過信元的信元頭的Link_off將調度狀態(tài)傳遞到TME。
步驟812,TME收集Link_off的狀態(tài)信息,更新鏈路開關狀態(tài)表的對應比特,同時根據Link_off的狀態(tài)和link_err的狀態(tài)接收數(shù)據。
圖8b示出根據本發(fā)明的SFE到TME的鏈路恢復的處理流程圖。SFE到TME的鏈路恢復的過程包括以下步驟步驟814,TME的并串/串并轉換器檢測到鏈路狀態(tài)恢復正常,更新鏈路狀態(tài)表的對應比特,同時開始接收恢復正常的鏈路的數(shù)據。
步驟816,TMI周期性地將鏈路狀態(tài)表的信息通過link_err傳遞到SFI。
步驟818,SFI收集link_err信息。
步驟820,SFE根據SFI收集的鏈路錯誤狀態(tài)信息控制SFE的調度器,打開被關閉的通道,開始向通道調度數(shù)據信元。
步驟822,打開恢復正常的鏈路后,SFE將鏈路開關狀態(tài)通過信元的信元頭的Link_off傳遞到TME。
步驟824,TME收集Link_off信息,更新并串/串并轉換器開關狀態(tài)表的對應比特。
另外本方案可以很方便的應用到更高帶寬的應用中,比如用32個2.5GSerdes捆綁成一個能夠提供40G業(yè)務接口的交換網端口。唯一不同的是鏈路狀態(tài)表和Serdes開關狀態(tài)表各需要32比特,另外Link Head中的LSN有效位數(shù)為LSN[4:0],而不是LSN[2:0]。其中LSN[4:0]=0,表示傳遞是捆綁在一起的32各Serdes的0號Serdes,為1表示1號Serdes,依此類推,LSN[4:0]=31,表示傳遞是Serdes31的信息。其他處理方式和10G端口相同。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種鏈路狀態(tài)自協(xié)商方法,用于在發(fā)送端和接收端之間進行數(shù)據傳輸鏈路狀態(tài)的自協(xié)商,其特征在于,包括以下步驟所述接收端通過查詢信元頭中的序列號來按照正確的順序接收數(shù)據;通過所述信元頭的鏈路關比特和鏈路錯誤比特來傳遞鏈路狀態(tài);在所述接收端和所述發(fā)送端分別增加鏈路狀態(tài)表來保存鏈路的狀態(tài);以及在鏈路出現(xiàn)故障和鏈路恢復的過程中,通過所述接收端和所述發(fā)送端的收發(fā)狀態(tài)來控制數(shù)據的接收和發(fā)送,完成鏈路的自協(xié)商過程。
2.根據權利要求1所述的方法,其特征在于,還包括在所述鏈路狀態(tài)自協(xié)商的過程中通過查詢和設置并串/串并轉換器開關狀態(tài)表來完成鏈路自協(xié)商。
3.根據權利要求1所述的方法,其特征在于,所述發(fā)送端和接收端為流量控制器的上行部分、流量控制器的下行部分、交換網的上行部分以及交換網的下行部分。
4.根據權利要求1所述的方法,其特征在于,在所述方法中信元頭中的所述鏈路關比特表示信元頭中的序列號對應的對端發(fā)送并串/串并轉換器是否被關掉,是否有數(shù)據信元從所述對端并串/串并轉換器發(fā)送;信元頭中的所述鏈路錯誤比特表示是否檢測到鏈路錯誤;所述鏈路狀態(tài)表具有n比特,分別代表n個接收并串/串并轉換器檢測到的n條鏈路狀態(tài);以及所述并串/串并轉換器鏈路開關狀態(tài)表具有n比特,分別代表對端n個并串/串并轉換器的開關狀態(tài)。
5.根據權利要求1所述的方法,其特征在于,所述鏈路關比特為1時,表示信元頭中的序列號對應的并串/串并轉換器被關掉,不向此通道發(fā)送數(shù)據信元;所述鏈路關比特為0時,表示信元頭中的序列號對應的并串/串并轉換器打開,對端已經開始發(fā)送數(shù)據信元。
6.根據權利要求1所述的方法,其特征在于,所述鏈路錯誤比特為1時,表示對端與信元頭中的序列號對應的接收并串/串并轉換器檢測到鏈路錯誤;所述鏈路錯誤比特為0時,表示對端與信元頭中的序列號對應的接收并串/串并轉換器沒有檢測到鏈路錯誤。
7.根據權利要求1所述的方法,其特征在于,如果某個并串/串并轉換器檢測到鏈路狀態(tài)在連續(xù)N個信元周期都處于未準備好狀態(tài),則鏈路狀態(tài)表對應的比特被置為高;如果某個并串/串并轉換器檢測到鏈路狀態(tài)在連續(xù)M個信元周期都處于準備好狀態(tài),則鏈路狀態(tài)表對應的比特被置為低。
8.根據權利要求1所述的方法,其特征在于,所述并串/串并轉換器開關狀態(tài)表中的狀態(tài)信息是從所述信元的信元頭中提取的鏈路關比特狀態(tài)信息。
9.根據權利要求8所述的方法,其特征在于,所述并串/串并轉換器開關狀態(tài)表中的對應比特為1,表示對端對應的并串/串并轉換器已經關閉,不從所述并串/串并轉換器發(fā)送數(shù)據信元,只發(fā)空信元;所述并串/串并轉換器開關狀態(tài)表中的對應比特為0,表示對端對應的并串/串并轉換器沒有關閉,對端對應的并串/串并轉換器可以發(fā)送數(shù)據信元。
10.根據權利要求1至9中任一所述的方法,其特征在于,所述流量控制器的上行部分到交換網的上行部分的鏈路出現(xiàn)故障的處理包括以下步驟步驟702,所述交換網的上行部分檢測到鏈路故障,并更新所述對應的鏈路狀態(tài)表;步驟704,所述交換網的下行部分將鏈路狀態(tài)表的信息周期性地通過交換網下行部分的所有鏈路的信元的信元頭中的鏈路錯誤比特傳遞到流量控制器的下行部分;步驟706,所述流量控制器的下行部分收集所述交換網的下行部分傳遞過來的信元頭中的鏈路錯誤比特;步驟708,所述流量控制器的上行部分根據所述流量控制器的下行部分收集到的所述鏈路狀態(tài)信息控制所述流量控制器的上行部分的調度器停止向出現(xiàn)故障的鏈路調度數(shù)據信元;步驟710,確認所述調度器不向出現(xiàn)錯誤的鏈路調度數(shù)據信元后,所述流量控制器的上行部分通過所述信元的信元頭的鏈路關比特將調度狀態(tài)傳遞到所述交換網的上行部分;以及步驟712,所述交換網的上行部分收集鏈路關比特的狀態(tài)信息,更新鏈路開關狀態(tài)表的對應比特,同時根據所述鏈路關比特的狀態(tài)和所述鏈路錯誤比特的狀態(tài)接收數(shù)據。
11.根據權利要求1至9中任一所述的方法,其特征在于,所述流量控制器的上行部分到所述交換網的上行部分的鏈路恢復的過程包括以下步驟步驟714,所述交換網的上行部分的并串/串并轉換器檢測到鏈路狀態(tài)恢復正常,更新鏈路狀態(tài)表的對應比特,同時開始接收恢復正常的鏈路數(shù)據;步驟716,所述交換網的下行部分周期性地將所述鏈路狀態(tài)表的信息通過鏈路錯誤比特傳遞到所述流量控制器的下行部分;步驟718,所述流量控制器的下行部分收集所述鏈路錯誤比特信息;步驟720,所述流量控制器的下行部分根據收集到的所述鏈路錯誤比特信息控制所述流量控制器的上行部分的調度器,打開被關閉的通道,開始向所述通道調度數(shù)據信元;步驟722,打開恢復正常的鏈路后,所述流量控制器的上行部分將鏈路開關狀態(tài)通過信元的信元頭的鏈路關比特傳遞到所述交換網的上行部分;以及步驟724,所述交換網的上行部分收集所述鏈路關比特信息,更新并串/串并轉換器開關狀態(tài)表的對應比特。
12.根據權利要求1至9中任一所述的方法,其特征在于,所述交換網的下行部分到所述流量控制器的下行部分的鏈路出現(xiàn)故障的處理包括以下步驟步驟802,所述流量控制器的下行部分檢測到鏈路故障,并更新所述對應的鏈路狀態(tài)表;步驟804,將所述鏈路狀態(tài)表的信息周期性地通過流量控制器的上行部分的所有鏈路發(fā)送的信元的信元頭中的鏈路錯誤比特傳遞到所述交換網的上行部分;步驟806,所述交換網的上行部分收集所述流量控制器的上行部分傳遞過來的信元頭中的所述鏈路錯誤比特;步驟808,所述交換網的上行部分根據收集到的所述鏈路狀態(tài)信息控制所述交換網的下行部分中的調度器停止向出現(xiàn)故障的鏈路調度數(shù)據信元;步驟810,確認調度器不向出現(xiàn)錯誤的鏈路調度數(shù)據信元后,所述交換網的下行部分通過所述信元的信元頭的鏈路關比特將調度狀態(tài)傳遞到所述流量控制器的下行部分;以及步驟812,所述流量控制器的下行部分收集所述鏈路關比特的狀態(tài)信息,更新所述鏈路開關狀態(tài)表的對應比特,同時根據所述鏈路關比特的狀態(tài)和所述鏈路錯誤比特的狀態(tài)接收數(shù)據。
13.根據權利要求1至9中任一所述的方法,其特征在于,所述交換網的下行部分到所述流量控制器的上行部分的鏈路恢復的過程包括以下步驟步驟814,所述流量控制器的下行部分的并串/串并轉換器檢測到鏈路狀態(tài)恢復正常,更新所述鏈路狀態(tài)表的對應比特,同時開始接收恢復正常的鏈路的數(shù)據;步驟816,所述流量控制器的上行部分周期性地將所述鏈路狀態(tài)表的信息通過鏈路錯誤比特傳遞到所述交換網的上行部分;步驟818,所述交換網的上行部分收集所述鏈路錯誤比特信息;步驟820,所述交換網的下行部分根據所述交換網的上行部分收集的鏈路錯誤狀態(tài)信息控制所述交換網的下行部分的調度器,打開被關閉的通道,開始向所述通道調度數(shù)據信元;步驟822,打開恢復正常的鏈路后,所述交換網的下行部分將鏈路開關狀態(tài)通過信元的信元頭的鏈路關比特傳遞到所述流量控制器的下行部分;以及步驟824,所述流量控制器的下行部分收集鏈路關比特信息,更新并串/串并轉換器開關狀態(tài)表的對應比特。
全文摘要
一種鏈路狀態(tài)自協(xié)商方法,用于在發(fā)送端和接收端之間進行數(shù)據傳輸鏈路狀態(tài)的自協(xié)商,其特征在于,包括以下步驟接收端通過查詢信元頭中的序列號來按照正確的順序接收數(shù)據;通過信元頭的鏈路關比特和鏈路錯誤比特來傳遞鏈路狀態(tài);在接收端和發(fā)送端分別增加鏈路狀態(tài)表;在鏈路出現(xiàn)故障和鏈路恢復的過程中,通過接收端和發(fā)送端的收發(fā)狀態(tài)來控制數(shù)據的接收和發(fā)送,完成鏈路的自協(xié)商過程。在鏈路狀態(tài)自協(xié)商的過程中還通過查詢和設置并串/串并轉換器開關狀態(tài)表來完成鏈路的自協(xié)商過程。本發(fā)明的電路實現(xiàn)簡單、耗費資源少,并且不需要軟件干預,降低了軟件開發(fā)成本,提高了協(xié)商的效率和系統(tǒng)的可靠性。
文檔編號H04L12/28GK1859155SQ20051003577
公開日2006年11月8日 申請日期2005年7月2日 優(yōu)先權日2005年7月2日
發(fā)明者王凱, 羅柳柱 申請人:華為技術有限公司