数据中心网络架构的问题与演进 — CLOS 网络与 Fat-Tree、Spine-Leaf 架构
目錄
文章目錄
目錄前文列表CLOS NetworkingSwitch Fabric胖樹(Fat-Tree)型網(wǎng)絡架構Fat-Tree 拓撲示例Fat-Tree 的缺陷葉脊(Spine-Leaf)網(wǎng)絡架構Spine-Leaf 的工作原理Spine-Leaf 的優(yōu)勢Spine-Leaf 的缺陷參考文檔
前文列表
《數(shù)據(jù)中心網(wǎng)絡架構的問題與演進 — 傳統(tǒng)路由交換技術與三層網(wǎng)絡架構》
《數(shù)據(jù)中心網(wǎng)絡架構的問題與演進 — 網(wǎng)絡虛擬化》
CLOS Networking
Charles Clos 曾經(jīng)是貝爾實驗室的研究員。他在 1953 年發(fā)表了一篇名為 “A Study of Non-blocking Switching Networks” 的文章。文章里介紹了一種 用多級設備來實現(xiàn)無阻塞電話交換 的方法,這是 CLOS 網(wǎng)絡的起源。
CLOS 網(wǎng)絡的核心思想是:用多個小規(guī)模、低成本的單元構建復雜,大規(guī)模的網(wǎng)絡。簡單的 CLOS 網(wǎng)絡是一個三級互連架構,包含了輸入級,中間級,輸出級。下圖中的矩形都是規(guī)模小得多的轉發(fā)單元,相應的成本也很低。簡單來說,CLOS 就是一種多級交換架構,目的是為了在輸入輸出增長的情況下盡可能減少中間的交叉點數(shù)。
下圖中,m 是每個子模塊的輸入端口數(shù),n 是每個子模塊的輸出端口數(shù),r 是每一級的子模塊數(shù),經(jīng)過合理的重排,只要滿足 r2≥max(m1,n3),那么,對于任意的輸入到輸出,總是能找到一條無阻塞的通路。
Switch Fabric
Switch Fabric 指交換機內部連接輸入輸出的端口,最簡單的 Switch Fabric 架構是 Crossbar 模型,這是一個開關矩陣,每一個 Crosspoint(交點)都是一個開關,交換機通過控制開關來完成輸入到特定輸出的轉發(fā)。一個 Crossbar 模型如下所示:
可以看出,這里的開關矩陣類似于一塊布的纖維,所以交換機內的架構被稱為 Switch Fabric(纖維),這是 Fabric 成為計算機網(wǎng)絡專業(yè)術語的起源。
隨著網(wǎng)絡規(guī)模的發(fā)展,交換機的端口數(shù)量逐漸增多。Crossbar 模型的交換機的開關密度,隨著交換機端口數(shù)量 N 呈 O(N^2) 增長。相應的功耗,尺寸,成本也急劇增長。在高密度端口的交換機上,繼續(xù)采用 Crossbar 模型性價比越來越低。大約在 1990 年代,CLOS 架構被應用到 Switch Fabric。應用 CLOS 架構的交換機的開關密度,與交換機端口數(shù)量 N 的關系是 O(N^(3/2)),所以在 N 較大時,CLOS 模型能降低交換機內部的開關密度。這是 CLOS 網(wǎng)絡模型的第二次應用。
>>> N = 100
>>> N**2
10000
>>> N**(3/2)
100
胖樹(Fat-Tree)型網(wǎng)絡架構
在 2008 年由美國加利福尼亞計算機科學與工程的幾位教授發(fā)表的一篇論文《A scalable, commodity data center network architecture》中,明確的提出了一種三級的,被稱之為胖樹(Fat-Tree)的 CLOS 網(wǎng)絡架構,標志著 CLOS 正式進入數(shù)據(jù)中心網(wǎng)絡架構領域,這是 CLOS 網(wǎng)絡模型的第三次應用。
當前,F(xiàn)at-Tree 是業(yè)界普遍認可的實現(xiàn)無阻塞網(wǎng)絡的技術。其基本理念是:使用大量低性能的交換機,構建出大規(guī)模的無阻塞網(wǎng)絡,對于任意的通信模式,總有路徑讓他們的通信帶寬達到網(wǎng)卡帶寬。Fat-Tree 的另一個好處是,它用到的所有交換機都是相同的,這讓我們能夠在整個數(shù)據(jù)中心網(wǎng)絡架構中采用廉價的交換機。
Fat-Tree 是無帶寬收斂的:傳統(tǒng)的樹形網(wǎng)絡拓撲中,帶寬是逐層收斂的,樹根處的網(wǎng)絡帶寬要遠小于各個葉子處所有帶寬的總和。而 Fat-Tree 則更像是真實的樹,越到樹根,枝干越粗,即:從葉子到樹根,網(wǎng)絡帶寬不收斂。這是 Fat-Tree 能夠支撐無阻塞網(wǎng)絡的基礎。
如上圖所示,為了實現(xiàn)網(wǎng)絡帶寬的無收斂,F(xiàn)at-Tree 中的每個節(jié)點(根節(jié)點除外)都需要保證上行帶寬和下行帶寬相等,并且每個節(jié)點都要提供對接入帶寬的線速轉發(fā)的能力。
下圖是一個 2 元 4 層 Fat-Tree 的物理結構示例(2 元:每個葉子交換機接入 2 臺終端;4 層:網(wǎng)絡中的交換機分為 4 層),其使用的所有物理交換機都是完全相同的。
從圖中可以看到,每個葉子節(jié)點就是一臺物理交換機,接入 2 臺終端;上面一層的內部節(jié)點,則是每個邏輯節(jié)點由 2 臺物理交換機組成;再往上面一層則每個邏輯節(jié)點由 4 臺物理交換機組成;根節(jié)點一共有 8 臺物理交換機。這樣,任意一個邏輯節(jié)點,下行帶寬和上行帶寬是完全一致的。這保證了整個網(wǎng)絡帶寬是無收斂的。同時我們還可以看到,對于根節(jié)點,有一半的帶寬并沒有被用于下行接入,這是 Fat-Tree 為了支持彈性擴展,而為根節(jié)點預留的上行帶寬,通過把 Fat-Tree 向根部繼續(xù)延伸,即可實現(xiàn)網(wǎng)絡規(guī)模的彈性擴展。
Fat-Tree 拓撲示例
假設一個 k-ary(每個節(jié)點有不超過 k 個子節(jié)點)的三層 Fat-Tree 拓撲:
核心交換機個數(shù) (k/2)^2
POD 個數(shù) k
每個 POD 匯聚交換機 k/2
每個 POD 接口交換機 k/2
每個接入交換機連接的終端服務器 k/2
每個接入交換機剩余 k/2 個口連接 POD 內 k/2 個匯聚交換機,每臺核心交換機的第 i 個端口連接到第 i 個 POD,所有交換機均采用 k-port  switch。
可以計算出,支持的服務器個數(shù)為 k * (k/2) * (k/2) = (k^3)/4,不同 POD 下服務器間等價路徑數(shù) (k/2) * (k/2) = (k^2)/4。上圖為最簡單的 k=4 時的 Fat-Tree 拓撲,連在同一個接入交換機下的服務器處于同一個子網(wǎng),他們之間的通信走二層報文交換。不同接入交換機下的服務器通信,需要走路由。
Fat-Tree 的缺陷
Fat-Tree 的擴展規(guī)模在理論上受限于核心層交換機的端口數(shù)目,不利于數(shù)據(jù)中心的長期發(fā)展要求;
對于 POD 內部,F(xiàn)at-Tree 容錯性能差,對底層交換設備故障非常敏感,當?shù)讓咏粨Q設備故障時,難以保證服務質量;
Fat-Tree 拓撲結構的特點決定了網(wǎng)絡不能很好的支持 One-to-All及 All-to-All 網(wǎng)絡通信模式,不利于部署 MapReduce、Dryad 等高性能分布式應用;
Fat-Tree 網(wǎng)絡中交換機與服務器的比值較大,在一定程度上使得網(wǎng)絡設備成本依然很高,不利于企業(yè)的經(jīng)濟發(fā)展。
因為要防止出現(xiàn) TCP 報文亂序的問題,難以達到 1:1 的超分比。
葉脊(Spine-Leaf)網(wǎng)絡架構
Spine-Leaf 網(wǎng)絡架構,也稱為分布式核心網(wǎng)絡,由于這種網(wǎng)絡架構來源于交換機內部的 Switch Fabric,因此也被稱為 Fabric 網(wǎng)絡架構,同屬于 CLOS 網(wǎng)絡模型。事實已經(jīng)證明,Spine-Leaf 網(wǎng)絡架構可以提供高帶寬、低延遲、非阻塞的服務器到服務器連接。
前面說過 CLOS 網(wǎng)絡是三級交換架構,而 Leaf Spine 卻只有兩層,這是因為:網(wǎng)絡架構中的設備基本都是雙向流量,輸入設備同時也是輸出設備,因此三級 CLOS 沿著中間層對折,就得到了兩層的網(wǎng)絡架構。可以看出傳統(tǒng)的三層網(wǎng)絡架構是垂直的結構,而 Spine-Leaf 網(wǎng)絡架構是扁平的結構,從結構上看,Spine-Leaf 架構更易于水平擴展。
從拓撲結構上看,Spine-Leaf 二層架構視乎要比傳統(tǒng)三層網(wǎng)絡架構簡單得多,但為什么 Spine-Leaf 直到近些年才能得到普及呢?筆者認為,技術成熟度固然是因素之一,再一個就是數(shù)據(jù)中心網(wǎng)絡發(fā)展過程中無法回避的成本問題。傳統(tǒng)三層網(wǎng)絡架構只有核心交換機是昂貴的 L3 交換機,但 Spine-Leaf 卻要求所有節(jié)點都應該是 L3 交換機。因此,Spine-Leaf 也只能在設備價格下降了的這些年才得以被推廣。
Spine-Leaf 的工作原理
Leaf Switch:相當于傳統(tǒng)三層架構中的接入交換機,作為 TOR(Top Of Rack)直接連接物理服務器。與接入交換機的區(qū)別在于 L2/L3 網(wǎng)絡的分界點現(xiàn)在在 Leaf 交換機上了。Leaf 交換機之上是三層網(wǎng)絡,Leaf 交換機之下都是個獨立的 L2 廣播域,這就解決了大二層網(wǎng)絡的 BUM 問題。如果說兩個 Leaf 交換機下的服務器需要通訊,需要通過 L3 路由,經(jīng)由 Spine 交換機進行轉發(fā)。
Spine Switch:相當于核心交換機。Spine 和 Leaf 交換機之間通過 ECMP(Equal Cost Multi Path)動態(tài)選擇多條路徑。區(qū)別在于,Spine 交換機現(xiàn)在只是為 Leaf 交換機提供一個彈性的 L3 路由網(wǎng)絡,數(shù)據(jù)中心的南北流量可以不用直接從 Spine 交換機發(fā)出,一般來說,南北流量可以從與 Leaf 交換機并行的交換機(edge switch)再接到 WAN router 出去。
Fabric 中的 Leaf 層由接入交換機組成,用于接入服務器,Spine 層是網(wǎng)絡的骨干(Backbone),負責將所有的 Leaf 連接起來。每個低層級的 Leaf 交換機都會連接到每個高層級的 Spine 交換機上,即每個 Leaf 交換機的上行鏈路數(shù)等于 Spine 交換機數(shù)量,同樣,每個 Spine 交換機的下行鏈路數(shù)等于 Leaf 交換機的數(shù)量,形成一個 Full-Mesh 拓撲。當 Leaf 層的接入端口和上行鏈路都沒有瓶頸時,這個架構就實現(xiàn)了無阻塞(Nonblocking)。并且,因為任意跨 Leaf 的兩臺服務器的連接,都會經(jīng)過相同數(shù)量的設備,所以保證了延遲是可預測的,因為一個包只需要經(jīng)過一個 Spine 和另一個 Leaf 就可以到達目的端。
因為 Fabric 中的每個 Leaf 都會連接到每個 Spine,所以,如果一個 Spine 掛了,數(shù)據(jù)中心的吞吐性能只會有輕微的下降(Slightly Degrade)。如果某個鏈路的流量被打滿了,Spline-Leaf 的擴容過程也很簡單:添加一個 Spine 交換機就可以擴展每個 Leaf 的上行鏈路,增大了 Leaf 和 Spine 之間的帶寬,緩解了鏈路被打爆的問題。如果接入層的端口數(shù)量成為了瓶頸,那就直接添加一個新的 Leaf,然后將其連接到每個 Spine 并做相應的配置即可。這種易于擴展(Ease of Expansion)的特性優(yōu)化了 IT 部門擴展網(wǎng)絡的過程。
Spine-Leaf 的優(yōu)勢
扁平化:扁平化設計縮短服務器之間的通信路徑,從而降低延遲,可以顯著提高應用程序和服務性能。
易擴展:如果 Spine 交換機的帶寬不足,我們只需要增加 Spine 節(jié)點數(shù),也可以提供路徑上的負載均衡;如果接入連接不足,則只需增加 Leaf 節(jié)點數(shù)。
低收斂比:容易實現(xiàn) 1:X 甚至是無阻塞的 1:1 的收斂比,而且通過增加 Spine 和 Leaf 設備間的鏈路帶寬也可以降低鏈路收斂比。
簡化管理:葉脊結構可以在無環(huán)路環(huán)境中使用全網(wǎng)格中的每個鏈路并進行負載平衡,這種等價多路徑設計在使用 SDN 等集中式網(wǎng)絡管理平臺時處于最佳狀態(tài)。SDN 允許在發(fā)生堵塞或鏈路故障時簡化流量的配置,管理和重新分配路由,使得智能負載均衡的全網(wǎng)狀拓撲成為一個相對簡單的配置和管理方式。
邊緣流量處理:隨著物聯(lián)網(wǎng)(IoT)等業(yè)務的興起,接入層壓力劇增,可能有數(shù)千個傳感器和設備在網(wǎng)絡邊緣連接并產(chǎn)生大量流量。Leaf 可以在接入層處理連接,Spine 保證節(jié)點內的任意兩個端口之間提供延遲非常低的無阻塞性能,從而實現(xiàn)從接入到云平臺的敏捷服務。
多云管理:數(shù)據(jù)中心或云之間通過 Leaf Spine 架構仍可以實現(xiàn)高性能、高容錯等優(yōu)勢,而多云管理策略也逐漸成為企業(yè)的必選項。
Spine-Leaf 的缺陷
但是,F(xiàn)abric 架構并非完美。葉子節(jié)點網(wǎng)絡設備無論是性能要求還是功能要求,均高于傳統(tǒng)架構下的接入設備,其作為各種類型的網(wǎng)關(二三層間、VLAN/VxLAN 間、VxLAN/NVGRE 間、FC/IP 間等等),芯片處理能力要求較高,目前尚無滿足所有協(xié)議間互通的商用芯片;由于不存在相關的標準,為了實現(xiàn)各種類型網(wǎng)絡的接入,其骨干節(jié)點與葉子節(jié)點間的轉發(fā)各個廠商均采用了私有封裝,這也為將來的互通設置了難題。除此之外,還有:
獨立的 L2 Domain 限制了依賴 L2 Domain 應用程序的部署。要求部署在一個二層網(wǎng)絡的應用程序,現(xiàn)在只能部署下一個機架下了。
獨立的 L2 Domain 限制了服務器的遷移。遷移到不同機架之后,網(wǎng)關和 IP 地址都要變。
子網(wǎng)數(shù)量大大增加了。每個子網(wǎng)對應數(shù)據(jù)中心一條路由,現(xiàn)在相當于每個機架都有一個子網(wǎng),對應于整個數(shù)據(jù)中心的路由條數(shù)大大增加,并且這些路由信息要怎么傳遞到每個 Leaf 上,也是一個復雜的問題。
參考文檔
https://www.sdnlab.com/22920.html
https://zhuanlan.zhihu.com/p/29975418
https://www.huawei.com/ucmf/groups/public/documents/attachments/hw_207074.pdf
https://zhuanlan.zhihu.com/p/31117062
https://zhuanlan.zhihu.com/p/64445886
https://zhuanlan.zhihu.com/p/30119950
總結
以上是生活随笔為你收集整理的数据中心网络架构的问题与演进 — CLOS 网络与 Fat-Tree、Spine-Leaf 架构的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Python中range()函数的用法
- 下一篇: Spark核心原理之Executor原理
