雲計算,雲裏霧裏計算

《騰雲》觀後感,純屬個人技術總結,可能與作者觀點有出入。

1 TRILL/FabricPath/SPB

首先肯定是傳統二層網絡有哪些困境或者不給力的地方嘍:1 STP阻塞掉一半鏈路,浪費帶寬;2 接入交換機MAC地址表空間會過大;3 爲了二層互聯而設置的三層網管限制了虛擬機的漂移。

關於MAC地址表詳細說明一下:

因爲傳統的二層交換機是通過學習來建立MAC地址表的。怎麼學習呢,接入交換機會利用所有接收到的數據楨的源MAC地址來建立MAC表。由於傳統二層MAC地址沒有層次化概念,那麼所有接收到的數據楨的源地址都會被放入MAC表中,導致一臺交換機可能會學習到整個網段內的所有二層地址,即便大部分時間只跟其中一小部分人聯繫。

但是大二層技術則可以減小MAC地址表空間,比如FabricPath採用的就是“基於會話的MAC地址學習”,即只有那些目的地址爲本地設備的數據幀的源地址纔會被放入FabricPath/TRILL網關的MAC地址表中,其他數據幀的源地址以及廣播幀的源地址都不會被學習。


既然二層網絡的主要問題就是缺失了控制平面,只做根據MAC地址查錶轉發的工作,那麼TRILL/FabricPath/SPB的主要功能就是在傳統二層網絡的基礎上引入了控制平面,下面單獨詳述:

1) FabricPath:新增二層幀頭,主要包括三個字段:源SwitchID,目的SwitchID,TTL。其中源/目的SwitchID分別兩個字節,用於在節點間尋址;TTL主要用於防環。

2) TRILL:新增TRILL頭和MAC頭,其中TRILL頭也是源RBridgeID,目的RBridgeID和TTL,這與FabricPath基本上完全一致。MAC頭主要是方便與現有以太網兼容並存。本質上講,TRILL與當前IP報文轉發過程是完全類似的。

3) SPB:與前兩者類似,同樣採用IS-IS構建獨立的控制平面,新增的二層幀頭主要由三部分組成:源MAC,目的MAC和S-VID。其中源/目的MAC與TRILL、FabricPath中的出入網關完全類似,指代了這個大二層網絡的起點和終點,只不過在SPB網絡中的逐跳轉發由類似於隧道標識的S-VID實現。這也正是SPB使用PBB(一種MAC-in-MAC技術)的核心思想所在。


2 虛擬接入與虛擬交換機

2.1 首先是爲什麼需要虛擬交換機,主要兩個原因:1) 服務器虛擬化讓一個物理服務器上存在多個虛擬機,那多個虛擬機收發數據都從這個物理服務器的網卡上出入,導致單個操作系統與接入交換機端口間是多對一的關係,原來針對單個端口的策略無法部署;2) 服務器管理和網絡管理責權不清,互相推諉。

一句話概括就是目前虛擬機同交換機端口之間沒有辦法直接對應上。


2.2 那爲什麼僅用簡單的虛擬機交換機vSwtich技術又不夠呢?

vSwtich技術其實由來已久了,包括軟件VEB,如VMware vShpere內置的vSwitch,VMware分佈式統一網絡接入平臺VDS(Virtual Distributed Switch),與vSphere結合的Cisco Nexus 1000v,開源的Open vSwtich以及硬件的VEB(Virtual Ethernet Bridging)。

但是這些vSwitch也叫VEB存在三個問題:

1) 功能弱。具體說,通常只具有簡單的二層轉發,缺乏QoS機制和二層安全策略,流量鏡像能力差。

2) 功能弱也導致網管人員難以把針對物理端口的策略平滑地遷移到VEB或者vSwtich上來;

3) 由於其管理範圍被限制在物理服務器內部,沒法在整個數據中心提供針對虛擬機的端到端服務。

因此,就得搞像VN-Tag或者VEPA這種複雜的專門針對DCN的虛擬交換機。


2.3 Cisco VN-Tag

