一種將多個e1線路綁定且實現邏輯通道分離的方法
【專利摘要】本發明公開了一種將多個E1線路綁定且實現邏輯通道分離的方法,在發送方向,將分組數據根據通道號分別送入對應通道的限流模塊進行帶寬控制,實現邏輯通道分離;通過軟件對各個通道進行優先級控制;在包頭上增加四個字節,用于SN和通道信息的傳遞;端口輪詢及鏈路狀態維護;在接收方向:各個端口數據緩存,包重新排序。本發明的積極效果是:不但很好地解決了多個E1線路捆綁在一起傳輸數據的問題,同時本方法還提供靈活配置帶寬的多個邏輯通道,讓使用者有了更多的選擇和應用場景,填補了多個E1線路捆綁通道化的空白。
【專利說明】一種將多個E1線路綁定且實現邏輯通道分離的方法
【技術領域】
[0001]本發明涉及一種將多個El線路綁定且實現邏輯通道分離的方法。
【背景技術】
[0002]由于目前在我國很多地方的接入線路都還是El線路,為了充分利用資源,一般都是采用把多路El綁定在一起增加帶寬的方法,實現平滑升級,節約開支。
[0003]現有的技術都是完成把多個El線路捆綁在一起,而內部數據不做區分,傳輸帶寬是增加了,但是沒有辦法在這捆綁在一起的傳輸線路上實現更多的功能,比如各個用戶間的數據實現邏輯隔離,用戶優先級控制、根據需求限制某些用戶的帶寬的功能等都無法實現。
【發明內容】
[0004]為了克服現有技術的上述缺點,本發明提供了一種將多個El線路綁定且實現邏輯通道分離的方法,首先解決了多個El線路捆綁在一起傳輸數據的問題,而且還提供靈活配置帶寬的多個邏輯通道。即對于捆綁在一起的多個El線路,可以只有一個通道,此時所有帶寬都為其所用;捆綁在一起的線路也可以是多個通道,每一個通道的帶寬是根據實際需要配置,最小可以小于I個El線路,如128K,最大可以是所有線路的總和。所以通道帶寬與端口沒有必然的聯系,配置很靈活,且各個通道間可以設定優先級,也可以沒有優先級,完全互不影響。通過此方法為多個捆綁在一起的El線路實現了邏輯的通道分離,通道間互不影響。
[0005]這樣可以為多個用戶或用戶群提供接近真正意義上的專線帶寬、而且還可實現不同的優先級,而且各個通道在邏輯上獨立,對于優先級相同的通道,他們是完全互不影響。
[0006]本發明解決其技術問題所采用的技術方案是:一種將多個El線路綁定且實現邏輯通道分離的方法,
一、在發送方向:
(1)邏輯通道分離和優先級控制:將分組數據根據通道號分別送入對應通道的限流模塊進行帶寬控制,實現邏輯通道分離;通過軟件對各個通道進行優先級控制;
(2)包排序:在包頭上增加四個字節,用于SN和通道信息的傳遞;
(3 )端口輪詢及鏈路狀態維護:對于經過邏輯通道分離的數據,在發送時需輪詢端口狀態;為了避免發送方向鏈路斷了數據包還往此鏈路發送的情況發生,還需對鏈路狀態進行維護;
二、在接收方向:
(1)各個端口數據緩存:對于每一個端口,收到的數據都先緩存,同時將SN提取出來緩
存;
(2)包重新排序:對于每一個通道,事先讀出最新包的SN,接收方向記錄此時希望收到的SN,將希望的SN與各個端口判別為正確的SN分別比較,如果有相同的,則讀取該端口對應的數據包,如果沒有相同的,同時端口都收到了數據或者接收數據等待超時,選擇與等待SN差值最小的SN對應的端口收數據;如果出現緩存滿的情況,則選擇差值最小的SN對應的端口收數據;對于SN錯誤的數據包,直接讀出丟棄。
[0007]與現有技術相比,本發明的積極效果是:不但很好地解決了多個El線路捆綁在一起傳輸數據的問題,同時本方法還提供靈活配置帶寬的多個邏輯通道。這樣讓使用者有了更多的選擇和應用場景。填補了多個El線路捆綁通道化的的空白。
[0008]本發明方法在充分利用現有線路資源進行帶寬升級的同時,可以為多個用戶或用戶群提供接近真正意義上的專線帶寬、而且還可實現不同的優先級,而且各個通道在邏輯上獨立,對于優先級相同的通道,他們是完全互不影響。這樣就提供了比單一捆綁更靈活的配置和應用。
【具體實施方式】
[0009]本發明方法在發送方向通過帶寬限定模塊限定該通道的流量,然后按照優先級指示發送對應通道數據,同時在發送時需要查詢各個端口的狀態,及時調整發送數據到空閑的端口,使各個通道的帶寬均衡。在數據包中增加包序指示,用于接收方向重新排序,接收方使用緩存包的方法來對齊時延,使包不亂序,對于排好序的包就送給上層進行處理。具體說明如下:
傳輸設備完成多個El線路的鏈路捆綁、多個通道的帶寬限定、優先級控制等功能。多個El傳輸線路邏輯上綁定為一個鏈路,在這個鏈路上根據需要分為若干個通道,各通道的帶寬都可以靈活配置,可以小于單個物理線路(最小粒度128Kbps),也可以是全部線路的帶寬。通道帶寬與端口沒有必然的聯系,配置很靈活。將多個鏈路捆綁和通道化相結合是本方案的最大創新。
[0010]一種將多個El線路綁定且實現邏輯通道分離的方法,包括如下幾個方面:
一、在發送方向:
(I)邏輯通道分離和優先級控制
為了實現邏輯通道分離,首先需要把數據分成多個通道,然后針對每一個通道進行帶寬控制,具體方法是把分組數據根據通道號分別送入對應通道的限流模塊進行帶寬控制,帶寬的值由軟件配下來,最小粒度為128Kpbs。軟件配置帶寬時需要查看實際鏈路的狀態,根據實際能用的帶寬進行配置。具體的帶寬控制方法如下:
在分組數據發送方向,利用讀取時鐘進行帶寬控制,數據進入后分別緩存于自己通道對應的緩存中,然后再按照每一個通道分配的帶寬進行數據讀取,例如,讀取的時鐘是100MHz,緩存位寬為32bit,讀取速率就為3.2Gbit/s,如果計數周期設為25600,一個計數周期內給一個時鐘讀取信號,此時讀取的帶寬為128Kpbs,如果要配2Mpbs的帶寬,則在25600時鐘周期內給出16個讀時鐘的使能信號就達到目的。在具體實現時,每一個通道時鐘使能間隔值由軟件來計算,然后下發到硬件中,這樣實現更靈活,且硬件的資源占用也要小一些。而讀出的數據由于是不零散的,每一個通道還需要一級緩存來存儲完整的包,如果數據存滿了一包,則可以開始讀取該通道的數據。這樣在發送時就嚴格控制了發往線路的數據,在傳輸線路上就能夠實現邏輯上的多個通道。
[0011]對于優先級控制,各個通道間可以使用優先級,也可以不使用優先級,這由軟件進行設置。如果設定需要優先級,則按照通道1、通道2、通道3、通道4的優先級順序查詢各個通道對應的緩存,先發送優先級高的通道數據,如果沒有數據,再發送優先級低一級的通道數據。如果沒有優先級,則平等的輪詢各個通道是否有數據,有就發送,否則輪詢下一個通道。另外讀取通道數據還有一個必要條件:有可發送的端口,即有發送端口緩存沒滿且鏈路正常。
[0012](2)包排序
由于包長以及每一個鏈路的時延都不同,在接收方向很可能亂序,為了在接收方向正確的接收,在發送時還需加上通道信息和SN (幀序號),用于接收方向重新排序,使包接收后不亂序。本方案在包頭上增加了四個字節,用于SN和通道信息的傳遞。SN在此機制中很重要,如果線路誤碼導致接收過程中收到了比正確SN更大的SN,就會導致掉包,為了避免這種情況,我們采用將SN的字節和發送過去,具體為前兩個字節為SN,后面的I個字節為前兩個字節的和,最后一個字節用作通道號。SN在接收方向進行比較,正確的才接收,對于SN不正確的包,直接讀取丟棄。為了進一步避免誤判,本方案還將四字節頭也計算到CRC校驗中,利用CRC的正確性來確定SN的可靠性。
[0013]總結上述內容,本方案的自定義幀格式如下:前面兩個字節為SN,第三個字節為SN低8位和高8位的和,用于SN的正確性校驗,第四個8位為通道號(比如:如果有四個通道,所以通道號只有低2bit有效,其余填0),后面就是承載的有效數據凈荷。另外四字節頭還有兩種特別含義,當前面24bit為全I時,表明后面的8位為控制字,控制字兩個定義,O表示此鏈路發送正常,可以發送,FF表示鏈路發送異常,收到此包后停止發送,用于及時檢查鏈路狀態。
[0014]( 3 )端口輪詢及鏈路狀態維護
對于經過邏輯通道分離的數據,在發送時需要進行公平的輪詢,這樣才能保證他們互不影響。在發送數據時還需輪詢端口狀態,先查看當前端口是否滿或是否斷鏈,如果沒滿(給出滿信號時還可以接收一個最長包)且鏈路正常,就將數據包發送給當前輪詢到的端口,這樣就能夠保證數據發送時每一個端口流量均衡且自適應鏈路出錯。如果當前端口滿或斷鏈,則跳過當前端口。為了避免發送方向鏈路中斷時數據包還往此鏈路發送的情況發生,需增加手段以知曉發送方向的鏈路情況。具體方法如下:如果端口接收不同步,則對應端口發送鏈路發送異常指示給對方,對方收到后停止發送;當同步后發送鏈路發送正常指示給對方,對方則可開始發送數據。此數據包的長度為64字節,除頭外,其余全填O。通過以上措施,實現了各個端口的捆綁。
[0015]二、在接收方向:
(I)各個端口數據緩存
對于每一個端口,收到的數據都先緩存,同時將SN提取出來緩存。
[0016](2)包重新排序
由于包長不同以及傳輸時延不同,接收方向收到的數據包順序與發送方向的順序有可能不一致,所以需要重新排序。具體方法如下,對于每一個通道,事先讀出最新包的SN。接收方向記錄此時希望收到的SN (例如,一開始希望收到的SN為1,收到以后自動加1,就變成2 了),將希望的SN與各個端口判別為正確的SN分別比較,如果有相同的,則讀取該端口對應的數據包,如果沒有相同的,同時端口都收到了數據(緩存非空)或者接收數據等待超時,選擇與等待SN差值最小的SN對應的端口收數據,如果出現緩存滿的情況,表明端口的時延已超過最大時延,不需再等待,同樣選擇差值最小的SN對應的端口收數據。
[0017]接收數據等待超時的時間可以根據具體情況確定,一般在16ms到48ms的范圍。對于SN錯誤的數據包,直接讀出丟棄。
【權利要求】
1.一種將多個El線路綁定且實現邏輯通道分離的方法,其特征在于: 一、在發送方向: (1)邏輯通道分離和優先級控制:將分組數據根據通道號分別送入對應通道的限流模塊進行帶寬控制,實現邏輯通道分離;通過軟件對各個通道進行優先級控制; (2)包排序:在包頭上增加四個字節,用于SN和通道信息的傳遞; (3 )端口輪詢及鏈路狀態維護:對于經過邏輯通道分離的數據,在發送時需輪詢端口狀態;為了避免發送方向鏈路斷了數據包還往此鏈路發送的情況發生,還需對鏈路狀態進行維護; 二、在接收方向: (1)各個端口數據緩存:對于每一個端口,收到的數據都先緩存,同時將SN提取出來緩存; (2)包重新排序:對于每一個通道,事先讀出最新包的SN,接收方向記錄此時希望收到的SN,將希望的SN與各個端口判別為正確的SN分別比較,如果有相同的,則讀取該端口對應的數據包,如果沒有相同的,同時端口都收到了數據或者接收數據等待超時,選擇與等待SN差值最小的SN對應的端口收數據;如果出現緩存滿的情況,則選擇差值最小的SN對應的端口收數據;對于SN錯誤的數據包,直接讀出丟棄。
2.根據權利要求1所述的一種將多個El線路綁定且實現邏輯通道分離的方法,其特征在于:所述帶寬控制方法為:在分組數據發送方向,利用讀取時鐘進行帶寬控制,數據進入后分別緩存于自己通道對應的緩存中,然后再按照每一個通道分配的帶寬進行數據讀取。
3.根據權利要求1所述的一種將多個El線路綁定且實現邏輯通道分離的方法,其特征在于:所述四個字節的前兩個字節為SN,后面的一個字節為前兩個字節的和,最后一個字節用作通道號。
4.根據權利要求1所述的一種將多個El線路綁定且實現邏輯通道分離的方法,其特征在于:所述對鏈路狀態進行維護的方法是:如果端口接收不同步,則對應端口發送鏈路發送異常指示給對方,對方收到后停止發送;當同步后發送鏈路發送正常指示給對方,對方則開始發送數據。
【文檔編號】H04L12/823GK103701712SQ201310638029
【公開日】2014年4月2日 申請日期:2013年12月3日 優先權日:2013年12月3日
【發明者】楊松, 邱劍 申請人:中國電子科技集團公司第三十研究所