ceph&雲計算

前言

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是全局生效的),簡化控制複雜度。

原文鏈接 http://www.sdnlab.com/19236.html

(function () { ('pre.prettyprint code').each(function () { var lines = (this).text().split(\n).length;var numbering = $('
    ').addClass('pre-numbering').hide(); (this).addClass(hasnumbering).parent().append( numbering); for (i = 1; i
發佈了47 篇原創文章 · 獲贊 74 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章