數據中心的發展以及SDN、Vxlan簡介

SDN:softwaredefined networking,官方定義軟件定義網絡,目的是控制與數據層面分離。

通俗一點來解釋:傳統的網絡設備會有獨立的系統,每臺設備利用自己的控制層面形成單獨的轉發信息,例如網絡工程師熟悉的OSPF每臺運行進程的設備有獨立的LSDB,通過交互來形成各自獨立的路由表、既然各大網絡廠商(Cisco、Juniper、Huawei等)有成熟的底層系統,IETF有成熟的各種協議,看起來一切很完美。但是凡事都有兩面性,傳統的網絡設備價格相對昂貴,在交互各自的信息以及計算時消耗了大量的網絡與計算資源。

這時候我們的一位主角出廠了,先看一下經典的一張SDN架構圖:

SDN是一種架構,分為了3個層面:


數據中心的發展以及SDN、Vxlan簡介



1.轉發層:上圖的基礎設施層,提供數據的轉發,原來的控制層面單獨分離出去,僅需要一些基礎功能的“傻瓜”白牌交換機;

2.控制層:狹義的來講就是SDN控制器,既然轉發層只做單純的數據轉發,那麼原本的控制數據,就由本層通過南向的協議(OF,OLD,ONOS等)下發一條條的流標來“告訴”如何去處理數據,利用netconf,ovsdb等對南向設備下發配置;另外對北向提供API接口,利用可編程、可視化等簡化操作提高自動化能力;

3.應用層:利用可編程的應用和平臺對控制器進行控制調度。比如openstack的雲OS去基於用戶自動下發需求,由SDN控制器完成相關調度;

以上可以說是實驗室理論,也可以說是狹義的SDN概念,優勢顯而易見:可編程可視化、控制層面分離使SDN控制器站在上帝視角控制全場、網絡設備的功能瘦身大量節約資金的投入。但是近些年來,網絡一直是硬件廠商的天下,基礎設施的白牌話,嚴重影響了廠商的利益,所以狹義的SDN舉步維艱。既然如此那近幾年為何SDN為何忽然“火”起來?一切要從SDN的主戰場數據中心說起:

簡述數據中心發展史:

一切技術都是順應需求推動在發展

一、最初的數據中心,多以提供www的業務為主,這決定了傳統三層的南北向為主的IDC設計,我們簡單看一下:


數據中心的發展以及SDN、Vxlan簡介



Access接入層:一般為ToR交換機,提供物理服務器的接入,是面向計算存儲資源的第一層;

Aggregation匯聚層:對接入層交換機進行數據匯聚,基於vlan隔離廣播域,實現L2/L3的轉換,並提供service服務如LB,FW等;

Core核心層:提供跨匯聚及北向出口的高速的L3的轉發;

順便說一下在傳統IDC中,南北向流量可以理解為用戶基於互聯網訪問到數據中心的,或者數據中心通過Core訪問到互聯網的流量;東西向流量指的是數據中心內部,跨越Core/Agg/Acess的內部流量。

三層結構最顯著的點是:接入層的L2的流量會在匯聚層終結,接入與匯聚間通過堆疊或者vPC等基於避免環路和STP;匯聚層繼而通過L3+ECMP在匯聚和核心層間高速轉發;跨越匯聚的東西向流量需要經過L2-L3-L3-L2如此傳輸;

二、傳統大二層架構。還是那句一切技術都應順應需求,雲計算和虛擬化的發展,使得數據中心的主要流量演變成成東西向,各業務和服務要基於大的二層環境來設計部署,傳統的三層架構演變成下圖的傳統大二層:


數據中心的發展以及SDN、Vxlan簡介


該架構Core作為L2/L3的終結,內部的vlan網關、北向的出口全部由Core來承擔,所有東西向流量無需跨越L3的傳輸,匯聚層的作用極大的削弱,也為後面的Clos架構做了鋪墊。這種設計解決了東西向流量為主的IDC環境的需求,但也存在一些弊端:

1.次優路徑最為顯著,在跨越網段的數據傳輸過程中,無論server是否在同一Access甚至Aggregation交換機下,都需要穿越Core,造成大量的帶寬浪費和數據時延如下圖:


數據中心的發展以及SDN、Vxlan簡介



2.隨著虛擬機的大規模部署,ARP表會爆炸式增長,對Core交換機性能產生很大的衝擊;