核心思想:VN-Tag的核心思想就是在現有的以太網數據楨的VLAN標識前面增加一個專用標記字段VN-Tag,這個VN-Tag主要是dvif_id和svif_id一對地址,分別對應於源和目的虛擬機的虛擬網絡接口VIF,因此支持VN-Tag的上聯交換機就能夠區分不同的VIF,識別來自和去往特定虛擬機的流量了,這樣就把對虛擬機的網絡管理範圍從服務器內部轉移到上聯網絡交換機上了。

換句話說,VN-Tag是如何解決2.1中所說的虛擬機無法與交換機端口對應的問題的呢?這樣:雖然服務器和上聯接入交換機只有一條物理連接,但是交換機可以通過VN-Tag區分不同虛擬機的流量,然後在交換機上生成對應


關鍵特性:

(1) Port Extender。根據上面的原理,由於虛擬化軟件Hypervisor和服務器網卡不再具備尋址功能,而是變成一個單純的網絡橋接通道,因此被VN-Tag稱爲Port Extender。Port Extender最主要的功能就是加上和去掉VN-Tag標籤

(2) 級聯。正是由於前面Port Extender的特點,VN-Tag具有級聯的特性。即對應的處理交換機controlling switch可以不是與服務器直連的接入交換機,而可以是網絡中任意IP可達設備,這樣級聯的好處是可以把流量拉到高端匯聚甚至核心設備上去進行更加精細、高速的管理

(3) 遷移。由於VN-Tag與虛擬機VIF形成了固定的對應關係,因此不管虛擬機遷移到哪臺服務器上去,原來部署在VIF端口上的策略都可以保持不變。


標準化與產業化:

(1) 目前已從IEEE 802.1Qbh改爲了IEEE 802.1Br(Bridge Port Extension)

(2) 產品方面,服務器需要Cisco Palo卡或者更高級的Cisco VIC 1280卡,交換機要能識別VN-Tag。


2.4 HP VEPA

核心思想也是將虛擬機間的交換行爲從服務器內部轉移到上聯交換機。

關鍵特性:

(1) 髮卡彎。其本質是對STP生成樹協議的修改,對應的場景就是同一個服務器上不同虛擬機間通信的情形,通過強制反射Reflective Relay實現對傳統STP的修改。這也叫做標準版的VEPA,對數據幀沒有任何改動。

(2) Q-in-Q。這是增強版的VEPA,其本質是使用VLAN堆疊的Q-in-Q技術(802.1ad),即在傳統以太網數據楨VLAN標籤之外再加上一個標籤,來標識不同虛擬機或者虛擬機組的流量。這個外層標籤叫做S-Tag或者S-Channel或者形象地稱爲通道。在標準版VEPA中,上聯交換機只能通過IP或者MAC地址區分不同虛擬機數據,而MAC和IP地址容易被作假和攻擊,那麼增強版VEPA就用另外一個標籤S-Tag來實現更精細的流量管理和隔離。

標準與產業化

標準化石IEEE 802.1Qbg。

產品方面,雖然包括了除cisco和vmware之外的幾乎所有廠商,但是目前仍缺少實際產品和案例的支撐,並且增強版VEPA仍然需要更換現有的交換機,因爲Q-in-Q功能並不常見,當然也需要服務器網卡的支持。


3 虛擬網卡

虛擬網卡本質上就是前面提到的“虛擬接入”的具體執行中必不可少的一個環節。雖然廣義上講是SR-IOV技術(Single Root I/O Virtulization),具體上你可以理解成爲Cisco Palo卡以及後續的VIC1280卡即可。虛擬網卡本質上講完成兩個重要工作:

1 將一個物理以太網卡對虛擬機虛擬化爲多個獨立的PCIe設備,即在一個PF物理通道上虛擬出多個輕量級的VF虛擬通道,每個對應一個虛擬機,將網絡接入直接延伸到虛擬機層面。

2 爲了支持前面的虛擬接入,在虛擬網卡上打上VN-Tag標籤後再送往上聯交換機,最終實現區分不虛擬機的流量,並可以在整個數據中心內部署針對性的隔離和Qos策略。


4 數據中心廣域網二層互聯:VPLS / OTV

