1. 程式人生 > >SDN在雲資料中心的架構

SDN在雲資料中心的架構

前言

SDN概念一直如火如荼,若是要談到概念落地及大規模應用,一定離不開SDN在雲端計算資料中心的實踐應用。雲資料中心對網路提出了靈活、按需、動態和隔離的需求,SDN的集中控制、控制與轉發分離、應用可程式設計這三個特點正巧能夠較好的匹配以上需求。SDN,可以看為是軟體開發和網路技術的混合領域。本文站在雲資料中心網路維護工程師的角度,給大家分享SDN與雲資料中心結合的前世今生。

一、雲資料中心為什麼要引入SDN

雲端計算近十年來受到網際網路、IT和電信業共同的關注,雲端計算技術的快速發展和廣泛應用使得資料中心的業務形態產生了很大的變化。目前資料中心業務聚焦在Iaas層,即雲端計算資料中心利用自身所擁有的計算、儲存、網路、軟體平臺等資源向租戶提供Iaas虛擬資源出租。典型的IaaS資源包含雲主機(虛擬機器)、物件儲存、塊儲存、VPC專用網路(VPC,Virtual Private Network虛擬私有云)、公網IP、頻寬、防火牆、負載均衡等產品。

在網路層面,假設暫不考慮公網IP、頻寬等衍生網路產品,僅是雲主機,網路上最基本的技術要求就是可遷移性和隔離性。可遷移性,通常是指雲主機在資料中心具備自動恢復能力。當雲主機所在宿主機(物理伺服器)出現宕機時,雲主機能夠自動遷移至另一臺正常執行的物理伺服器上且IP保持不變。隔離性通常可以分為兩個層面,一是不同租戶間的網路隔離,鑑於安全考慮,不同租戶間內部網路不可達;二是同一租戶內部不同子網(vlan)間的隔離,為業務規模較大的租戶提供的多層組網能力。

因雲主機遷移IP不能變,進而要求網路需處於二層環境中,早期雲資料中心在組網上通常是採用大二層技術。大二層技術,簡單理解就是整個資料中心是一個大二層環境,雲主機閘道器都位於核心裝置上。一想到二層環境,肯定離不開廣播風暴,也離不開遏制廣播風暴的生成樹協議。全網都用生成樹協議,勢必會阻塞較多的網路鏈路,導致網路鏈路利用率不足。為了解決利用率不足的問題,思科VPC(這個跟上文的VPC不一樣,virtual port channel虛擬埠轉發)技術和華為華三的IRF堆疊技術應運而出。簡單的理解,上面兩種技術都是對生成樹協議的欺騙,最終使被生成樹協議阻塞鏈路轉變為可使用狀態,提升鏈路使用率。結合大二層技術使用的租戶隔離方式有兩種常用的,一個是vlan隔離,一個是VRF(Virtual Routing Forwarding虛擬路由轉發)隔離。若是採用vlan隔離,通常需要把雲主機閘道器終結在防火牆上,這樣才能滿足租戶間安全隔離的需求。這種模式下,一般是一個租戶對應一個vlan;針對同一租戶有多子網的需求,則需要在閘道器裝置防火牆上通過較為複雜策略來實現。若是採用VRF隔離的方式,通常是把雲主機閘道器終結在高階交換機或者路由器上,一個租戶對應一個VRF。針對同租戶有多子網的需求,則是一個VRF+多個vlan的模式。

受限於vlan/VRF規模,無論是“大二層+vlan”還是“大二層+VRF”,都存在雲資料中心租戶數量不超過4096個的限制,同時也不允許租戶間的IP地址段衝突。在加上傳統IP網路架構在虛擬化、靈活配置和可程式設計方面能力不足,在雲資料中心網路服務業務鏈編排上也有所制約。為了解決上述問題,出現了在雲資料中心網路中引入了SDN的技術潮。

二、SDN在雲資料中心的系統架構

SDN的3+2架構模型,從上到下分為應用層、控制層和轉發層。以控制層為基準點定義了兩個外部介面,其中,向上為應用提供自定義業務功能的API稱為北向介面,向下控制使用底層網路資源的API稱為南向介面。常用的北向介面標準是Restful,常用的南向介面標準是Openflow。

