通常來說,如果一個數據中心伺服器規模超過10萬臺,就可以稱large-scale datacenter,也就是常說的大規模數據中心。大規模數據中心對於網路的要求有很多,但是最突出的就在於穩定和簡單。

這兩點要求本身也有一定的關聯性。比如,大規模數據中心因為網路設備數量多,所以從統計學的角度來說,出故障的頻率也更高。這裡說的故障,不僅包括設備本身出現的硬體軟體問題,還包括因為運維過程中對設備誤操作引起的故障。因此,一個簡單的網路設計,例如採用統一的硬體連接方式,使用有限的軟體功能,能減少故障概率,從而一定程度提升整個網路架構的穩定性。

但是,或許不只對於IT行業,對於任何領域,用簡單的方法去解決一個複雜的問題,本身就不簡單。因此,這一次分析一下如何用CLOS架構,來「簡單的」管理大規模數據中心的網路。

CLOS架構

CLOS架構被廣泛應用在現代的數據中心,因為它提供了數據中心的水平擴展能力和大規模數據中心所需要的穩定和簡單。下圖就是一個最基本的CLOS單元,Spine和Leaf交換機共同組成數據中心網路,其中Leaf交換機作為TOR交換機,連接伺服器;Spine交換機,為Leaf交換機提供網路連接。

水平擴展能力

--

想要擴展一個CLOS網路架構,通常有兩種方法,第一就是增加設備的埠數;第二就是增加更多的層級。

通過增加交換機埠數量,可以連接更多的伺服器,如下圖所示,埠數量擴大一倍,數據中心規模也擴大了一倍。

也可以增加CLOS架構的層級數。上面圖中都是3-stages CLOS架構,雖然只有兩層交換機,但是因為對應CLOS的理論,是一個對摺了的架構,所以被稱為3-stages。

在現有的spine-leaf基礎上,再增加一層super-spine交換機,就可以構成一個5-stages CLOS架構。如下圖所示,增加了一層super-spine交換機,數據中心規模也水平擴大了一倍。

穩定簡單

--

從第一眼來看,CLOS架構是簡單的。根據CLOS理論,所有的交換機,不論是Super Spine,Spine和是Leaf,都應該採用同質的交換機。雖然實際應用和文中圖裡面,都不一定嚴格按照這個要求來,但是至少是照著這個樣式去實現。所以從硬體構成來看,較為簡單。

其次,CLOS架構採用的是一個純L3網路的架構,也就是說所有的交換機都是三層交換機,交換機之間都通過IP網路連接的。所以,從網路連接來看,也較為簡單。畢竟,傳統三層網路架構,要涉及到L2連接,L3連接,VLAN配置等等。

穩定包含很多,除了相對簡單的設計,還有就是減少故障範圍。0故障是不可能的,這輩子都不可能0故障。我們能做的是限制故障的範圍,而CLOS架構下,每個Leaf交換機下都是一個獨立的L2 Domain,這樣可以將所有二層網路的問題,例如BUM風暴,限制在一個Leaf交換機範圍內。

所以最終網路架構的IP地址分佈如下:

看起來似乎很美好,但是相比較傳統的三層網路,CLOS架構也有自己的問題,其中包括但不限於以下幾點:

  • 獨立的L2 Domain限制了依賴L2 Domain應用程序的部署。要求部署在一個二層網路的應用程序,現在只能部署下一個機架下了。
  • 獨立的L2 Domain限制了伺服器的遷移。遷移到不同機架之後,網關和IP地址都要變,這誰也受不了。
  • 子網數量大大增加了。每個子網對應數據中心一條路由,現在相當於每個機架都有一個子網,對應於整個數據中心的路由條數大大增加,並且這些路由信息要怎麼傳遞到每個Leaf上,也是一個複雜的問題。

前兩點都可以通過VxLAN來解決,VxLAN將應用網路和基礎網路解耦開,這是其最大價值和流行的最主要原因(個人認為沒有之一)。至於解決VLAN ID不夠的問題,只能說是一個膚淺的標籤,畢竟不是誰都做公有雲,企業數據中心內部署,大部分連4000個TAG都用不完。

路由協議選擇

配置各種協議最終在物理鏈路連通的基礎上將整個數據中心網路打通,是數據中心網路運維最複雜的工作,也是各位網工朋友的主要負擔。傳統的三層網路架構,因為是一個L2和L3混合的網路,因此STP(以及STP的改良版RSTP,MST),VLAN,OSPF,EIGRP,IBGP都需要做相應的配置。

CCIE就是在一個約50臺網路設備的環境裏,在6個小時內,將這些配置配通。在一個大規模的數據中心,對應的網路設備是數千臺,如果還按照這個配置跑的話,運維成本太高,這也是傳統三層網路架構被取代的原因之一。

那如何為CLOS架構選取一個合適的路由協議?常規的選項是使用且僅使用EBGP。

BGP一直以IBGP的形式來構建數據中心內部網路,而且是構建在IGP,例如OSPF之上的。而EBGP一般用來連接不同的數據中心。但是在CLOS架構中,EBGP,卻是最合適的一個協議,因為它能極大簡化實現。

首先因為現在路由條目數增多,這樣的量級只有BGP能穩定維護。

其次,因為現在每個Leaf Switch,都管理一個獨立的子網。而數據中心內網路連通的前提是,每一個Leaf Switch的子網,都需要傳給其他所有的Leaf Switch。這樣,相當於每個Leaf Switch都是一個自治域(AS),現在要實現的就是實現所有的自治域的連通。這個問題,就是EBGP在互聯網上正在解決的問題。

因此在CLOS架構下,採用了EBGP作為路由協議,具體細節有以下幾點:

  • EBGP連接都是單跳。這樣就不用依賴IGP構建nexthop網路,EBGP的nexthop都在鏈路的另一端。
  • 採用ASN中保留給數據中心內部的ASN 64512到65534,共1023個ASN。
  • 所有Super Spine共用一個唯一的ASN。
  • 每組Spine共用一個唯一的ASN。
  • 每個Leaf有一個唯一的ASN。

所以最後整個CLOS網路架構中EBGP連接示意圖如下。

EBGP與IBGP的一個最大不同在於,EBGP會轉發路由,因此藉助Spine和Super Spine上面EBGP程序的轉發,一個Leaf的子網信息,可以發布給所有其他Leaf交換機,從而實現全數據中心內網路聯通。

但是這裡有一個問題,在大規模數據中心裏面,按照10萬條伺服器,一個機架40臺伺服器算的話,總共會有2500個Leaf交換機,這樣,光是Leaf就把 ASN消耗完了。為瞭解決這個問題,可以使用4位元組的ASN(RFC6793);也可以在一組Spine下面,復用ASN,如下圖所示:

復用ASN的話,為了避免EBGP的 AS loop detection,需要把EBGP的allowas-in給打開。這樣,左邊64701對應的Leaf發出的路由,就可以被右邊64701對應的Leaf接收。

通過這樣的EBGP連接,很自然就實現了ECMP,而ECMP又是CLOS架構的核心所在。

所以,僅通過EBGP,就是實現了CLOS架構中網路連接需要的全部內容。相比較傳統三層網路架構,CLOS架構這裡又以簡單勝出。


推薦閱讀:
相關文章