數據中心廣域網二層互聯的專有名詞是DCI(Data Center Interconnect),那麼DCI的技術背景是:傳統的數據中心廣域網互聯需要通過三層鏈路,因此需要NAT網管進行公私網地址轉換,無法滿足當前新業務的需求。例如:一個集羣中的不同節點間通常需要保持心跳信令,而這種信令一般要求通過二層網段傳輸,如果一個集羣的部分節點遷移到另一個數據中心,則心跳信令將被廣域網三層網關和鏈路切斷;一個單節點機房虛擬機數量達到上限時,必然要遷移到另外的數據中心,事實上VMware vSpehere平臺已經開始支持廣域網虛擬機遷移Metro vMotion。


DCI有多種實現方式,比如在兩個數據中心間直接拉裸光纖是比較直接但是昂貴的方式,目前主要是VPLS和OTV兩類。下面重點從控制平面、數據平面兩個方面進行對比分析。

4.1 VPLS

VPLS是公開標準,IETF RFC4761/4762,主流數通廠家的大型路由器均能夠部署爲VPLS PE設備,並藉助於成熟的,可靠的,並且世界上幾乎所有運營商骨幹網都支持的MPLS技術。

4.1.1 VPLS數據平面

VPLS的數據平面本質上就是任意兩個參與VPLS的PE設備之間的直連鏈路,亦即標籤交換路徑LSP。

既然是參與VPLS的任意兩個PE設備之間都要有LSP,也叫做PE LSP full mesh。

當然,這些PE設備之間是由運營商MPLS核心網絡中的P路由器進行連接的,但是P路由器只負責告訴轉發VPLS標籤數據,並不知道自己轉發的數據包是否VPLS數據。


4.1.2 VPLS控制平面

VPLS的控制平面本質上是任意兩個參與VPLS的PE設備之間的PW鄰居關係,亦即Pseudo Wire。一條PW包含了兩個單向的點對點LSP鏈路。因此,本質上講,VPLS是一種雙重隧道技術:LSP+PW。

VPLS的控制平面本質上就是通過運營商的邊緣PE設備近乎完美的模擬和複製了以太網的控制平面,即通過廣播方式進行尋址,包括防環的split horizon。

具體來說,PE節點上會爲每個本地局域網保存一個VPLS實例,記錄了這個局域網內的MAC地址信息表。當PE設備受到一個未知目的MAC地址時,會將這個封包從所有加入這個VPLS實例的端口上廣播出去(除了這個封包的入端口)進行MAC地址學習和FIB更新。


4.1.3 VPLS的缺點

正式由於VPLS嚴格模擬了以太網的行爲,因此也帶來了如下缺點:

1) 廣域網鏈路上的廣播消耗大量帶寬。廣播、生成樹協議、ARP這些在局域網環境下運行問題不大,因爲局域網鏈路帶寬充裕,但是在珍貴的廣域網租用帶寬中,無用的廣播自然是越少越好。另外,面向廣域網進行MAC地址學習會讓PE的FIB地址表空間過大。

2) 其他。VPLS無法與主流三層冗餘網關協議HSRP、VRRP聯合使用,同一個VPLS實例中無法傳輸多個VLAN信息,導致企業過於依賴運營商資源,並且配置過於複雜。


4.2 OTV

名字起得很好,跟virtulization掛上了關係,本質上就是一個MAC-in-IP的概念。OTV需要在每個數據中心出口部署一臺OTV邊緣設備(Edge Device, ED),不同數據中心出口的ED在廣域網上虛擬出一個OTV網絡進行傳輸。

由於是Cisco的私有技術,其他廠家沒有支持的跡象,只做爲Cisco Nexus 7000操作系統的一個特性。

4.2.1 OTV數據平面

OTV數據平面本質上就是OTV邊緣設備(Edge Device, ED)之間具有IP可達即可,因爲本地以太數據包被打上OTV包頭後放在IP報文中進行傳輸,即相當於UDP包,如下圖所示。


4.2.2 OTV控制平面

OTV控制平面本質上就相當於FabricPath/TRILL的廣域網版本,本質上講就是通過IS-IS來在OTV節點之間進行MAC尋址。OTV節點在建立IS-IS鄰居關係後交換MAC地址表,OTV節點在此基礎上建立路由表,給出到達每個MAC地址需要通過哪個OTV節點。

此外,OTV將自動屏蔽STP\VTP等二層信令,以及HSRP/VRRP/GLBP等冗餘網管三層信令。