SDN的3+2架構模型相信大家都不陌生。SDN在雲資料中心跟雲管理平臺(以Openstack為例)整體融合考慮時,比較常見的系統架構如下所示。針對下圖進行幾個說明,說說為什麼常用這種模式:


1、關於系統層級的劃分

推薦的SDN系統層次劃分中,雲資料中心運營管理平臺和Openstak統一被定義為應用層,獨立的SDN控制器裝置構成控制層,底層網路裝置構成了轉發層。在業界關於Openstack資料中心繫統層級,除了圖中所示,還有另外一種劃分方式。在另一種劃分方式中,是把Openstack的Neutorn當成是控制層,由neutron直接對接底層網路裝置。在伺服器規模較大的雲資料中心,尤其是採用虛擬交換機時,控制器跟網路裝置(虛擬交換機)之間的互動流量是比較大的。在實際部署中,通常會引用商業版的SDN控制器。商業版的SDN控制器與Neutron的對接,主要體現在於Neutron外掛上。

Neutron是Openstack的網路管理模組。Neutron主要由Neutron server、外掛代理(Plugin Agent)構成。Neutron Server包含守護程序Neutron-server和各種外掛Neutron-*-plugin。守護程序Neutron-server對外暴露API介面,配置管理網路外掛,並把來自API的呼叫請求傳給已經配置好的外掛進行後續處理;外掛Plugin分為core和additional兩類,需要訪問資料庫來維護各種配置資料和對應關係。外掛代理(Plugin Agent)通常位於計算伺服器上,與Neutron上的外掛進行通訊,名字為Neutron-*-agent,通常與Neutron上的各種外掛Neutron-*-plugin相對應。Neutron預設的core plugin是ML2。若是引入商業版的SDN控制器,需要安裝對應的core plugin用來取代ML2,同時也需要安裝對應的外掛代理。在這種情況下,SDN控制器通過Neutron core plugin與neutron server進行通訊連線,通過控制器南向介面納管底層網路裝置,例如通過openflow下發流表。

2、關於管理流量和業務流量的區分:

為保障雲資料中心的網路資訊保安和流量走向有序,基於資料型別將系統架構劃分管理和業務兩個平面。管理流量(雲平臺、控制器及網路裝置之間控制流量)跑在管理域交換裝置構建物理的通道上,業務流量(所有租戶的業務流量)跑在業務域交換裝置構建物理的通道上。兩個資料通道完全隔離,物理獨立。上圖中的虛線為系統管理流量,實線為使用者業務流量。管理平面並無特殊的組網需求,依舊採用傳統組網。業務平面承載資料中心全部使用者資料流量,需要考慮前面提到的虛擬機器遷移大二層、租戶隔離以及IP允許衝突等組網需求。雲資料中心在業務平面通常採用vxlan的組網模式。需要澄清一點的是,Openstack的Neutron支援多種業務平面的組網模式,如flat, VLAN, GRE 和VXLAN。在雲資料中心選擇XVLAN的組網,主要是為了滿足前面提到的三個組網需求。

Vxlan,簡單理解就是隧道報文封裝。原始乙太網資料包,包括原始IP/MAC地址和vlan等報頭資訊,均成為vlxan的報文內容。Vxlan包頭,包含vxlan隧道兩端VTEP(進行vxlan封裝的網路裝置)的IP/MAC地址和vxlan裝置對應的vlan,與原始乙太網報文無關。在這裡,有三個網路標識要拎出來。

  • 第一個是外層802.1Q,位於vxlan報文封裝的包頭,是vxlan裝置對應的vlan,也叫做underlay網路的vlan,為全域性vlan。
  • 第二個是內層802 .1Q,位於原始以太報文內部,是原始使用者資料對應的vlan,也成為本地vlan,僅在使用者的虛擬機器上聯的vxlan裝置內部有效。
  • 第三個是vxlan的隧道標識,也叫做VNI,是區分vxlan隧道的關鍵。Vxlan標識位有24位,即最多可支援2^24個,數量上遠遠勝出vlan/VRF。


