1. 程式人生 > >數據中心 CLOS 架構

數據中心 CLOS 架構

千兆 以及 sco 地址 消息 也有 復雜 sca har

1、數據中心網絡架構挑戰
  隨著技術的發展,數據中心的規模越來越大,一個數據中心的服務器容量從幾年前的幾千臺服務器發展到今天的幾萬甚至幾十萬臺。為了降低網絡建設和運維成本,數據中心網絡的設計者們也竭力將一個網絡模塊的規模盡可能擴大。同時,數據中心網絡內部東西向流量也日益增加,在一些集群業務的需求驅動下,數據中心網絡設計者們甚至開始討論一個網絡模塊內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來共同實現可能更為理想。

數據中心 CLOS 架構