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