業務平面引入vxlan組網,vxlan和租戶/租戶網路之間的關係是雲資料中心的組網模型重點。以一個雲資料中心的典型租戶VPC為例,分別分析vlan、VRF和vxlan組網的隔離模型。假設租戶有2個子網,分別是子網A(192.168.100.0/24)和子網B(10.100.1.0/24),同子網二層互通,跨子網三層互通。

  • 若是在vlan組網中,子網A和子網B分別對應為兩個vlan,vlan的閘道器終結在防火牆上,通過防火牆策略實現跨子網互通。
  • 若是在VRF+vlan的組網中,租戶對應為一個VRF,子網A和B分別對應兩個vlan,VRF關聯兩個vlan實現三層互通。
  • 若是在vxlan的組網中,需要理解前面提到的本地vlan和vxlan VNI和全域性vlan這三個概念。Vxlan裝置是封裝和解封vxlan的邊緣裝置,因此以vxlan裝置為介面,形成了全域性vlan域和本地vlan隔離域。全域性vlan域是vxlan裝置和業務域傳統網路裝置構建的區域,此vlan是在資料中心業務域全域性生效的。以下圖為例,全域性vlan標識為10,是vxlan裝置與傳統網路互連的二層標識,一般是在組網初始化時就確定了,後續不會更改。Vm至vxlan裝置之間是本地隔離域,vlan僅在本地生效。在不同的本地隔離域中,使用者每一個子網分別對應一個vlan,同一個子網的本地vlan標識可以相同也可以不同。如圖所示,子網A在vxlan裝置1構建的隔離域中對應為vlan100,在vxlan裝置2構建的隔離域中對應為vlan200。在vxlan組網環境中,尤為關鍵的是vxlan的VNI標識。VNI標識也是在業務域全域性生效的。業界常用方式是,使用者的每個子網對應一個vlxan隧道,即一個VNI標識。跨子網通訊也對應一個vlxan隧道。如圖所示,子網A內部通訊的vlxan VNI是10003,子網B內部通訊的vlxan VNI是10002,子網A和子網B之間通訊的vlxan VNI是10001。SDN控制器需要分配並存儲雲資料中心使用者的vpc網路和底層網路裝置本地vlan/vxlan的正確對映關係,設計並下發合適的流表至vxlan,確保業務流量的正常訪問。


3、關於物理交換機和虛擬交換機的選擇:

在SDN雲資料中心,進行vxlan封裝的可以是物理交換機也可以是虛擬交換機。通常把基於虛擬交換機實現vxlan封裝的稱為軟體解決方案,基於物理交換機實現封裝的稱為硬體解決方案。這兩種方案各有優劣,雲資料中心可以基於自身業務模型和規模進行適配選擇。

在軟體解決方案中,每臺硬體伺服器上都有虛擬交換機來承載vxlan的封裝/解封裝。以開源OVS為例,虛擬交換機有br-int和br-tun兩個網橋,br-tun承載vlxan功能。也有其他的商用解決方案,僅有一個網橋來實現全部通訊功能。控制器跟大量的虛擬交換機的控制流量互動,是方案的難點。尤其是虛擬交換機有首包請求機制時,控制器的壓力比較大。

在硬體解決方案中,通常由接入交換機來承載vlxan的封裝/解封裝。接入交換機通常是下掛24/48的硬體伺服器,在同規模資料中心的軟體方案相比,大大減少了vxlan裝置數量。一些商業解決方案中,接入交換機通常會跑bgp evpn,用來在控制平面互動主機路由等關鍵資訊。在硬體解決方案中,通常也會採用上面提到的本地vlan/全域性vxlan/全域性vlan這三個隔離概念。因為vxlan裝置的本地隔離域很大,使用者間隔離及使用者內部互通流量模型極為複雜。為了區分不同使用者,通常會在vxlan裝置引入VRF,即一個使用者對應一個VRF(VRF是全域性生效的),簡化控制複雜度。