Clos系統(tǒng)中基于輸出狀態(tài)反饋的負載均衡方法及裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及CLOS(克洛斯交換架構)系統(tǒng)的負載均衡技術領域,特別是涉及一種CLOS系統(tǒng)中基于輸出狀態(tài)反饋的負載均衡方法及裝置。
【背景技術】
[0002]基于信元(CELL)的CLOS系統(tǒng)具有無阻塞,可擴展和大容量的特點,目前已成為交換芯片的主流。如圖1所示,傳統(tǒng)的CLOS系統(tǒng)包括若干個IM(輸入模塊)、若干個CM(中間模塊)和若干個OM(輸出模塊),他們可組成3級的CLOS結構,并且可以很容易得擴展成5級CLOS結構。采用折疊方式,IM和OM功能可在一塊芯片內實現(xiàn),而CM則在另一塊芯片中實現(xiàn)。
[0003]以太網(wǎng)數(shù)據(jù)包是變長的,且最大包長可能達到16000字節(jié),在交換芯片中基于數(shù)據(jù)包進行交換會帶來較大的延時,并且需要很大的存儲空間來緩存最大數(shù)據(jù)包。為了提高延時性能和減少緩存容量,目前主流的CLOS系統(tǒng)中都是以信元為基本單位進行交換的,IM需完成把數(shù)據(jù)包切分成信元的送往CM,CM完成信元的交換,OM則需要把信元重新組成原來的數(shù)據(jù)包并輸出。
[0004]在CLOS交換架構中,單級系統(tǒng)中數(shù)據(jù)信元至少存在兩次負載均衡,第一次在頂中完成,第二次在CM中完成,這兩次負載均衡的作用是讓頂、CM和OM的各級緩存中的數(shù)據(jù)可以均衡,這樣就能減少一些不必要的擁塞,從而讓系統(tǒng)中的各級資源都充分利用起來。
[0005]頂?shù)呢撦d均衡通常采用輪詢或者隨機算法實現(xiàn),因為對于頂來說無論哪個link都能到達目的0M,從單個芯片來說,無論數(shù)據(jù)信元走那個link都能到達目的地,并且這樣對頂來說其負載也是均衡的。
[0006]CM的負載均衡,由于到達目的OM的I ink數(shù)是一定的,也只能從這幾個I ink中選取一個發(fā)送出去,因此負載均衡在這幾個link之間產生,而每個link輸出都對應一個輸出緩存,負載均衡把輸出緩存引入之后,再根據(jù)這幾個link的緩存狀態(tài)再選擇,這里的負載均衡是一個比較穩(wěn)定的閉環(huán)系統(tǒng),而且做到了均衡的目的。
[0007]但在實際使用中發(fā)現(xiàn),雖然頂和CM的負載均衡的做法不一樣,從單個芯片來看其負載是均衡的,但是從系統(tǒng)的角度來看這個負載不一定均衡。
[0008]由于IM的負載均衡不關心目的0M,并且一個IM的數(shù)據(jù)可以發(fā)送到所有的CM,這樣從不同link上發(fā)送的數(shù)據(jù)信元在IM側是均衡的,但是這些信元的目的OM并不是都均衡的。到達某個OM的信元經過所有CM的負載均衡之后,存在某個CM的信元多一些,這樣就會導致CM的出口緩存滿,并且出口緩存也不均衡,并且這種現(xiàn)象隨著單級系統(tǒng)中頂?shù)膫€數(shù)越多出現(xiàn)的概率越大,當系統(tǒng)單級滿配時這種現(xiàn)象更明顯,如果這種現(xiàn)象不解決就會導致系統(tǒng)的運行效率降低,性能下降,比如OM達不到其最大流量,數(shù)據(jù)包延時加大等問題。
[0009]早期的信元交換芯片,一般吞吐量較低,系統(tǒng)容量也小,隨著網(wǎng)絡規(guī)模增大,系統(tǒng)的不斷擴容,這種不均衡出現(xiàn)的概率越來越大,如果不加以控制會導致整個系統(tǒng)不能正常運行。為了不影響系統(tǒng)的整體的調度能力和性能,只有采取比較合理的負載均衡手段,使系統(tǒng)的工作效率及其性能不會因為突發(fā)或者負載不均衡而導致下降。
[0010]因此,亟需采用其他技術手段來維持系統(tǒng)的調度能力和性能。
【發(fā)明內容】
[0011]針對現(xiàn)有技術中的缺陷,本發(fā)明要解決的技術問題為:在CLOS系統(tǒng)中有效實現(xiàn)負載均衡,使系統(tǒng)的工作效率及其性能不會因為突發(fā)或者負載不均衡而導致下降,從而維護系統(tǒng)整體的調度能力和性能。
[0012]為達到以上目的,本發(fā)明提供一種CLOS系統(tǒng)中基于輸出狀態(tài)反饋的負載均衡方法,包括以下步驟:
[0013]步驟SI:將每個CM的緩存狀態(tài)信息存放在對應的數(shù)據(jù)信元中;周期性地將所述數(shù)據(jù)信元按照多輪發(fā)送的方式發(fā)送到每個0M,每輪發(fā)送中將所有CM對應的數(shù)據(jù)信元依次發(fā)送到一個OM,從首個OM開始,發(fā)送多輪,轉入步驟S2 ;
[0014]步驟S2:每個OM收到數(shù)據(jù)信元后,根據(jù)數(shù)據(jù)信元所攜帶的CM的緩存狀態(tài)信息解析出CM的緩存狀態(tài);將解析出的緩存狀態(tài)發(fā)送至頂,轉入步驟S3;
[0015]步驟S3:頂根據(jù)OM發(fā)來的緩存狀態(tài)建立CM緩存狀態(tài)表;并對所述CM緩存狀態(tài)表進行更新,轉入步驟S4 ;
[0016]步驟S4:查詢負載均衡模式,在基于輸出狀態(tài)反饋的模式下利用所述CM緩存狀態(tài)表得到一組反饋緩存狀態(tài)最小值的比特向量組,根據(jù)該比特向量組進行計算、查詢,得到一個對應的待發(fā)送數(shù)據(jù)信元的link;并在該link有效的情況下,將待發(fā)送數(shù)據(jù)信元通過該I ink進行發(fā)送。
[0017]在上述技術方案的基礎上,步驟SI中,按照多輪發(fā)送的方式發(fā)送數(shù)據(jù)信元時,設置有狀態(tài)指示位,所述狀態(tài)指示位由兩個比特表示:用“10”表示一輪發(fā)送的開始,用“00”表示發(fā)送的中間,用“01”表示一輪發(fā)送的結束;步驟SI中所述周期性地將所述數(shù)據(jù)信元按照多輪發(fā)送的方式發(fā)送到每個OM,具體包括以下操作:
[0018]步驟SlOl:判斷本次發(fā)送是否是一輪新的發(fā)送的開始,若是,轉入步驟S102;否則,轉入步驟S103;
[0019]步驟S102:將狀態(tài)指示位配置成“10”,發(fā)送相應的數(shù)據(jù)信元到對應的0M,轉入步驟S106;
[0020]步驟S103:判斷是否是這一輪發(fā)送的結束,若是轉入步驟S104;否則,轉入步驟S105;
[0021 ]步驟S104:將狀態(tài)指示位配置成“01”,發(fā)送相應的數(shù)據(jù)信元到對應的0M,轉入步驟S106;
[0022]步驟S105:將狀態(tài)指示位配置成“00”,發(fā)送相應的數(shù)據(jù)信元到對應的0M,轉入步驟S106;
[0023]步驟S106:根據(jù)配置的狀態(tài)指示位完成一輪數(shù)據(jù)信元的發(fā)送后,重復步驟SlOl?S106,進入下一輪數(shù)據(jù)信元的發(fā)送。
[0024]在上述技術方案的基礎上,步驟S3中,IM根據(jù)OM發(fā)來的緩存狀態(tài)對所建立的CM緩存狀態(tài)表進行更新時,具體包括以下操作:
[0025]步驟S301:將收到的新的緩存狀態(tài)與CM緩存狀態(tài)表中相應的舊的緩存狀態(tài)進行異或運算,判斷結果值是否為“0”,若是,返回步驟S301;否則,轉入步驟S302;
[0026]步驟S302:判斷狀態(tài)更新是否為一輪狀態(tài)的結束,若是,轉入步驟S303;否則,返回步驟S301;
[0027]步驟S303:將CM緩存狀態(tài)表中對應的一列狀態(tài)完全更新,返回步驟S301。
[0028]在上述技術方案的基礎上,步驟S4具體包括以下操作:
[0029]步驟S401:選擇一個待發(fā)送的數(shù)據(jù)信元,轉入步驟S402;
[°03°]步驟S402:查詢IM的路由表,得到一組可以發(fā)送這個數(shù)據(jù)信元的I ink的比特向量組,轉入步驟S403;
[0031]步驟S403:查詢IM發(fā)送link的狀態(tài),得到另一組可以發(fā)送待發(fā)送數(shù)據(jù)信元的link的比特向量組,轉入步驟S404 ;
[0032]步驟S404:將步驟S402和步驟S403中得到的兩個比特向量組進行按位相與運算,得到一個新的比特向量組,轉入步驟S405 ;
[0033]步驟S405:查詢負載均衡模式,判斷是否給予輸出狀態(tài)反饋的模式,若是,轉入步驟S406 ;否則,轉入步驟S407 ;
[0034]步驟S406:在基于輸出狀態(tài)反饋的模式下,查詢輸出狀態(tài)反饋的CM緩存狀態(tài)表,得到一組反饋緩存狀態(tài)最小值的比特向量組,將其與步驟S404中得到的比特向量組進行按位相與運算,得到一個新的比特向量組,轉入步驟S407 ;
[0035]步驟S407:對當前得到的新的比特向量組,以歷史記錄為起點,按照RR算法開始進行查詢,得到一個對應的可以發(fā)送待發(fā)送數(shù)據(jù)信元的I ink,轉入步驟S408;
[0036]步驟S408:判斷得到的link是否有效,若是,記錄查詢的次數(shù)后,將待發(fā)送數(shù)據(jù)信元通過該I ink進行發(fā)送,返回步驟S401;否則,轉入步驟S409 ;
[0037]步驟S409:記錄查詢的次數(shù),判斷查詢的次數(shù)是否超過了設置的門限,若是,丟棄該I ink,結束;否則,返回步驟S401。
[0038]在上述技術方案的基礎上,所述CM緩存狀態(tài)表中的每行表示某個OM對應的所有CM的緩存狀態(tài),每列表示某個CM到所有OM的緩存狀態(tài),且表格中數(shù)值只有兩比特,表示對應的CM到對應的OM的相應緩存狀態(tài)。
[0039]本發(fā)明還提供一種實現(xiàn)上述方法的CLOS系統(tǒng)中基于輸出狀態(tài)反饋的負載均衡裝置,包括設于CM內的數(shù)據(jù)信元發(fā)送單元、設于OM內的緩存狀態(tài)解析單元,以及設于頂內的CM緩存狀態(tài)表處理單元、緩存狀態(tài)查詢單元;
[0040]所述數(shù)據(jù)信元發(fā)送單元用于:將每個CM的緩存狀態(tài)信息存放在對應的數(shù)據(jù)信元中;周期性地將所述數(shù)據(jù)信元按照多輪發(fā)送的方式發(fā)送到每個0M;
[0041 ]所述緩存狀態(tài)解析單元用于:收到數(shù)據(jù)信元發(fā)送單元發(fā)來的數(shù)據(jù)信元后,根據(jù)數(shù)據(jù)信元所攜帶的CM的緩存狀態(tài)信息,解析出CM的緩存狀態(tài);將解析出的緩存狀態(tài)發(fā)送至頂;
[0042]所述CM緩