vxlan及evpn,evpn路由類型


ps:摘自華為文檔

BGP網絡設計

當在規划部署BGP路由協議時,擺在我們面前的首要問題便是選擇使用IBGP還是EBGP方式,雖然兩者之間的差異可能看起來很小,但就是這些細微的差異可能導致數據中心在部署時的重大變化。IBGP與EBGP兩者之間的最大區別在於它們使用自治系統的方式,現在我們將通過比較IBGP與EBGP的差異來看每台交換機是如何分配路由前綴以及通告路由的。

IBGP

在IBGP(Internal/Interior BGP)中,Spine和Leaf的所有交換機位於單個AS之下,如圖6-6所示。 在BGP中,我們需要在IBGP對等體之間建立全連接(Full-mesh)關系來保證IBGP對等體之間的連通性。為什么IBGP要強調全連接概念呢,那是由於IBGP的防環機制導致的。IBGP強制規定ibgp speaker不允許將從一個IBGP鄰居學習到的前綴傳遞給其它IBGP鄰居,因此IBGP要求邏輯全連接。但假設在一個AS內部有n台路由器,那么應該建立的IBGP連接數就為n(n-1)/2。當IBGP對等體數目很多時,對網絡資源和CPU資源的消耗都很大,在IBGP對等體間使用BGP聯盟或者路由反射器都可以解決以上問題。

圖6-6 IBGP圖示

聯盟將一個AS划分為若干個子AS。每個子AS內部建立IBGP全連接關系,子AS之間建立聯盟EBGP連接關系,但聯盟外部AS仍認為聯盟是一個AS。配置聯盟后,原AS號將作為每個路由器的聯盟ID。這樣有兩個好處:一是可以保留原有的IBGP屬性,包括Local Preference屬性、MED屬性和NEXT_HOP屬性等;二是聯盟相關的屬性在傳出聯盟時會自動被刪除,即管理員無需在聯盟的出口處配置過濾子AS號等信息的操作。

路由反射器是IBGP路由器,它將重新向其他IBGP路由器通告路由。如圖6-7所示,在一個AS內部關於路由反射器有以下幾種角色:

圖6-7 路由反射器示意圖
  • 路由反射器RR(Route Reflector):允許把從IBGP對等體學到的路由反射到其他IBGP對等體的BGP設備,類似OSPF網絡中的DR。
  • 客戶機(Client):與RR形成反射鄰居關系的IBGP設備。在AS內部客戶機只需要與RR直連。
  • 非客戶機(Non-Client):既不是RR也不是客戶機的IBGP設備。在AS內部非客戶機與RR之間,以及所有的非客戶機之間仍然必須建立全連接關系。
  • 始發者(Originator):在AS內部始發路由的設備。Originator_ID屬性用於防止集群內產生路由環路。
  • 集群(Cluster):路由反射器及其客戶機的集合。Cluster_List屬性用於防止集群間產生路由環路。

這可以通過創建IBGP路由器集群,並將其與反射器連接起來。同一集群內的客戶機只需要與該集群的RR直接交換路由信息,因此客戶機只需要與RR之間建立IBGP連接,不需要與其他客戶機建立IBGP連接,從而減少了IBGP連接數量。但問題隨之而來,反射器並不會發送每一條路線,它只會選擇發送最優的路徑給它的對等體。當你有在Spine層面有多台交換機,且在Spine與Leaf之間存在多條鏈路時,鏈路冗余、利用率低的問題就出現了。為了解決這個問題,我們可以在BGP路由反射器上啟用BGP負載分擔功能,這樣就可以向Leaf交換機通告存在四條等長的路由,可以通過等價多路徑來分發流量。

我們從配置、設備連接和應用方面對BGP聯盟和路由反射器進行了比較,如表6-1所示:

表6-1 路由反射器和BGP聯盟比較

路由反射器

BGP聯盟

不需要更改現有的網絡拓撲,兼容性好。

