EVPN學習筆記


一、介紹

  通過VXLAN的封裝我們知道,若想指導VXLAN的轉發,VTEP節點需要解決三元組問題,這個三元組是:

      內部 MAC 、 VNI 、 VTEP IP

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

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

二、BGP EVPN路由

  為了解決上述問題,BGP EVPN在BGP協議的基礎上定義了一種新的NLRI(Network Layer Reachability Information,網絡層可達信息)即EVPN NLRI,EVPN NLRI定義了幾種新的BGP EVPN路由類型,用於處在二層網絡的不同站點之間的MAC地址學習和發布。

  1.  Ethernet Auto-discovery Route(RT-1):用來在站點多歸屬組網中通告ES信息,以便實現水平分割、Aliasing和主備備份等特性。
  2.  MAC/IP Advertisement Route(RT-2):用來通告MAC/IP地址信息。

      該類型的路由報文格式如下:

        

      各字段解釋如下:

      

    該類型路由在VXLAN控制平面中的作用包括:

    對於IPV4:

      1. 主機MAC地址通告

      2. 主機ARP通告

      3. 主機IP路由通告

    對於IPv6:

      1. ND表項擴散

      2. 主機IPv6路由通告

  3. Inclusive Multicast Ethernet Tag Route(RT-3):用來通告VTEP及其所屬VXLAN,以實現VTEP自動發現、自動建立VXLAN隧道、自動創建VXLAN廣播表等。

  4. Ethernet Segment Route(RT-4):用來通告ES及其連接的VTEP信息,以便發現連接同一ES的VTEP冗余組其他成員,以及在冗余組之間選舉指定轉發器DF等。

  5. IP Prefix Advertisement Route(RT-5):IP前綴路由,用來以IP前綴的形式通告引入的外部路由。