3.公有云和多租戶使傳統的4096個vlan不足以支撐。

三、Clos,Fat-tree架構,Clos是一種fabric的架構,提供了高速無阻尼的傳輸,具體的設計原理不做贅述,具體的模型就是現在數據中心的Spine-Leaf架構。


數據中心的發展以及SDN、Vxlan簡介




1.Spine層處於核心層面,與Leaf節點三層互聯,並通過IGP實現ECMP,在上圖Cisco的架構中,數據的南北向通過BorderLeaf內的Router與互聯網互聯,Huawei的Leaf-Spine的架構中,serviceleaf(FW,LB等)及borderleaf(Router)的很多功能是直連到Spine上實現;

2.Spine 與服務器直連,並且負責L2/L3的終結。

3.Spine、Leaf可以在不改變現有架構的基礎上橫向擴展,如果規模繼續擴大,也可以縱向做5跳的更深一層面的Spine擴展。

穩定性,擴展性已經得已解決,但是L2/L3的終結依然在Leaf,數據中心跨越機櫃或者說Leaf的二層擴展,就要用到我們的overlay技術。

Trill、FabricPath、Qfabrci等等MacinMac的二層技術被提出,例如Trill是基於Spine-Leaf underlay的isis的tlv來傳遞二層流量。所有的underlay設備被稱為RB,外層以太網的DA/SA為Egress/IngressRB的Mac地址,只轉發時逐條修改,由isis提供控制層面和ECM。我們所需的“大二層”實現了,不過要求所有的underlay設備支持,並且vlan的數量並沒有得以解決。

與此同時,以VMware為代表的虛擬化軟件廠商,圍繞overlay技術打造基於軟件的tunnel技術,以實現“跨越”物理交換機的大二層技術。並有IETF制定了NVo3的相關標準,其中Vxlan,NvGre,STT都是基於該標準制定的大二層技術。

NvGre是微軟提出的,在Hyper-V中的MacinGre的技術,STT是由大名鼎鼎的Nicira(SDN的奠基者STT,Ovs,openstack Neatron的研發公司),另外就是現在基本一統天下的VMware和Arista聯合提出的Vxlan。

下圖我們簡單分析一下Vxlan的封裝格式:


數據中心的發展以及SDN、Vxlan簡介



在硬件的Vtep中,一般是由Leaf交換機在原始的數據報文前封裝Udp及Vxlan報頭,是一種MacinUDP的overlay技術。

UDP報頭的目的端口默認為4789,源端口基於內層以太網的幀頭hash得出,用來做ECMP;

Vxlan報頭中的VNI類似我們Vlan的vid,24bit所以最大支持1600W個Vxlan;

在我們看一下Vxlan的數據傳輸過程前,首先了解幾個vxlan的關鍵概念:

NVE:網絡虛擬邊緣節點NVE,實現網絡虛擬化功能的網絡實體。報文經過NVE封裝轉換後,NVE間就可基於三層基礎網絡建立二層虛擬化網絡。

VTEP: VTEP是VXLAN隧道端點,封裝在NVE中,用於VXLAN報文的封裝和解封裝。VTEP與物理網絡相連,分配有物理網絡的IP地址,該地址與虛擬網絡無關。VXLAN報文中源IP地址為本節點的VTEP地址,VXLAN報文中目的IP地址為對端節點的VTEP地址,一對VTEP地址就對應著一個VXLAN隧道。

Gataway:和VLAN類似,不同VNI之間的VXLAN,及VXLAN和非VXLAN之間不能直接相互通信。為了使VXLAN之間,以及VXLAN和非VXLAN之間能夠進行通信,VXLAN引入了VXLAN網關。

VXLAN網關分為:

  • 二層網關:用於解決租戶接入VXLAN虛擬網絡的問題,也可用於同一VXLAN虛擬網絡的子網通信。
  • 三層網關:用於VXLAN虛擬網絡的跨子網通信以及外部網絡的訪問。

根據三層網關部署方式的不同,VXLAN三層網關又可以分為集中式網關和分佈式網關。我們先看集中式網關的傳輸過程:


數據中心的發展以及SDN、Vxlan簡介