需要改變邏輯拓撲。

配置方便,只需要對作為反射器的設備進行配置,客戶機並不需要知道自己是客戶機。

所有設備需要重新進行配置。

集群與集群之間仍然需要全連接。

聯盟的子AS之間是特殊的EBGP連接,不需要全連接。

EBGP

在EBGP(External/Exterior BGP)中,Spine和Leaf中的每個交換機都有自己的AS,如圖6-8所示。與IBGP的路由環路的避免措施不一樣,EBGP沒有水平分割的概念,EBGP對路由環路的避免是通過AS_PATH屬性來實現的。AS_Path屬性按矢量順序記錄了某條路由從本地到目的地址所要經過的所有AS編號。在接收路由時,設備如果發現AS_Path列表中有本AS號,則不接收該路由,從而避免了AS間的路由環路。

由前面章節的討論可知,IBGP不需要IBGP鄰居之間有物理連接,只需要邏輯連接即可,而EBGP在一般情況下都要求EBGP鄰居之間存在物理連接。

唯一的問題是使用IP Fabric網絡的AS數量,每台交換機都有自己的BGP自治系統號,BGP的私有范圍為64512~65535,其中有1023個BGP自治系統號。 如果您的IP Fabric網絡大於1023台交換機,則需要考慮進入公共的BGP自治系統號碼范圍(不建議在數據中心內部使用),或移動到私有的四字節AS號規划。CE系列交換機支持4字節私有AS號,4字節私有AS號范圍是4200000000~4294967295(或者64086.59904~65535.65535)。

圖6-8 EBGP圖示

BGP在數據中心網絡架構中的應用

下面就讓我們將BGP路由協議與具體的網絡架構場景聯系起來。在場景DC1中有五排機架,都采用Spine+Leaf網絡架構。 我們推薦使用EBGP建立VXLAN的Underlay網絡,每行都使用EBGP的情況下設計將如圖6-9所示,在Spine和Leaf層的每台交換機都有自己的AS號碼。

圖6-9 DC1場景中運行EBGP圖示

對於場景DC2,我們采用的是EOR交換機部署,EBGP的設計如圖6-10所示。

圖6-10 DC2場景中運行EBGP圖示

同樣,如DC1場景圖示所展現的一樣,您可以將AS65000和65001用於第一行,然后為每個設備AS號遞增加1。 如果您選擇IBGP實施方法(通常在DC內用於VXLAN overlay路由的交換),設計將會變得非常簡單,因為您只需將所有設備分配給同一AS號,覆蓋整個DC1,你可以對DC2采用相同的方法,如圖6-11圖6-12所示。

圖6-11 DC1場景中運行IBGP圖示
圖6-12 DC2場景中運行IBGP圖示

Overlay介紹

圖7-1所示,Overlay網絡是將已有的物理網絡(Underlay網絡)作為基礎,在其上建立疊加的邏輯網絡,實現網絡資源的虛擬化。

圖7-1 Overlay網絡概念圖

Overlay網絡是建立在已有物理網絡上的虛擬網絡,具有獨立的控制和轉發平面,對於連接到Overlay的終端設備(例如服務器)來說,物理網絡是透明的,從而可以實現承載網絡和業務網絡的分離。

為什么需要Overlay網絡?

作為雲計算核心技術之一的“服務器虛擬化”已經被數據中心普遍應用。隨着企業業務的發展,虛擬機數量的快速增長和虛擬機遷移已成為一個常態性業務。由此也給傳統網絡帶來了以下一些問題:

  • 虛擬機規模受網絡規格限制

    在傳統二層網絡環境下,數據報文是通過查詢MAC地址表進行二層轉發,而網絡設備MAC地址表的容量限制了虛擬機的數量。

  • 網絡隔離能力限制

    當前主流的網絡隔離技術是VLAN,由於IEEE 802.1Q中定義的VLAN ID只有12比特,僅能表示4096個VLAN,無法滿足大二層網絡中標識大量租戶或租戶群的需求。

  • 虛擬機遷移范圍受網絡架構限制

    為了保證虛擬機遷移過程中業務不中斷,則需要保證虛擬機的IP地址、MAC地址等參數保持不變,這就要求業務網絡是一個二層網絡,且要求網絡本身具備多路徑的冗余備份和可靠性。傳統的STP、設備虛擬化等技術只適用於中小規模的網絡。