5 更大的二層互聯:VXLAN

VXLAN全稱Virtual eXtensible Local Area Network,虛擬擴展本地網絡,是由Cisco、VMware、Broadcom、ARISTA共同向IETF提交的草案。

技術背景

虛擬化的迅猛發展對網絡帶來了挑戰。比如二層邊界問題,一方面DCN的二層越大越好,有利於虛擬機的漂移,另一方面二層域過大又帶來STP、MAC表項不足等問題;又比如VLAN數量不足的問題。雖然,OTV、TRILL等大二層技術能夠有效應對上述挑戰,但是那需要新型的網絡設備,那VXLAN就想提出一個一勞永逸地方法進行應對。


核心思想

通過引入新的轉發實體VTEP(VXLAN Tunnel End Point-虛擬擴展本地網絡隧道終結節點)和新的地址封裝VNI(VXLAN Network Identifier-虛擬擴展本地網絡標識符),所有虛擬機流量在進入VTEP之前被打上新的VNI並封裝在UDP數據包中進行跨三層網關的傳輸,相當於在現有網絡上構建起Overlay隧道。

VXLAN封裝與數據平面


上圖就是VXLAN的數據包格式,

1) 虛擬機發出的數據包首先被VTEP加上VXLAN包頭,即24位的VNI,比VLAN的4096個數多出很多;

2) 然後封裝在UDP報文中,這樣虛擬機本身的MAC和VLAN信息就不作爲數據轉發的依據了,對外不再可見(就算虛擬機之間建立的是TCP連接,最外面也是用UDP傳)

3) IP地址當然也已經不再是VM的地址了,而是隧道兩端VTEP的設備三層地址。

當然,VTEP設備位置可以很靈活:

如果VTEP是Hypervisor(如VMWare ESX),那麼此IP就是運行虛擬化軟件的服務器網卡IP;

如果VTEP是接入交換機,則此IP就是出端口上的IP地址或者三層VLAN SVI地址;

如果VTEP是虛擬交換機如Cisco Nexus1000v,則此IP就是該虛擬交換機的IP地址(這種也是很常見的)

4) 外層MAC頭中當然一般是不用VLAN信息了。


VXLAN控制平面

VXLAN使用UDP傳輸虛擬機間的流量(順便補一下,TCP是IP protocol 6號,UDP是IP protocol 17號),與OTV類似,VXLAN的控制平面能夠在VTEP覆蓋網絡上維護可行性信息。

本質上講, VXLAN的控制平面較OTV或者FabricPath簡單很多,並沒有使用IS-IS作爲路由協議,而是沿用了以太網的二層MAC地址學習機制,記錄虛擬機、VNI以及VTEP之間的對應關係。舉個形象的例子:如果VTEP2接收到IP多播報文後,它將記錄內層虛擬機MAC地址與外層VTEP IP地址之間的映射關係,並記錄在相同的VXLAN ID的表中。如下圖中的第4步:


值得一提的是,VXLAN對二層MAC學習的廣播行爲進行了三層優化,即通過讓VTEP加入特定IGMP組播組的方式。


VXLAN OTV LISP 之間的關係

相同點:

技術實現上都引入了新的轉發實體:VXLAN(VTEP)、OTV(ED)、LISP(XTR);

都引入了新的數據封包:VXLAN(UDP)、OTV(UDP)、LISP(兩層IP包);

都引入了增強型的控制層:VXLAN(二層MAC學習+IP組播)、OTV(利用IS-IS進行MAC地址學習)、LISP(利用基於GRE的BGP學習EID(節點標示符,與路由標識符RLOC對應)可達性信息)

OTV和VXLAN都是採用隧道技術,將一個VLAN橫跨三層網關

不同點:

OTV應用場景定位i是數據中心的互連;VXLAN則瞄準的是數據中心內部的自動化部署;LISP則強調的是IP地址的移動性。由於三者解決的定位不同,因此完全可以聯合使用,例如:通過VXLAN實現虛擬機在不同數據中心間的漂移;通過OTV搭建數據中心間的二層直連鏈路;通過LISP應用在廣域骨幹網。

發佈了153 篇原創文章 · 獲贊 29 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章