Server1的數據幀到達Leaf1(VTEP),剝離原有的VID,封裝Vxlan報頭及VNI,如果目的IP是Server2,同一網段,基於Flood在相同VNI下泛洪,最終至Server2;如果目的IP為不同網段,則數據傳輸為:Leaf1 Vxlan封裝,至網關Spine節點,Spine的Vxlan三層網關查找路由,發送至10.20.1.X所在的VNI的網絡,然後在10.20.1.X的網絡內泛洪,最終發送至Server3。

集中式網關的優勢:部署簡單,所有的網關均在spine節點,Leaf只需要對數據報文進行封裝,無需進行路由。

缺點:1.因為所有網關在Spine存在單點故障,可以用多活網關來優化;

2.性能瓶頸,每個Spine節點最多不超過4K的Vxlan網關,可以通過多組來優化;

3.此優路徑,哪怕同網段的互訪,也要經過Spine節點;

我們再來研究一下分佈式網關:


數據中心的發展以及SDN、Vxlan簡介



由Leaf節點來充當Vxlan的三層網關,數據封裝和傳輸過程類似。不過同樣存在一個問題,既然三層網關在Leaf節點,那麼三層功能就要由Leaf來承擔,例如上圖,Leaf1節點下,無10.20.1.X的虛擬機,但是為了能訪問該網段,也需要創建該網段的Vxlan網關,隨著Leaf的不斷增加這變得不切實際。

並且Vxlan是數據層面的協議,所有的BUM(Broadcast,位置Unicast,Multicast)傳輸需要基於Flood(Cisco是基於組播)傳輸,這造成了大量的帶寬和性能浪費,這是需要一個控制層面的協議來傳遞二層的ARP信息。

EVPN完美的解決了這個問題,EVPN(EthernetVirtual Private Network)是一種用於二層網絡互聯的VPN技術。EVPN技術採用類似於BGP/MPLS IP VPN的機制,在BGP協議的基礎上定義了一種新的NLRI(Network Layer Reachability Information,網絡層可達信息)即EVPN NLRI,EVPN NLRI定義了幾種新的BGP EVPN路由類型,用於處在二層網絡的不同站點之間的MAC地址學習和發佈。

原有的VXLAN實現方案沒有控制平面,是通過數據平面的流量泛洪進行VTEP發現和主機信息(包括IP地址、MAC地址、VNI、網關VTEP IP地址)學習的,這種方式導致數據中心網絡存在很多泛洪流量。為了解決這一問題,VXLAN引入了EVPN作為控制平面,通過在VTEP之間交換BGP EVPN路由實現VTEP的自動發現、主機信息相互通告等特性,從而避免了不必要的數據流量泛洪。

綜上所述,EVPN通過擴展BGP協議新定義了幾種BGP EVPN路由,這些BGP EVPN路由可以用於傳遞VTEP地址和主機信息,因此EVPN應用於VXLAN網絡中,可以使VTEP發現和主機信息學習從數據平面轉移到控制平面。

EVPN確實足夠優秀,但畢竟是單獨設備計算和傳輸二層的信息,如果有一個集中的管理者能夠收集到所有設備的上線信息,並且能基於這些信息,自動的幫我們搭建和拆除Vxlan隧道,並且能基於用戶的可視化環境直觀的規劃網絡環境,正好SDN契合了我們的需求。

SDN能夠向北提供API給openstack的Neatrol並開放可編程接口,南向方面不再必須要求白盒交換機,網絡廠商也作出讓步提供支持ODL、ONF等協議支持的物理交換機,如Cisco的Nexus9K,HuaweiCE等。通過SNMPv3去自動發現網絡設備,Netconf下發配置,流標去控制轉發,並且所有的一切控制層面僅僅發生在overlay層面。

另外公有云和私有云的發展,更是推動了雲網一體化,用戶僅僅在Portal頁面選取所需的計算、網絡、存儲資源,一切要更敏捷更自動,SDN豐富的北向接口完全契合了用戶的需求。

目前Segment routing的流量工程的發展,也極大的推動了SDN的發展,以往的TE是基於mpls,很難做到基於鏈路的實際狀態來選擇最優的路徑,只能到達一個個的點,才能決定下一跳的傳輸。SDN正是站在了控制層面的上帝視角,為SR下發全局的標籤,最高效最正確的引導流量工程。

以上結合數據中心的發展,以及不同階段的需求簡單分享了我對SDN和Vxlan的理解,如有不妥,還請提出交流。


分享到:


相關文章: