一種支持多業務的網絡交換裝置及其實現方法
【技術領域】
[0001]本發明屬于網絡交換裝置領域,具體涉及一種網絡中的流量控制和流量調度、包內流量均衡以及包重組與排序的方法。
【背景技術】
[0002]隨著網絡業務量的爆炸式增長,對交換系統的轉發能力和規模的需求也在急劇增長,從而帶動現代交換技術的迅猛發展,優良的交換架構要求更高的性能、高擴展性、高可靠性以及良好的經濟實用性。
[0003]目前采用多級交換網絡拓撲結構可以滿足交換結構在性能及其可擴展性上的要求,并通過采用多平面高速并行處理的方式來增加有效帶寬從而滿足較高的數據處理速率。最常用的三級CLOS交換系統的組成包括:輸入單元、中間交換單元和輸出單元。
[0004]輸入單元采用輸入級緩存,針對交換網絡的不同輸出端口構建不同的虛擬輸出隊列,既可以保證到達不同輸出端口和不同優先級的分組能夠公平利用交換資源,又可以暫存當前時隙無法傳送到其目的輸出端口的分組,完成業務信元緩存、流量整形、避免擁塞等功能。
[0005]中間交換單元的交換能力很大程度上決定著交換系統的整體性能,如吞吐量、交換時延、抖動和分組丟失率等。交換單元為多個輸入數據流提供緩存和鏈路帶寬等共享資源,以降低獨占資源成本并提高拓展性。但是多個輸入流為競爭資源會形成沖突。共享的資源需要調度和流控機制協調各個輸入流,使得交換單元盡量滿足不同業務的要求,并充分利用緩存資源。
[0006]輸出單元模塊主要完成流量調度和包重組與排序功能。流量調度通過授權控制接收到的流量大小。需要包的排序和重組,是因為同一個業務流的信元通過不同平面不同路徑到達目的節點,信元可能會因為經過不同的路徑引入不同的延時,這在接收端將引起信元亂序和包亂序。信元亂序和包亂序將影響提供的服務質量。為了避免這種現象,需要對亂序的信元和包進行重排序。交換網絡中的信元重排序模塊的加入對于交換網絡性能會有影響。重排序模塊的資源消耗也成了一個需要權衡的因素。信元重排有兩種方式:輸出端排序和中間排序。
[0007]Broadcom Corporat1n—款芯片中就采用了中間排序方案。在輸入端給信元打上時間戳,在中間交換單元中根據時間戳排序使得平面內的信元是保序的,在輸出端模塊中根據時間戳使得從接收FIFO中選出的信元是保序的。這種方案的優點是減小輸出端的緩存大小和降低輸出端重組復雜度。缺點是增加了中間單元的緩存大小和復雜度,且每個輸入端節點之間的時間戳同步要求實現難度大。
【發明內容】
[0008]針對上述存在問題或不足,本發明提供了一種支持多業務的網絡交換裝置及其實現方法,通過設計輸出單元流量均衡、輸入單元包內流量均衡以及中間交換單元流量調度方法使得在滿足吞吐量和時延要求的情況下只需要很小的中間交換單元級的緩存和適中的輸出端緩存,無需不同輸入端時間戳同步,具有較低的實現成本、可拓展性。
[0009]本發明的網絡交換裝置采用典型的三級CLOS架構,包括輸入單元、中間交換單元和輸出單元。三級對稱CLOS網絡C (n, m, r)的輸入單元共有r個n*m交換模塊,中間交換單元有m個r*r交換模塊,輸出單元有r個m*n輸出模塊。網絡共有N = n*r個輸入和輸出端口,每個中間交換模塊與每個輸入和輸出模塊至少有I條鏈路連接。各個輸入模塊和各個輸出模塊之間不存在直接連接。輸入模塊實現數據包流量的申請、數據包的切割以及路由和包內負載均衡。交換模塊實現路由、鏈路級負載均衡和信元調度的功能。輸出模塊實現流量控制、信元的排序與數據包的重組。每個中間級交換單元看作一個交換平面,它可以擴展成三級交換結構,由第一級交換單元,第二級交換單元和第三級交換單元構成。
[0010]該網絡交換裝置的實現方法,包括以下具體步驟:
[0011 ] 步驟①:輸入單元數據包流量的申請。
[0012]輸入單元的每個輸入模塊緩存針對交換網絡的不同輸出端口構建不同的虛擬輸出隊列,為每個隊列發送一個隊列狀態信元到輸出端口申請流量。申請流量的大小采用更新機制。隊列狀態信元的產生分周期性和非周期性。當新增的數據包流量超過兩個最大包長發送非周期性隊列狀態信元;周期的設定是根據交換架構的規模動態變化,當周期性時鐘定時器觸發時,產生周期性隊列狀態信元。
[0013]步驟②:輸出單元的流量控制。
[0014]當多個輸入模塊發送流量申請到同一個輸出模塊時,輸出模塊需要根據申請流量的大小做好負載均衡。當接收數據信元的存儲緩存超過最大允許接收緩存的0.75倍時,輸出模塊將產生快速流控通過控制信元直接作用到所有輸入模塊,輸入模塊對應的虛擬隊列則不會再將數據包進行切割和發送。。
[0015]步驟③:數據包的切割。
[0016]接收到輸出模塊的授權之后將得到授權的數據包切割成信元。
[0017]步驟④:路由和包內負載均衡。
[0018]—個數據包可以切割成多個數據信元,接收端重組采用與期望包序號(期望包序號是指輸出模塊期望重組的來自輸入模塊數據包的包序號)比較的方式,并盡量保證發送到交換單元的數據包的包序號是連續的。根據路由結果和數據包切割狀態來決定是否需要更新數據包的包序號。路由成功且數據包切割的所有信元都已經得到發送時,更新該業務數據包對應的包序號。數據包的第一個信元路由成功,其他信元路由失敗時,更新對應的包序號。數據包的所有信元都路由失敗時,則不更新該包序號。
[0019]步驟⑤:中間交換單元的路由和負載均衡。從鏈路接收到數據信元后查詢路由表,采用基于鏈路的負載均衡通過輪詢每個鏈路來選擇最終的輸出鏈路,將流量平攤到各個輸出鏈路中去。
[0020]步驟⑥:中間交換單元的信元調度。將信元描述符根據信元類型放入相應描述符隊列中,并根據業務的優先級順序調度信元。信元調度模塊由K*K個VOQ(virtual outputqueue虛擬輸出隊列)描述符隊列、2K個組播packet描述符隊列、K個組播0TN(opticaltransport network光傳送網)描述符隊列、一個OTN組播仲裁器、一個組播packet仲裁器、K個輸入端仲裁器、K個輸出端仲裁器和I個輸出控制模塊組成組成。調度模塊的具體執行過程如下:
[0021](I)業務類分,將從輸入緩存中傳來的描述符根據業務類型發送對應的描述隊列中。組播OTN放入OTN組播描述符VIQ (virtual input queue虛擬輸入隊列)中,單播packet和單播OTN放入單播描述符隊列中。組播packet根據自身優先級放入組播VIQ隊列中。業務的優先級劃分主要依據業務對時延的要求,OTN業務對時延要求最高,優先級最高,其次是單播packet,最后是組播packet業務。
[0022](2)組播OTN的調度,通過OTN仲裁器選出一個輸入請求,并將請求結果發送到輸出控制模塊和K個輸出仲裁器。由于OTN組播的優先級最高,所以采用一次扇出的方式。具體來說,當OTN組播的輸出端口中有幾個暫時處于忙狀態時,會采取如下幾個過程:等待所有目的端口空閑;目的端口中,暫時空閑的端口不再參與調度;停止其他OTN組播的調度。
[0023](3)單播輸出端調度,K輸出端仲裁器根據當前的端口忙閑情況,各自調度,將輸入請求發送到輸入端仲裁器。
[0024](4)單播輸入端調度,K輸入端口仲裁器根據當前的端口忙閑情況,各自調度,將授權結果發到輸出模塊。
[0025](5)組播packet調度,根據組播高低優先級仲裁器,選擇一個組播請求,并將請求結果發送到輸出控制。
[0026]由于packet組播的優先級最低,很難同時保證多個輸出端口都空閑,所以采用了多次扇出的方式。具體來說,當packet組播的輸出端口中有幾個端口處于忙狀態。會做如下處理:根據當前空閑的鏈路情況生成授權;等待剩余目的端口空閑。停止其他packet組播的調度。