針對上述問題,為了滿足雲計算虛擬化的網絡能力需求,逐步演化出了Overlay網絡技術。

  • 針對虛擬機規模受網絡規格限制

    虛擬機發出的數據包封裝在IP數據包中,對網絡只表現為封裝后的網絡參數。因此,極大降低了大二層網絡對MAC地址規格的需求。

  • 針對網絡隔離能力限制

    Overlay技術擴展了隔離標識的位數(24比特),極大擴展了隔離數量。

  • 針對虛擬機遷移范圍受網絡架構限制

    Overlay將以太報文封裝在IP報文之上,通過路由在網絡中傳輸。通過路由網絡,虛擬機遷移不受網絡架構限制。而且路由網絡具備良好的擴展能力、故障自愈能力、負載均衡能力。

Overlay技術有多種,例如VXLAN、NVGRE、STT等,其中VXLAN是目前獲得最廣泛支持的Overlay技術。

VXLAN

VXLAN(Virtual eXtensible Local Area Network,虛擬擴展局域網),是由IETF定義的NVO3(Network Virtualization over Layer 3)標准技術之一,采用MAC-in-UDP的報文封裝模式,如圖7-2所示,原始報文在VXLAN接入點(被稱為VTEP)加上VXLAN幀頭后再被封裝在UDP報頭中,並使用承載網絡的IP/MAC地址作為外層頭進行封裝,承載網絡只需要按照普通的二三層轉發流程進行轉發即可。

圖7-2 VXLAN報文格式

以VXLAN技術為基礎的Overlay網絡架構模型如所示。

圖7-3 VXLAN網絡模型
  • VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端點)

    VXLAN網絡的邊緣設備,是VXLAN隧道的起點和終點,進行VXLAN報文的封裝、解封裝等處理。VTEP既可以部署在網絡設備上(網絡接入交換機),也可以部署在vSwitch上(服務器上的虛擬交換機)。

  • VNI(VXLAN Network Identifier,VXLAN 網絡標識符)

    VNI是一種類似於VLAN ID的網絡標識,用來標識VXLAN二層網絡。一個VNI代表一個VXLAN段,不同VXLAN段的虛擬機不能直接二層相互通信。

  • VXLAN隧道

    兩個VTEP之間建立的邏輯隧道,用於傳輸VXLAN報文。業務報文在進入VXLAN隧道式進行VXLAN、UDP、IP頭封裝,然后通過三層轉發透明地將報文轉發給遠端VTEP,遠端VTEP對報文進行解封裝處理。

VXLAN報文轉發過程

下面以同網段的VM間相通簡單介紹VXLAN網絡中的報文轉發過程。

圖7-4 VXLAN報文轉發過程示意圖
  1. VM1發送目的地址為VM2的報文。
  2. VTEP1收到該報文后進行VXLAN封裝,封裝的外層目的IP為VTEP2。封裝后的報文,根據外層MAC和IP信息,在IP網絡中進行傳輸,直至到達對端VTEP2。
  3. VTEP2收到報文后,對報文進行解封裝,得到VM1發送的原始報文,然后將其轉發至VM2。

二層MAC學習及BUM報文轉發

在VXLAN網絡中,同子網虛擬機的互通是通過查找MAC表進行轉發。如下圖所示,VM1給VM2發送報文時,經過VTEP1轉發,VTEP1上需要學習到VM2的MAC地址。

