唐鴻凱
摘 要:該文介紹了一種CLOS網絡的鏈路分配方法,涉及CLOS網絡出現硬件鏈路不均衡時如何實現負載均衡的技術。即網絡的中間級交換單元與其互連的前后級交換單元之間可以使用的有效鏈路數量,等于其前級交換單元可用的空閑鏈路數量和后級交換單元可用的空閑鏈路數量之間的最小值。只要檢測到有鏈路釋放占用狀態,就刷新該交換單元進行數據傳輸需要的各級鏈路數量信息,重新分配該數據傳輸通道上的各級交換單元的鏈路數量。
關鍵詞:CLOS網絡 均衡 數據中心
中圖分類號:TN927 文獻標識碼:A 文章編號:1672-3791(2017)03(b)-0007-03
為了解決CLOS網絡應用中鏈路不對等造成的網絡擁塞問題,該文介紹了一種CLOS網絡的負載均衡技術,既保證了數據傳輸過程中的鏈路匹配,又避免了負載均衡過程中的鏈路資源浪費,極大地保證了CLOS網絡的整體交換性能,提高了整個CLOS網絡的可靠性。
1 技術背景
CLOS架構[1]是一種多級交換架構,各級的每個交換單元都和下一級的所有交換單元相連接。典型的3級CLOS網絡,如圖1所示,n為入口和出口處每個交換單元的端口數,第2級為m個r×r的交換單元,每級與下一級各個交換單元之間僅有一條鏈路連接。當m≥2n-1時,該3級CLOS網絡可以實現嚴格無阻塞的數據交換。
CLOS網絡支持遞歸擴展,中間級可以是一個完整的3級CLOS網絡,理論上可以無限擴展,構建具有更高容量的交換網絡,為極大的數據流交換建立嚴格的無阻塞連接。
CLOS網絡實現無阻塞交換的前提是要實現負載均衡,以防止出現同一時刻入口鏈路大于出口鏈路造成的網絡擁塞。實際運用中,CLOS網絡每級與下一級各個交換單元之間可以允許有多條鏈路連接,硬件上一般都通過設計對稱的CLOS網絡架構,保證各個中間級交換單元到入口和出口處各個交換單元之間的互聯鏈路數相等。
CLOS網絡工作過程中不可避免地會出現鏈路故障,導致網絡擁塞。因此,必須引入負載均衡技術,保證整個CLOS網絡的無阻塞交換。目前應用于CLOS網絡,主要的負載均衡技術如下。
(1)禁用多余鏈路——當CLOS網絡中,某個中間級交換單元的某些鏈路出現故障時,通過各種機制禁用掉與該交換單元互聯的前后級各個交換單元的多余鏈路,保證故障交換單元到前后級各個交換單元之間的鏈路數相等。(2)速率動態調整——當CLOS網絡中,某個交換單元的某些鏈路出現故障時,通過各種機制動態調整該故障交換單元的數據輸入和輸出速率,輸入速率×輸入鏈路≤輸出速率×輸出鏈路,防止出現網絡擁塞。
方案1會造成CLOS網絡鏈路資源上的浪費,降低了中間級交換單元的交換容量,影響整個網絡的交換性能。方案2實現機制比較復雜,需要消耗較多的軟件資源用來調整鏈路的傳輸速率。
2 實現方式
CLOS網絡架構在數據中心交換機中廣泛應用。數據中心交換機主要包括管理板、業務板(接口板)、交換板3個部分,其中業務板和交換板通過機箱背板互連構成了一個CLOS網絡。
一種常見的數據中心交換機業務板和交換板形成的CLOS網絡,如圖2所示,處于中間級的所有交換板通過機箱背板共同構成了一個交換平面,假設該數據中心交換機支持r張業務板,每張業務板的入口到全部業務板的出口有r個數據傳輸路徑,則整個CLOS網絡支持r×r個數據傳輸路徑。
圖2中,每張業務板和交換平面之間通過4對鏈路連接(4條發送、4條接收),虛線代表鏈路故障。某一時刻業務板#1的入口處收到一條數據流,按照優先級的先后順序分別需要傳輸到業務板#2、業務板#3、業務板#4,則該方案的實現流程如圖3所示,該數據流的傳輸可以分為以下幾個步驟。
(1)處于第一優先級路徑的業務板#1→業務板#2,檢測到該路徑上有傳輸的數據需求。
(2)判斷業務板#1的入口和業務板#2的出口側是否存在空閑的鏈路,根據圖2所示,業務板#2的出口側有2條可用空閑鏈路,2條故障鏈路,業務卡#1的入口側有4條可用空閑鏈路(假定該數據中心交換機此前處于空閑狀態),如果通路上面沒有空閑鏈路就返回重新檢測。
(3)分配第一優先級路徑的鏈路數,該路徑上可以使用的鏈路數=min{業務卡#1入口側可用的空閑鏈路數,業務卡#2出口側可用的空閑鏈路數}=min{4,2}=2,業務卡#1入口側可用的空閑鏈路數和業務卡#2出口側可用的空閑鏈路數的最小值為2,即由業務板#1發往業務板#2可使用的鏈路數為入口側和出口側各2條。
(4)CLOS網絡一般是采用動態路由機制,從業務卡#1的入口側和業務卡#2入口側各選擇2條鏈路,同時將選中的鏈路標記為“被占用”的狀態,通告該優先級鏈路分配完成,接著通告第一優先級路徑上被選中的鏈路開啟數據傳輸流程,通過被占用的所有鏈路往業務卡#2的出口側傳輸數據。數據傳輸流程是原系統自帶的數據傳輸流程,是另外進行的獨立流程,和該方案通過相互之間的通告建立聯系,兩者互不影響。
(5)當第一優先級路徑的鏈路分配通告完成后,處于第二優先級路徑的業務板#1→業務板#3,開始執行該路徑上的鏈路分配。
(6)通過確認,業務板#3的出口側有2條可用空閑鏈路,2條故障鏈路,業務卡#1的入口側有2條可用空閑鏈路,2條鏈路被占用。因此,該路徑上可以使用的鏈路數=min{業務卡#1入口側可用的空閑鏈路數,業務卡#3出口側可用的空閑鏈路數}=2,將入口側和出口側選中的各2條鏈路全部標記為“被占用”的狀態,同時通告該優先級鏈路分配完成,通告業務板#1→業務板#3之間被選中的鏈路開啟數據傳輸流程。
(7)處于第三優先級路徑上的數據,由于業務板#1的入口側沒有空閑鏈路,暫時處于循環檢測的傳輸等待中。
(8)假設第一優先級路徑的數據先于第二優先級路徑的數據完成傳輸流程,當第一優先級的數據傳輸流程通告結束時,該路徑會釋放被占用的所有鏈路,入口側和出口側的鏈路重新被標記為“空閑”狀態。此刻,會觸發所有相關路徑重新執行鏈路分配檢測,各路徑重新確認本路徑上的鏈路分配是否需要進行調整。該方案的鏈路分配流程不會影響正在執行的數據傳輸流程,兩個流程是獨立進行的,相互之間僅僅互相通告。
(9)本時刻由于第二優先級路徑的數據傳輸流程仍未結束,第二路徑的空閑鏈路數量沒有增加,因此第二優先級路徑繼續保持原先的鏈路分配結果。與此同時,業務卡#1的入口側釋放2條可用的空閑鏈路,2條鏈路繼續被占用,而業務板#4的出口側有4條可用空閑鏈路。進而執行第三優先級路徑業務板#1→業務板#4的鏈路分配,該路徑上可以使用的鏈路數=min{業務卡#1入口側可用的空閑鏈路數,業務卡#4出口側可用的空閑鏈路數}=2。
(10)同樣的,第三優先級路徑會將業務板#1入口側剩余的2條鏈路和業務板#4出口側的2條鏈路標記為“被占用”,同時通告選中鏈路開啟數據傳輸流程,該階段業務板#4的出口側只啟用2條鏈路進行數據傳輸。
(11)假設第二優先級路徑的數據先于第三優先級路徑的數據完成傳輸流程,當第二優先級路徑業務板#1→業務板#3占用的鏈路被標記為“空閑”狀態后。所有的相關路徑又會再次進行一次鏈路檢測,此時第三優先級路徑業務板#1→業務板#4上仍有數據傳輸的需求,同時檢測到業務板#1的入口側和業務板#4的出口側均存在2條空閑鏈路,進而再執行一次鏈路分配,該路徑上還可以使用的鏈路數=min{業務卡#1入口側可用的空閑鏈路數,業務卡#4出口側可用的空閑鏈路數}=2。因此,該路徑上業務板#1入口側和業務板#4出口側各剩余的2條鏈路全部標記為“被占用”,同時通告選中鏈路開啟數據傳輸流程,即此刻業務板#1→業務板#4的路徑上入口側和出口側均開啟了4條鏈路的數據傳輸流程,直至業務板#1的數據流全部完成傳輸結束。
綜上所述,可以將上述的鏈路使用情況成以下3個階段。
第1階段——業務板#1同時向業務板#2和業務板#3傳輸數據,該階段業務板#1的入口側啟用4條鏈路,業務板#2和業務板#3出口側非故障的2條鏈路也全部啟用。
第2階段——業務板#1同時向業務板#3和業務板#4傳輸數據,該階段業務板#1的入口側啟用4條鏈路,業務板#2的出口側非故障的2條鏈路也全部啟用,業務板#4的出口側啟用2條鏈路。
第3階段——業務板#1單獨向業務板#4傳輸數據,該階段業務板#1的入口側啟用4條鏈路,業務板#4的出口側也啟用4條鏈路。
上述3個階段所有路徑上業務板入口側和出口側啟用的鏈路比始終保持1∶1,實現了鏈路故障時的負載均衡,同時鏈路的利用率可以達到100%,不會造成鏈路資源的浪費,很好地保證了整個CLOS網絡的交換性能,提高了數據中心交換機的可靠性。
3 結語
該方案很好地解決了CLOS網絡中的負載均衡問題,在非對稱的CLOS網絡中也能夠應用,有效鏈路的利用率可以達到100%,保證了整個CLOS網絡的交換性能。另外,該方案也可以很好地解決使用CLOS架構的數據中心交換機時不同版本交換板的混插兼容性問題,當數據中心交換機的CLOS網絡發生鏈路故障時仍可以正常工作,保證了數據中心交換機的交換性能和可靠性,為用戶節約維護成本。
參考文獻
[1] Charles Clos.A Study of Non-Blocking Switching Networks[J].BSTJ,2013,32(5):406-424.
[2] RG-N18000系列云架構網絡核心交換機[Z].