漫談資料中心CLOS網路架構
隨著技術的發展,資料中心的規模越來越大,一個數據中心的伺服器容量從幾年前的幾千臺伺服器發展到今天的幾萬甚至幾十萬臺。為了降低網路建設和運維成本,資料中心網路的設計者們也竭力將一個網路模組的規模儘可能擴大。同時,資料中心網路內部東西向流量也日益增加,在一些叢集業務的需求驅動下,資料中心網路設計者們甚至開始討論一個網路模組內10000臺千兆線速伺服器的可能性。
常見的資料中心網路模組的典型架構是雙核心交換機+TOR接入交換機兩級結構,如下圖所示:
圖1 典型資料中心網路模組架構
那麼,在這種更大規模資料中心的發展趨勢下,這樣的資料中心網路架構(其實另外一種典型的三層結構也一樣)會面臨什麼挑戰那?
首先,我們會看到單個網路模組的規模直接受限於核心交換機裝置的埠密度。比如,對應10000臺千兆伺服器1:1超載比接入的要求,每臺核心交換機應該提供至少500個線速無阻塞萬兆埠,這已經在挑戰商業市場主流交換機產品的極限了。如果需要更大規模的網路那?貌似只能等待廠商推出更高密度的產品了。
其次,隨著核心交換機裝置越來越龐大,埠數量越來越多,核心交換機的功耗也據高不下,很輕易的達到接近10kw的量級。這個電源的要求雖然對很多財大氣粗的網際網路企業自建的資料中心來說是小菜一碟,但對於大部分企業來說,這意味著2~3個月以上的機架電源改造週期,要知道,在國內大多數IDC機房,單機架的供電能力僅3kw左右。
於是,資料中心網路設計工作者開始研究是否有其它的架構設計方案。
2、CLOS網路架構登場
在討論正題之前讓我們一起看看業內人士經常掛在嘴邊的CLOS到底是何方神聖。CLOS是一種多級交換架構,目的是為了在輸入輸出增長的情況下儘可能減少中間的交叉點數。典型的對稱3級CLOS架構如下圖所示:
圖2 對稱3級CLOS交換網路
事實上CLOS架構並不是什麼新鮮的東西,早在1953年,貝爾實驗室Charles Clos博士在《無阻塞交換網路研究》論文中提出這種架構,後被廣泛應用於TDM網路(多半是程控交換機),為紀念這一重大成果,便以他的名字CLOS命名這一架構。
現在我們再回到資料中心網路設計的話題。實際上,前面提到的嚴重依賴廠商產品埠密度的架構設計方法讓很多設計者們如鯁在喉,讓他們找到了挑戰的興奮點。猶如Linux 社群的開源之風一般,他們更希望的是擺脫廠商產品限制,找到一種架構設計方法,最好是可以使用廉價、普通的小盒子裝置來搭建一個規模可以非常龐大的網路。
在美國加利福尼亞大學電腦科學與工程系以Mohammad Al-Fares為代表的幾位教授的研究下,這種思路達到了登峰造極的程度。
在他們於2008年發表於SIGCOMM的論文《A Scalable, Commodity Data Center Network Architecture》中,明確提出了一種三級的,被稱之為胖樹(Fattree)的CLOS網路架構。利用這種架構方法,可以採用一種固定數量埠的盒式交換機搭建一個大規模伺服器接入的網路。具體的說,當採用埠數為k的交換機時,核心交換機數量為(k/2)2個,共有k個Pod,每個Pod各有(k/2)個匯聚和接入交換機,可接入的伺服器數量為k3/4。並且這種架構可以保證接入、匯聚、核心的總頻寬一致,保證伺服器接入頻寬1:1的超載比。下圖所示的是該架構當k=4的示例。
圖3 k=4時的胖樹CLOS網路
顯然,當k=48,即採用48埠千兆盒式交換機時,這個架構的核心交換機數量為576個,一共有48個Pod,每個Pod有24臺匯聚交換機和24臺接入交換機,共2880個交換機,可以支援到27648臺千兆伺服器的1:1超載比接入。裝置的數量雖然看上去很驚人,但毫無疑問的確是一種可擴充套件的架構,而且似乎對裝置沒有特別的要求。
更令人鼓舞的是,這幾位教授除了紙上談兵外,還非常注重實戰,論文中詳細的對IP地址劃分、路由策略、流量排程演算法等進行了詳細設計,也和傳統的設計方法進行了成本和功耗方面的對比。更匪夷所思的是,大概這幾位老大也意識到交換機數量龐大帶來的裝置擺放和互聯線纜問題,甚至還給出了裝置打包和機架安排方案。一言以蔽之,只要你嚴格按照這篇論文進行設計,一個幾萬臺1:1頻寬超載比的千兆伺服器資料中心網路就呼之欲出,幾乎所有重要的問題都被周密的考慮到了。
另外,也可以將上述方案做一些變化,比如,將匯聚和核心裝置換成全萬兆埠的交換機,如現在流行的64埠萬兆交換機,接入換成萬兆上聯的交換機,如現在流行的4萬兆+48千兆的交換機,這樣同樣規模的網路情況下,裝置和互聯鏈路的數量可以大大減少。更具體的設計情況大家可以照貓畫虎自己研究一下:)
3、迷霧重重
到這裡,似乎問題都解決了,資料中心網路的設計工作者們多了一個選擇,對業界主流廠商裝置埠密度也不那麼飢渴了。
喜愛鑽研的設計者很快發現,其實CLOS網路架構是採用一個等價於三級CLOS的部分替代了傳統設計的兩臺核心裝置,如下圖所示:
圖4 傳統網路架構和CLOS網路架構
或者進一步說,是採用一個三級CLOS的部分替代一臺核心裝置。為什麼說是一個三級CLOS的部分,因為匯聚和核心都是雙向通訊,等價於一個標準的三級CLOS摺疊以後把輸入、輸出單元合併的情況。
主流廠商的核心裝置被一堆廉價的小盒子替代了,這是一個令人振奮的訊息,同時令人迷惑。
首先是無阻塞的問題。大家都知道網路核心無阻塞的重要性。商業市場的主流核心裝置通常都較為複雜,為了實現無阻塞,交換矩陣都有一定的加速比,還採用VoQ等技術,還要有排程仲裁或自路由的設計。那麼,一堆廉價的小盒子如何實現無阻塞那?
其次,緊接著的一個很明顯的問題,CLOS網路架構上下行的頻寬一致,是否就可以實現無阻塞?
還有,交換機的輸入輸出快取設計一直都是各主流裝置廠家各執一詞的,在CLOS網路架構中這部分如何體現的?
再有,CLOS網路架構的多條等價路徑如何做到負載均衡?HASH演算法是基於流的,不同流的差異無法解決;資料包是變長的,即便輪詢也難以均衡。要知道,核心交換機通常內部都會用定長的信元把資料包重新封裝以便於儘可能的均衡分佈。那麼CLOS網路架構是否需要一個集中的控制系統做流量排程?
繼續思考下去,就可能會發現更多不容易回答的問題。
似乎CLOS網路架構也並不是那麼簡單了。
4、如何實現無阻塞
首先我們看看什麼是有阻塞無阻塞。
·內部阻塞(Blocking)。若出、入線空閒,但因交換網路級間鏈路被佔用而無法接通的現象,稱為多級交換網路的內部阻塞。
·無阻塞(Non-blocking)。不管網路處於何種狀態,任何時刻都可以在交換網路中建立一個連線,只要這個連線的起點、終點是空閒的,而不會影響網路中已建立起來的連線。
·可重排無阻塞(Re-arrangeable non-blocking)。不管網路處於何種狀態,任何時刻都可以在交換網路中直接或對已有的連線重選路由來建立一個連線,只要這個連線的起點、終點是空閒的,而不會影響網路中已建立起來的連線。
·廣義無阻塞(Scalable non-blocking)。指一個給定的網路存在著固有的阻塞可能,但又可能存在著一種精巧的選路方法,使得所有的阻塞均可避免,而不必重新安排網路中已建立起來的連線。
那麼CLOS網路架構的阻塞情況如何那?根據資料中心的網路架構,我們研究之前圖2中的對稱3級結構的CLOS網路的情況就可以了。
這種對稱3級CLOS網路,第一級的入線和第三級出線均為n,第二級的單元數量為m。為了確保鏈路無阻塞,完成a到b的資訊交換,至少還應該存在一條空閒鏈路,即中間級交換單元要有(n-1)+(n-1)+1 = 2n-1個,因此無阻塞的條件為:m>=2n-1。如下圖所示:
圖5 對稱3級CLOS網路無阻塞條件為m>=2n-1
另外,Slepian-Duguid定理也證明了,當m=n的時候,對稱3級CLOS網路為可重排無阻塞。可重排無阻塞意味著要對交換網路做端到端的排程。
這也就直接證明了CLOS網路中無阻塞的設計,匯聚到核心的頻寬應該至少是接入到匯聚的頻寬的(2n-1)/n=2-1/n倍,接近2倍。
實際上,加利福尼亞大學那幾位教授也在他們的論文中明確的指出了設計採用頻寬超載比1:1的胖樹CLOS架構是可重排無阻塞的,需要採用合適的排程演算法儘可能滿足可重排條件。
那是不是滿足m>=2n-1的條件,就可以高枕無憂,肯定可以避免端到端的阻塞了那?當然不是,我們可以看到這時候無阻塞的模型前提是入向、出向資訊均勻分佈,如果分佈不均勻就可能導致入向或出向阻塞。這時候我們就需要考慮入向、出向快取以及加速比的情況。
5、玄妙的加速比Speedup
加速比的概念很直接,它是一種降低輸入-輸出阻塞的方法。如果一個交換網路可以在一個信元時間內將一個輸入埠的N個信元傳輸至輸出,則這個交換網路的加速比S=N。通俗的說,加速比是交換網路在“多打一”的情況下的處理能力。加速比越大,交換網路的中間單元數越多,成本越高。
我們很容易就可以算出,前面我們研究的交換網路,對稱3級CLOS架構,在無阻塞條件m>=2n-1時,加速比S=(2n-1)/n=2-1/n,接近於2。而在可重排無阻塞條件m=n時,加速比為1。
在加速比為1時,為了避免入向的阻塞即所謂的“頭端阻塞”,我們需要在交換網路的入方向有足夠大的快取,此時端到端的延遲將變得不可控,或者可能會非常大。如下圖所示:
圖6 入方向快取的交換模型,S=1
隨著加速比的增加,入方向的阻塞可能性越來越小,但出方向的阻塞可能性卻越來越大,因此,在加速比比1大的時候,我們需要在交換網路的出方向有足夠大的快取。當S=N(N為入方向埠總數)時,入方向無需快取,僅需要出方向的快取,此時,交換網路的成本最為昂貴,但延遲最小。如下圖所示:
圖7 出方向快取的交換模型,S=N
因此,加速比讓交換網路設計者們既愛又恨,但他們把愛和恨都轉化成了一個問題,那就是,有沒有可能進行巧妙的設計,在加速比1<S<<N的情況下,獲得接近S=N的效能和接近S=1的成本。
答案是有可能的。經過努力,業界人士得到的結論是,2<S<5的範圍是比較合理的,通過匹配適當的入向、出向快取,採用合適的排程演算法,可以獲得性能和成本較為均衡的一個交換網路。
據小道訊息,業界部分產品的交換矩陣的加速比如下(無官方確認,僅供參考):
Cisco
· Cat6500:4
· Nexus7000:3.x
· CRS-1: 2.5
H3C
· S12500: 1.8
Juniper
· T /MX Series: S=2.25
好了,繞了一大圈,我們再回過來看看對於我們的CLOS網路架構,加速比如何選擇比較合適。
還是先看加利福尼亞大學那幾位教授的設計方案。這個方案在加速比為1的情況下,採用了全域性集中的流量排程系統FlowScheduler直接控制匯聚和核心裝置的路徑選擇,以獲得較好的流量分佈,同時在每個接入交換機都內建FlowReporter收集流資訊。即便如此,在隨機流的測試中網路的頻寬利用率也不超過75%。顯然這個方案並不完美,並且難以在普通商業產品上實施,對於大多數希望採用CLOS架構的設計者來說,這是一個難以實現的方案。也許隨著OpenFlow等SDN技術的發展,這方面可以取得更大進展。Juniper的QFabric從某種程度來看,也類似一個有集中控制和排程的CLOS網路架構,目前很多設計細節還未披露,實際使用的效果如何也有待大規模商用的考驗。
按照之前的分析,如果沒有流量排程系統,在實際的情況下是無法避免入向或出向的阻塞的,只能儘可能降低阻塞的可能性。考慮到多條等價路徑負載均衡的不完美,以及廉價盒式裝置具備少許的輸入輸出快取,但無法全域性統籌調配使用,顯然一定的加速比是需要的。兼顧成本因素,選擇加速比為2~3也許是一個較為理想的選擇。準確的加速比選擇,需要進一步的實驗室測試和驗證,和裝置選型也有關。
6、總結
在資料中心網路中,可以採用商用市場普通盒式交換機搭建胖樹CLOS網路架構,實現可擴充套件、不依賴特定廠商產品的網路架構。但如果沒有全域性集中的流量排程和仲裁機制,也沒有全域性的入向和出向快取供調配使用,將難以實現目前商業市場核心裝置的無阻塞轉發能力,在網路發生阻塞時對應用的效能會產生一定的影響。通過適當的加速比選擇,如建議的2~3,可以減少阻塞。CLOS網路架構的設計需要進一步的研究、測試和驗證,在將來通過SDN來共同實現可能更為理想。