最初的VXLAN標准並沒有定義控制平面,VTEP之間無法傳遞學習到的主機MAC地址。但是VXLAN有着與傳統以太網非常相似的MAC學習機制,當VTEP接收到VXLAN報文后,會記錄源VTEP的IP、虛擬機MAC和VNI到本地MAC表中,這樣當VTEP接收到目的MAC為此虛擬機的MAC時,就可以進行VXLAN封裝並轉發。

圖7-5 MAC學習示意圖

以VTEP2學習到VM1的MAC過程為例:

  1. VM1發送目的地址為VM2的報文。
  2. VTEP1接收到報文后,進行VXLAN封裝,並將其轉發至VTEP2。同時,VTEP1可以學習到VM1的MAC地址、VNI、入接口。
  3. VTEP2接收到報文后,對報文進行解封裝。同時,VTEP2可以學習到VM1的MAC地址、VNI、入接口(為VTEP1)。

經過上述流程,VTEP1和VTEP2可以學習到VM1的MAC地址。VTEP1和VTEP2學習到VM2的MAC地址過程與之類似。

BUM報文轉發

前面描述的報文轉發過程都是已知單播報文轉發,如果VTEP收到一個未知地址的BUM報文(廣播、組播、未知單播)如何處理呢。與傳統以太網BUM報文轉發類似,VTEP會通過泛洪的方式轉發流量。

圖7-6 BUM報文轉發示意圖

以上圖中VM1想向VM2發送報文為例,因為VM1不知道VM2的MAC地址,所以會發送ARP廣播報文請求VM2的MAC地址。

  1. VM1發送ARP廣播請求,請求VM2的MAC地址。
  2. VTEP1收到ARP請求后,因為是廣播報文,VTEP1會在該VNI內查找所有的隧道列表,依據獲取的隧道列表進行報文封裝后,向所有隧道發送報文,從而將報文轉發至同子網的VTEP2和VTEP3。
  3. VTEP2和VTEP3接收到報文后,進行解封裝,得到VM1發送的原始ARP報文,然后轉發至VM2和VM3。
  4. VM2和VM3接收到ARP請求后,比較報文中的目的IP地址是否為本機的IP地址。VM3發現目的IP不是本機IP,故將報文丟棄;VM2發現目的IP是本機IP,則對ARP請求做出應答。

    由於此時VM2上已經學習到了VM1的MAC地址,所以ARP應答報文為已知單播報文,轉發流程與前文描述的一致,此處不在贅述。

  5. VM1收到VM2的ARP應答后,就可以學習到VM2的MAC地址。后續的轉發流程同已知單播轉發流程一致。
 

EVPN介紹

最初的VXLAN方案(RFC7348)中沒有定義控制平面,是手工配置VXLAN隧道,然后通過流量泛洪的方式進行主機地址的學習。這種方式實現上較為簡單,但是會導致網絡中存在很多泛洪流量、網絡擴展起來困難。

為了解決上述問題,VXLAN引入了EVPN(Ethernet VPN)作為VXLAN的控制平面。EVPN參考了BGP/MPLS IP VPN的機制,通過擴展BGP協議新定義了幾種BGP EVPN路由,通過在網絡中發布路由來實現VTEP的自動發現、主機地址學習。

采用EVPN作為控制平面具有以下一些優勢:

  • 可實現VTEP自動發現、VXLAN隧道自動建立,從而降低網絡部署、擴展的難度。
  • EVPN可以同時發布二層MAC和三層路由信息。
  • 可以減少網絡中泛洪流量。

BGP EVPN路由類型

傳統的BGP-4使用Update報文在對等體之間交換路由信息。一條Update報文可以通告一類具有相同路徑屬性的可達路由,這些路由放在NLRI(Network Layer Reachable Information,網絡層可達信息)字段中。

