譯者序
本文內容翻譯自 Cisco 的白皮書 Cisco Data Center Spine-and-Leaf Architecture: Design Overview (2016),翻譯非逐字逐句,請酌情參考。
搜索 spine-leaf 資料時看到這篇非常棒的文檔,故通過翻譯的方式做個筆 記順便加深理解(不知是否有沒有中文版)。本文翻譯僅供個人學習交流,無任何商業目 的,如有侵權將及時刪除。
另外,發現思科、華為、華三等廠商的官網上都有大量的優秀文檔,其最終目的雖然是推介 產品,但其中關於基礎設施的內容大部分都是廠商無關的,可以作為很好的學習材料 。
由於譯者水平有限,本文不免存在遺漏或錯誤之處。如有疑問,請查閱原文。 優秀的英文技術文檔用詞都比較簡單直接,推薦有需要的讀者閱讀原文。
以下是譯文。
1 數據中心演進
數據中心是現代軟件技術的基石,在擴展企業能力的過程中扮演着關鍵角色。傳統的數據中 心使用三層架構(three-tier architecture),根據物理位置將服務器划分為不同 pod, 如圖 1 所示。
圖 1 傳統三層(Three-Tier)數據中心設計
這種架構由核心路由器、聚合路由器(有時叫分發路由器,distribution routers )和接入交換機組成。在接入交換機和聚合路由器之間運行生成樹協議(Spanning Tree Protocol,STP),以保證網絡的二層部分(L2)沒有環路。STP 有許多好處:簡單, 即插即用(plug-and-play),只需很少配置。每個 pod 內的機器都屬於同一個 VLAN, 因此服務器無需修改 IP 地址和網關就可以在 pod 內部任意遷移位置。但是,STP 無法 使用並行轉發路徑(parallel forwarding path),它永遠會禁用 VLAN 內的冗余路徑。
2010 年,Cisco 提出了 virtual-port-channel (vPC) 技術來解決 STP 的限制。 vPC 解放了被 STP 禁用的端口,提供接入交換機到匯聚路由器之間的 active-active 上行鏈路, 充分利用可用的帶寬,如圖 2 所示。使用 vPC 技術時,STP 會作為備用機制( fail-safe mechanism)。
圖 2 使用 vPC 技術的數據中心設計
從 2003 年開始,隨着虛擬化技術的引入,原來三層(three-tier)數據中心中,在二層( L2)以 pod 形式做了隔離的計算、網絡和存儲資源,現在都可以被池化(pooled)。這 種革命性的技術產生了從接入層到核心層的大二層域(larger L2 domain)的需求,如 圖 3 所示 。
圖 3 擴展的 L3 域的數據中心設計
隨着 L2 segment(二層網絡段,例如 VLAN 划分的二層網絡,譯者注)被擴展到所有 pod ,數據中心的管理員可以創建一個集中式的、更加靈活的、能夠按需分配的資源池。物理服 務器被虛擬化為許多虛擬服務器(VM),無需修改運維參數就可以在物理服務器之間自由漂 移。
虛擬機的引入,使得應用的部署方式越來越分布式,導致東西向流量( east-west-traffic)越來越大。這些流量需要被高效地處理,並且還要保證低的、可預測的延遲。 然而,vPC 只能提供兩個並行上行鏈路,因此三層數據中心架構中的帶寬成為了瓶頸。 三層架構的另一個問題是服務器到服務器延遲(server-to-server latency)隨着流量路 徑的不同而不同。
針對以上問題,提出了一種新的數據中心設計,稱作基於 Clos 網絡的 Spine-and-Leaf 架 構(Clos network-based Spine-and-Leaf architecture)。事實已經證明,這種架構可 以提供高帶寬、低延遲、非阻塞的服務器到服務器連接。
2 Spine-Leaf 架構
圖 4 是一個典型的兩級 Spine-and-Leaf 拓撲。
圖 4 典型的 Spine-and-Leaf 拓撲
在以上兩級 Clos 架構中,每個低層級的交換機(leaf)都會連接到每個高層級的交換機 (spine),形成一個 full-mesh 拓撲。leaf 層由接入交換機組成,用於連接服務器等 設備。spine 層是網絡的骨干(backbone),負責將所有的 leaf 連接起來。 fabric 中的每個 leaf 都會連接到每個 spine,如果一個 spine 掛了,數據中心的吞吐性 能只會有輕微的下降(slightly degrade)。
如果某個鏈路被打滿了,擴容過程也很直接:添加一個 spine 交換機就可以擴展每個 leaf 的上行鏈路,增大了 leaf 和 spine 之間的帶寬,緩解了鏈路被打爆的問題。如果接入層 的端口數量成為了瓶頸,那就直接添加一個新的 leaf,然后將其連接到每個 spine 並做相 應的配置即可。這種易於擴展(ease of expansion)的特性優化了 IT 部門擴展網絡的過 程。leaf 層的接入端口和上行鏈路都沒有瓶頸時,這個架構就實現了無阻塞(nonblocking)。
在 Spine-and-Leaf 架構中,任意一個服務器到另一個服務器的連接,都會經過相同數量 的設備(除非這兩個服務器在同一 leaf 下面),這保證了延遲是可預測的,因為一個包 只需要經過一個 spine 和另一個 leaf 就可以到達目的端。
3 Overlay 網絡
現代虛擬化數據中心的網絡要加速應用部署和支持 DevOps,必須滿足特定的前提 條件。例如,需要支持擴展轉發表、擴展網段、L2 segment extension、虛擬設備漂移(mobility)、轉發路徑優化、共享物理基礎設施上的網絡虛擬 化和多租戶等等。
雖然 overlay 的概念並不是最近才提出的,但因為它可以解決以上提到的問題,因此近幾 年這個概念又火了起來。最近專門針對數據中心提出的新的幀封裝格式(encapsulation frame format)更是為這個勢頭添了一把火。這些格式包括:
- VXLAN:Virtual Extensible LAN
- NVGRE: Network Virtualization Using Generic Routing Encapsulation
- TRILL: Transparent Interconnection of Lots of Links
- LISP: Location/Identifier Separation Protocol
overlay 網絡是共享底層網絡(underlay network)的節點之間互連形成的虛擬網絡,這使 得在不修改底層(underlay)網絡的情況下,可以部署對網絡拓撲有特定要求的應用,如圖 5 所示。
圖 5 網絡 Overlay 概念
overlay 虛擬化帶來的好處包括:
- 優化的設備功能:overlay 網絡使得可以根據設備在網絡中的位置不同而對設備進行 分類(和定制)。edge 或 leaf 設備可以根據終端狀態信息和規模優化它的功能和相關 的協議;core 或 spine 設備可以根據鏈路狀態優化它的功能和協議,以及針對快速收斂 進行優化。
- fabric 的擴展性和靈活性:overlay 技術使得可以在 overlay 邊界設備上進行網絡 的擴展。當在 fabric 邊界使用 overlay 時,spine 或 core 設備就無 需向自己的轉發表中添加終端主機的信息(例如,如果在宿主機內進行 overlay 的封 裝和解封裝,那 overlay 邊界就是在宿主機內部,譯者注)。
- 可重疊的尋址:數據中心中使用的大部分 overlay 技術都支持虛擬網絡 ID,用來唯 一地對每個私有網絡進行范圍限定和識別(scope and identify)。這種限定使得不同租 戶的 MAC 和 IP 地址可以重疊(overlapping)。overlay 的封裝使得租戶地址空間和 underlay 地址空間的管理分開。
本文檔將介紹 Cisco 過去幾年和當前提供的、以及不遠的將來應該會提供的幾種 Spine-and-Leaf 架構設計,這些設計都是為了解決現代虛擬化數據中心中 fabric 面臨的 需求:
- Cisco® FabricPath spine-and-leaf network
- Cisco VXLAN flood-and-learn spine-and-leaf network
- Cisco VXLAN Multiprotocol Border Gateway Protocol (MP-BGP) Ethernet Virtual Private Network (EVPN) spine-and-leaf network
- Cisco Massively Scalable Data Center (MSDC) Layer 3 spine-and-leaf network
下面的幾章將圍繞寫作本文時的一些最重要技術組件、通用設計和設計考慮(例如 L3 網關)進行討論。
最重要的技術組件包括:
- 封裝
- end-host 檢查和分發(end-host detection and distribution)
- 廣播
- 未知單播(unknown unicast)
- 組播流量轉發
- underlay 和 overlay 控制平面
- 多租戶支持
4 Cicso FabricPath Spine-and-Leaf 網絡
Cisco 在 2010 年推出了 FabricPath 技術。FabricPath 提供的新特性和設計選項使得網 絡管理員可以創建以太網 fabrics,后者可以提高帶寬可用性、提供設計靈活性,以及 簡化和降低網絡和應用的部署及運維成本。典型的 FabricPath 都是使用 Spine-and-Leaf 架構。
FabricPath 繼承了很多傳統 L2 和 L3 技術中的優良特性,它保留了 L2 環境易於配置和 即插即用的部署模型,並引入了一個稱為 FabricPath IS-IS(Intermediate System to Intermediate System)的控制平面協議。在 FabricPath 網絡中,給定任意一個 FabricPath 交換機作為目的端,最短路徑優先(shortest path first, SPF)路由協 議將用於判斷可達性以及尋找最優路徑。
這種設計的好處:
- 更穩定、更易擴展
- 快速收斂
- 像典型的 L3 路由環境一樣使用多個並行路徑(multiple parallel paths)的能力
4.1 封裝格式和標准兼容
FabricPath spine-and-leaf 網絡是 Cisco 的專利,但基於 TRILL 標准。它使用 FabricPath MAC-in-MAC 幀封裝。
4.1.1 Underlay 網絡
數據平面使用 L2 FabricPath MAC-in-MAC 封裝,控制面在 underlay 網絡中使用 FabricPath IS-IS。每個 FabricPath 交換機都有一個 FabricPath switch ID。Fabric IS-IS 控制平面構建可達性信息(reachability information),即 FabricPath 交換機 如何連接到其它 FabricPath 交換機。
4.1.2 Overlay 網絡
FabricPath 沒有 overlay 控制平面。overlay 網絡中的 end-host 信息是通過帶會話學 習功能的“泛洪-學習”機制學習的(flood-and-learn mechanism with conversational learning)。
4.2 廣播和未知單播流量
4.3 主機檢測和可達性
4.4 組播流量
4.5 L3 路由功能
4.5.1 在 Spine 層做內部和外部路由
4.5.2 在 Border Leaf 做內部和外部路由
4.6 多租戶
4.7 總結
表 1 Cisco FabricPath 網絡特性
5 Cicso VXLAN Flood-and-Learn Spine-Leaf 網絡
VXLAN 是網絡虛擬化 overlay 技術之一,有一些自己的優勢。它是一個工業標准( industry-standard)協議,使用 underlay IP 網絡。它將 L2 網絡進行擴展,在 L3 基礎設施之上構建出一個 L2 overlay 邏輯網絡。它將以太幀封裝到 UDP IP 包里面,通 過 underlay 網絡以正常的 IP 路由和轉發機制發送到對端 VTEP(VXLAN tunnel endpoint )。
Cisco 從 2014 年開始,陸續在多個 Nexus 系列(例如 Nexus 5600、7000、9000 系列)交 換機上支持 VXLAN flood-and-learn spine-and-leaf 技術。本節介紹這些硬件交換機 的 Cisco VXLAN flood-and-learn 特性。
5.1 封裝格式和標准兼容
Cisco VXLAN flood-and-learn 技術兼容 IETF VXLAN 標准(RFC 7348),后者定義了無控 制平面的基於組播的泛洪-學習 VXLAN(multicast-based flood-and-learn VXLAN without a control plane)。原始的 L2 幀封裝一個 VXLAN 頭,然后放到 UDP IP 包通過 IP 網絡 進行傳輸。
5.1.1 Underlay 網絡
使用 L3 IP 網絡作為 underlay 網絡。
使用 underlay IP multicast 減少 VXLAN 網段的主機之間泛洪的范圍。
每個 VXLAN segment 都有一個 VNI(VXLAN network ID),VNI 會映射到傳輸網絡中的一 個 IP 多播組。每個 VTEP 設備獨立配置多播組,參與 PIM 路由。基於參與的 VTEP 的位 置,會在傳輸網絡中形成這個組對應的多播分發樹(multicast distribution tree)。
這種方案需要在 underlay 網絡中開啟多播功能,而一些企業可能 並不想在他們的數據中心或 WAN 中開啟組播。
Cisco 9000 特色介紹:略(TODO)。
5.1.2 Overlay 網絡
這種設計沒有 overlay 網絡的控制平面。
它在 L3 IP underlay 網絡之上構建了一層 L2 overlay 網絡,通過 VTEP 隧道機制傳輸 L2 包。overlay 網絡使用 flood-and-learn 語義,如圖 11 所示。
圖 11 VXLAN overlay 網絡
5.2 廣播和未知單播流量
使用 underlay IP PIM 或 ingress replication 發送廣播和未知的單播(unknown unicast)流量。注意 ingress replication 只有 Cisco Nexus 9000 系列交換機才支持。
5.3 主機檢測和可達性
依賴初始的數據平面泛洪,每個 VXLAN segment 的 VTEP 能發現其他主機,學習遠端主機 的 MAC 和 MAC-to-VTEP 映射。MAC-to-VTEP 映射完成后,VTEP 接下來就通過單播轉發 VXLAN 流量。
5.4 組播流量
通過 underlay IP PIM 或 ingress replication 可以支持 overlay 租戶的 L2 組播。
L3 組播流量通過 L3 基於 PIM 的組播路由(L3 PIM-based multicast routing)實現。
略。
5.5 L3 路由功能
在一個傳統的 VLAN 環境中,很多情況下需要 VXLAN segment 和 VLAN segment 之間的路由。 典型的 VXLAN flood-and-learn spine-and-leaf 網絡設計中,leaf ToR (top-of-rack) 交換機會作為 VTEP 設備,在機櫃(rack)之間擴展 L2 segment。
VXLAN 和 VLAN 之間的 二層流量轉發時,VTEP 作為 L2 VXLAN 網關;三層流量路 由時,還需要開啟某些 VTEP 的 L3 VXLAN 網關功能。常見的設計有:內部和外部路由在 spine 層,或內部和外部路由在 leaf 層。這兩種設計都是集中式路由(centralized routing),即:三層的內部和外部路由功能都集中在特定的交換機上做。
5.5.1 在 Spine 層做內部和外部路由
圖 12 在 spine 上做內部和外部路由
圖 12 是在 spine 層做內部和外部路由的示意圖,leaf ToR VTEP 交換機作為 L2 VXLAN 網關,在 underlay 網絡上傳輸 L2 segment。spine 有兩功能:
- 作為 underlay 網絡的一部分,傳輸 VXLAN 封裝的包
- 做內部的 inter-VXLAN 路由,以及外部路由
內部和外部路由流量需要從 VTEP 經過 underlay 的一跳到達 spine,然后被 spine 路由。
注意,在使用 HSRP(Hot-Standby Router Protocol)和 vPC 的配置下,VXLAN 之間 active-active 網關的最大數量是兩個。另外,spine L3 VXLAN 網關會學習主機 MAC 地址,所以需要考慮 MAC 地址的規模,以免超出硬件的限制。
5.5.2 在 Border Leaf 做內部和外部路由
圖 13 在 Border Leaf 上做內部和外部路由
在 Border Leaf 上做內部和外部路由如圖 13。
leaf ToR VTEP 交換機作為 L2 VXLAN 網關,在 underlay 網絡上傳輸 L2 segment。spine 是 underlay 網絡的一部分,它並不學習 overlay 主機的 MAC 地址。border leaf 路由器 承擔 L3 VXLAN 網關功能,負責 inter-VXLAN 路由和外部路由。
內部和外部路由流量需要從 VTEP 經過 underlay 的兩跳(先到 spine 再到 border leaf)到達 border leaf,然后才能被路由到外部網絡。
同樣,在使用 HSRP 和 vPC 的配置下,inter-VXLAN active-active 網關的最大數量是兩 個。另外,border leaf L3 VXLAN 網關會學習主機 MAC 地址,所以需要考慮 MAC 地 址的規模,以免超出硬件的限制。
5.6 多租戶
5.7 總結
表 2 Cisco VXLAN flood-and-learn 網絡特性
6 Cicso VXLAN MP-BGP EVPN Spine-Leaf 網絡
RFC 7348 定義的 VXLAN flood-and-learn 模型中,end-host(終端主機)學習和 VTEP 發現都是基於數據平面,並沒有控制平面來在 VTEP 之間分發 end-host 可達性 信息。為了克服這種方案的一些限制,Cisco VXLAN MP-BGP EVPN Spine-and-Leaf 架構使 用了 MP-BGP EVPN 作為 VXLAN 的控制平面。
這種設計使得控制平面和數據平面分離,並且為 overlay 網絡的 L2/L3 轉發提供了統 一的控制平面。本節介紹這種方案中 Cisco 硬件交換機(例如 Cisco Nexus 5600 、7000、9000 系列)上的應用。
6.1 封裝格式和標准兼容
使用 VXLAN 封裝,原始 L2 幀加一層 VXLAN 頭然后封裝到 UDP-IP 包進行傳輸。
與 IETF RFC 7348 和 draft-ietf-bess-evpn-overlay 標准是兼容的。
6.1.1 Underlay 網絡
使用 L3 IP 網絡作為 underlay 網絡。
6.1.2 Overlay 網絡
使用 MP-BGP EVPN 作為 VXLAN overlay 網絡的控制平面協議。
6.2 廣播和未知單播流量
使用 underlay IP PIM 或 ingress replication 特性發送廣播和未知單播流量。
underlay 開啟 IP 組播的情況下,每個 VXLAN segment,或者 VNI,都會映射到 underlay 的一個 IP 組播組(multicast group)。每個 VTEP 設備獨立配置組播組,參與 PIM 路由 。基於參與的 VTEP 的位置,會在傳輸網絡中形成這個組對應的多播分發樹(multicast distribution tree)。
如果使用 ingress replication 特性,那 underlay 就無需組播了。VTEP 之間通過 VTEP 的 IP 地址發送廣播和未知單播流量。這些 IP 地址是通過 BGP EVPN 控制平面在 VTEP 之 間交換的,或者通過靜態配置。
6.3 主機檢測和可達性
MP-BGP EVPN 控制平面提供內置的路由和轉發(功能),它會對 VXLAN overlay 網絡內的 end-host 的 L2/L3 可達性信息進行分發(distribution)。
每個 VTEP 從與它相連的主機中自動學習 MAC 地址(通過傳統的 MAC 地址學習)和 IP 地址信息(基於 ARP snooping),然后通過控制平面進行分發,因此遠端主機的信息是 控制平面同步過來的。這種方式避免了通過網絡泛洪學習遠端主機信息的問題,為 end-host 可達性信息的分發提供了更好的控制。
6.4 組播流量
使用 underlay IP 組播或 ingress replication 特性,可以支持 overlay 租戶的 L2 組 播。
通過外部路由器上 L3 PIM-based multicast 路由,可以支持 overlay 租戶的 L3 組播。
6.5 L3 路由功能
L3 路由需要解決兩個問題:
- VXLAN 網絡內部的路由:使用分布式任播網關(distributed anycast gateways)解決
- VXLAN 網絡和外部網絡(包括園區網、WAN 和互聯網)的路由:在幾個特定交換機上實現
6.5.1 分布式任播網關:解決 VXLAN 網絡內部路由
在 MP-BGP EVPN 網絡中,一個 VNI 內的任意一個 VTEP 都可以作為它所在子網的分布式 任播網關,對它們配置相同的虛擬網關 IP 和虛擬網關 MAC 即可,如圖 16 所示。
EVPN 的這種任播網關功能,使得 VNI 內的主機可以將本地 VTEP 作為其網關,將跨網段的 流量發送到 VTEP 設備。這使得 VXLAN 網絡中從主機出來的北向流量可以達到最優轉發。 分布式任播網關還給 overlay 網絡帶來了透明主機漂移(transparent host mobility)的 好處。因為一個 VNI 的所有 VTEP 設備上的網關 IP 和 MAC 地址都是相同的,當一個主機 從一個 VTEP 移動到另一個 VTEP 后,它無需發送 ARP 請求來重新學習網關的 MAC 地址。
圖 16 內部路由的分布式任播網關
6.5.2 在 Border Leaf 做外部路由
圖 17 Border Leaf 做外部路由的設計
圖 17 是典型的通過一對 border leaf 交換機連接到外部路由設備的設計。Border leaf 在 VXLAN 網絡側運行 MP-BGP EVPN,和網絡內的 VTEP 交換 EVPN 路由。同時,它在租戶 VRF 實例中運行普通的 IPv4 或 IPv6 單播路由協議和外部路由設備交換路由信息。路由協 議可以是常規 eBGP,或任何內部網關協議(IGP)。Border leaf 將學習來的外部路由 以 EVPN 路由的形式通告到 EVPN 域,因此 VTEP 就能學習到外部路由,然后就可以發送出 VXLAN 網絡的流量。
也可以配置 border leaf 將學習到的 L2 VPN EVPN 地址族到 IPv4 或 IPv6 單播地址族的 路由,通告到外部路由。在這種設計中,租戶流量需要經過 underlay 的兩跳(VTEP 到 spine 到 border leaf)到達外部網絡。然而,這種情況下 spine 只需要運行 BGP-EVPN 控 制平面和 IP 路由,無需支持 VXLAN VTEP 功能(即,無需支持 VXLAN 的封裝和解封裝, 譯者注)。
6.5.3 在 Border Spine 做外部路由
圖 18 Border Spine 做外部路由的設計
圖 18 是典型的通過一對 border spine 交換機連接到外部路由設備的設計。這種設計中, spine 需要支持 VXLAN 路由。spine 在 VXLAN 網絡側運行 MP-BGP EVPN,和 VTEP 交換 EVPN 路由信息。同時,它在租戶 VRF 實例中運行普通的 IPv4 或 IPv6 單播路由協議和外部路由設備交換路由信息。路由協 議可以是常規 eBGP,或任何內部網關協議(IGP)協議。spine 將學習來的外部路由 以 EVPN 路由的形式通告到 EVPN 域,因此 VTEP 就能學習到外部路由,然后就可以發送出 VXLAN 網絡的流量。
也可以配置 spine 將學習到的 L2 VPN EVPN 地址族到 IPv4 或 IPv6 單播地址族的 路由,通告到外部路由。在這種設計中,租戶流量只需經過 underlay 的一跳(VTEP 到 spine)就可以到達外部網絡。然而,這種情況下 spine 需要運行 BGP-EVPN 控制平面和 IP 路由,以及支持 VXLAN VTEP 功能。
6.6 多租戶
作為 MP-BGP 的擴展,MP-BGP EVPN 繼承了 VPN 通過 VRF 實現的對多租戶的支持。
在 MP-BGP EVPN 中,多個租戶可以共存,它們共享同一個 IP 傳輸網絡(underlay),而 在 VXLAN overlay 網絡中擁有獨立的 VPN,入圖 19 所示。
圖 19 Cisco VXLAN MP-BGP EVPN Spine-and-Leaf 網絡的多租戶
在 VXLAN MP-BGP EVPN spine-and-leaf 網絡中,VNI 定義了二層域,不允許 L2 流量跨越 VNI 邊界。類似地,VXLAN 租戶的三層 segment 是通過 VRF 技術隔離的,通過將不同 VNI 映射到不同的 VRF 實例來隔離租戶的三層網絡。每個租戶都有自己的 VRF 路由實例。同一 租戶的 VNI 的不同子網,都屬於同一個 L3 VRF 實例,這個 VRF 將租戶的三層路由與其他 租戶的路由隔離開來。
6.7 總結
控制平面學習到 end-host 的 L2 和 L3 可達性信息(MAC 和 IP),然后通過 EVPN 地址 族分發這些信息,因此提供了 VXLAN overlay 網絡的橋接和路由功能。這種方案減少了網 絡泛洪,以及本地 VTEP 上的 ARP suppression。三層內部流量直接通過 ToR 上的分布式 網關路由,擴展性(scale-out)比較好。
表 3 Cisco VXLAN MP BGP EVPN 網絡特性