三、解決VXLAN的問題

  VTEP節點需要解決三元組問題,這個三元組是:

      內部 MAC 、 VNI 、 VTEP IP

  1. VTEP IP和VNI

  VXLAN是一種”MAC in UDP”技術, 是在IP網絡基礎之上構建的一種Overlay架構。在IP網絡上傳輸時,RFC定義了幾種組播技術,例如Ingress Replication、RSVP-TE P2MP LSP、mLDP P2MP、PIM-SSM、PIM-SM、BIDIR-PIM等。 目前EVPN使用的是Ingress Replication,即頭端復制。所謂頭端復制,就是在VXLAN轉發實體里面存在一個需要復制到的遠端PE設備隧道列表,此列表叫做BUM廣播表。BUM廣播表的建立是依靠EVPN的第3類路由,即集成多播路由建立的。此路由也用於VTEP站點的自動發現。

  看一下第三類路由的格式:

  

  從上面路由參數可以看到,第三類路由主要包含RD、VTEP地址、二層VNI。

  二層VXLAN廣播域建立過程:

  每個站點都通過三類路由通告自己的VTEP地址和VNI信息,如果對端VTEP IP地址是三層路由可達的,則建立一條到對端的VXLAN隧道。同時,如果對端VNI與本端相同,則創建一個頭端復制表,用於后續BUM報文轉發。

  2. MAC地址學習

  EVPN在控制面學習MAC和ARP。在EVPN里面,站點的MAC和ARP信息是通過EVPN的MAC/IP路由通告的,即Route Type 2。因此,在EVPN網絡里面,不需要將ARP請求泛洪到網絡中。

  二類路由主要傳遞的信息包括RD、主機MAC、主機IP、二層VNI和三層VNI。

  本地的MAC和ARP是通過傳統的方式學習到的,EVPN控制面將本地的IP、MAC和VNI信息通過BGP鄰居分發到其他VTEP設備。為了抑制ARP廣播,VTEP節點在通告MAC的同時會選擇攜帶IP,這樣,可以讓對端VTEP學習到本端VTEP下掛的主機ARP,從而使得遠端VTEP可以直接代答回應遠端主機發起的ARP請求。

  ARP廣播抑制。當三層網關學習到其子網下的主機ARP時,生成主機信息(包含主機IP地址、主機MAC地址、二層VNI、網關VTEP IP地址),然后通過傳遞ARP類型路由將主機信息同步到二層網關上。這樣當二層網關再收到ARP請求時,先查找是否存在目的IP地址對應的主機信息,如果存在,則直接將ARP請求報文中的廣播MAC地址替換為目的單播MAC地址,實現廣播變單播,達到ARP廣播抑制的目的。

  在集中式網關里面,二層VTEP需要將學習到的ARP通告給網關,在GW上需要下發ARP,並產生32位直連路由。此路由的下一跳就是路由本身。ARP里的MAC為主機或虛機的真實MAC。從GW往VTEP的報文轉發時,在VTEP上做二層MAC轉發。

  而在分布式網關里,每一個分布式網關都會將學習到的ARP通告給其他網關。在遠端VTEP上,2類路由里面的IP會下發到VRF表形成32位主機路由,此路由的下一跳為通告此路由的VTEP設備。報文轉發時,從網關發出的報文內層MAC為對端VTEP設備的MAC,因此報文在對端VTEP上做三層轉發。

  這樣VXLAN內部通信需要的三元組信息就都解決了,接下來需要解決外部路由問題,我們通過VXLAN建立了一個私有的VXLAN網絡,那么怎么跟外部網絡通信呢。

  3. 外部網絡通信

  EVPN網絡構建的是一個私有網絡,它也可以通過接入外網,實現跟外網通信的目的。通常在EVPN的Spine-Leaf架構中,會有1台或多台專門接入外網的設備,我們把它叫做Board Leaf。Board Leaf通過普通接口跟外網建立普通路由協議,學習路由,然后在Board Leaf上EVPN可以引入這些外部路由,形成EVPN 5類路由,進而通告到EVPN網絡中,使其他VTEP也能學到這些外部路由。這些路由的下一跳均指向通告此路由的Board Leaf。當網絡中存在多台Board Leaf時,多台Board Leaf都可以通告此路由,這樣在遠端還可以形成等價路由,以達到網絡負載分擔的目的。

  以下是5類路由的字段格式:

  

  可以看到5類路由主要包含RD、IP前綴和三層VNI。

  4. 其他

  ARP廣播抑制:

  當三層網關學習到其子網下的主機ARP時,生成主機信息(包含主機IP地址、主機MAC地址、二層VNI、網關VTEP IP地址),然后通過傳遞ARP類型路由將主機信息同步到二層網關上。這樣當二層網關再收到ARP請求時,先查找是否存在目的IP地址對應的主機信息,如果存在,則直接將ARP請求報文中的廣播MAC地址替換為目的單播MAC地址,實現廣播變單播,達到ARP廣播抑制的目的。

  不管是集中式網關還是分布式網關,都是三層網關學習學習到其子網現的arp信息,然后通過EVPN傳遞給其他二層網關,當二層網關收到arp請求的時候,將目的mac的全F替換為真實主機的mac地址,然后轉發到對應的vtep節點,vtep再接封裝到目的主機,目的主機收到該arp請求之后,進行應答。

  若二層網關上不存在該目的IP對應的MAC地址,則執行頭端復制,將按照BUM頭端復制表,對該arp報文進行vxlan封裝,然后轉發到對應的vtep節點,vtep節點收到之后進行解封裝,發現目的mac是全F,則在其子網內的非vxlan接口泛洪。

  BUM可以使用頭端復制、集中復制和組播復制來進行轉發。

  頭端復制:在發送方vtep上將BUM報文進行復制封裝到vxlan,然后轉發到對應子網的其他vtep節點。

  集中復制:網絡中有一個集中復制點,發送方vtep先將BUM報文發送給集中復制點,由集中復制點來進行復制,集中復制點在復制的時候不改變外層源IP,該報文的外層源IP仍是發送方的vtep地址。接收方vtep收到之后,可以學習或更新他的mac表(mac和vtep的對應)。

  組播復制:同一個VNI的所有VTEP都加入同一個組播組,利用組播路由協議(如PIM)為該組播組建立組播轉發表項,當源端VTEP收到BUM報文后,為該BUM報文封裝組播目的IP地址(例如225.0.0.1),封裝后的報文根據已建立的組播轉發表項轉發到遠端VTEP,從而減少流量洪泛。最后遠端VTEP再對VXLAN報文解封裝。

  虛擬機遷移:

  MAC地址遷移是指虛擬機或主機從其介入的VTEP或網關設備遷到數據中心網絡的另一台VTEP或網關下。新遷移到的VTEP或網關會重新感知到主機/虛擬機上線,會重新通告該MAC/IP路由,此路由跟遷移前通告的MAC/IP路由的區別在於在BGP update消息中攜帶了一種新的擴展團體:MAC Mobility擴展團體。此擴展團體里面包含一個系列號。每次遷移,遷移序列號將遞增,遠端在收到一個比自己系列號更大的消息時,更新自己的MAC/IP路由消息,下一跳指向遷移后通告此路由的VTEP或GW。原VTEP在收到此路由更新后,撤銷之前通告的路由。

  二層VNI和三層VNI:

  二層VNI是用來標識報文屬於哪一個BD,相當於vlan id。

  三層VNI用來標識報文屬於哪一個VRF,相當於租戶。


免責聲明!

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



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