因為BGP-4只能管理IPv4單播路由信息,為了提供對多種網絡層協議的支持(例如IPv6、組播),發展出了MP-BGP(MultiProtocol BGP)。MP-BGP在BGP-4基礎上對NLRI作了新擴展。玄機就在於新擴展的NLRI上,擴展之后的NLRI增加了地址族的描述,可以用來區分不同的網絡層協議,例如IPv6單播地址族、VPN實例地址族等。

類似的,EVPN在L2VPN地址族下定義了新的子地址族——EVPN地址族,並新增了一種NLRI,即EVPN NLRI。EVPN NLRI定義了以下幾種BGP EVPN路由類型,通過在EVPN對等體之間發布這些路由,就可以實現VXLAN隧道的自動建立、主機地址的學習。

  • Type2路由——MAC/IP路由:用來通告主機MAC地址、主機ARP和主機路由信息。
  • Type3路由——Inclusive Multicast路由:用於VTEP的自動發現和VXLAN隧道的動態建立。
  • Type5路由——IP前綴路由:用於通告引入的外部路由,也可以通告主機路由信息。

EVPN路由在發布時,會攜帶RD(Route Distinguisher,路由標識符)和VPN Target(也稱為Route Target)。RD用來區分不同的VXLAN EVPN路由。VPN Target是一種BGP擴展團體屬性,用於控制EVPN路由的發布與接收。也就是說,VPN Target定義了本端的EVPN路由可以被哪些對端所接收,以及本端是否接收對端發來的EVPN路由。

 

Type2類型路由

Type2類型路由中NLRI格式如下:

圖8-1 Type2類型路由中NLRI格式

圖8-1可以看出,Type2類型路由中攜帶有主機MAC、主機IP信息,因此Type2類型路由可以用於發布主機MAC,還可以發布主機IP地址。

圖8-2 Type2類型路由發布MAC地址示意圖

圖8-2所示,Leaf1接收到Host1發送的報文后,會學習到Host1的MAC地址。Leaf1學習到Host1的MAC后,會生成Type2類型的路由發送給Leaf2,該路由會攜帶EVPN實例的ERT、Host1的MAC地址、Leaf1的VTEP IP等信息。

Leaf2收到Leaf1發送來的路由后,根據路由中的ERT是否與本端EVPN實例的IRT相同來決定是否接收該路由。如果相同,則接收該路由,Leaf2可以學習到Host1的MAC地址;如果不同,則丟棄路由。

 

Type3類型路由

Type3類型路由中NLRI格式如下:

圖8-3 Type3類型路由中NLRI格式

Type3類型路由中主要攜帶有VTEP IP信息,主要用於VTEP的自動發現和VXLAN隧道的動態建立。

圖8-4 Type3類型路由建立VXLAN隧道示意圖

圖8-4所示,在Leaf1和Leaf2之間建立BGP EVPN對等體后,Leaf1會生成Type3類型的路由發送給Leaf2。該路由中會攜帶本端VTEP IP地址、VNI,EVPN實例的ERT等信息。

Leaf2收到Leaf1發送來的路由后,根據路由中的ERT是否與本端EVPN實例的IRT相同來決定是否接收該路由。如果相同,則接收該路由,建立一條到對端的VXLAN隧道。同時,如果對端VNI與本端相同,則創建一個頭端復制表,用於后續廣播、組播、未知單播報文的轉發。

 

Type5類型路由

Type5類型路由中NLRI格式如下:

圖8-5 Type5類型路由中NLRI格式

Type5類型路由攜帶路由信息,主要用於發布路由。與Type2類型路由不同的是,Type5類型路由既可以發布32位主機路由,也可以發布網段路由。

圖8-6 Type5類型路由發布路由示意圖

Type5類型路由可以將本地其他協議的私網路由(例如靜態路由、直連路由、其他路由協議路由)發布到其他EVPN網絡中,在遠端生成相應的主機/網段路由。所以Type5類型路由可以實現VXLAN網絡主機訪問外部非VXLAN網絡。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM