天天看點

以太網虛拟專用網——EVPN

作者:阿豪的筆記

EVPN( Ethernet Virtual Private Network,以太網虛拟專用網)是新一代全業務承載的 VPN 技術,它統一了各種 L2VPN、L3VPN 業務的控制平面,利用BGP 擴充協定來傳遞二層或三層可達資訊,實作了轉發平面和控制平面的分離。它有兩件基本武器:ESI( Ethernet Segment Identifier,以太網段辨別)和 EVPN 路由

ES & ESI

如圖 1 所示,當一個 CE 通過一組以太網鍊路連接配接到一個或多個 PE 時,這一組鍊路就稱為一個以太網段( Ethernet Segment,ES);全局唯一辨別一個 ES 的ID,稱作 ESI。

以太網虛拟專用網——EVPN

圖1 ES 與 ESI 示意圖

EVPN 路由

BGP 在原有協定的基礎上進行了擴充,為 EVPN 定義了新的位址族:BGP-EVPN 位址族,在該位址族下定義了新的 EVPN NLRI( Network Layer Reachability Information,網絡層可達資訊),其中包含下表所示的 5 種常用的 EVPN 路由類型

表1 EVPN 路由類型

類型 路由名稱 主要功能
Type1

以太自動發現路由( Ethernet Auto-Discovery Route, A-D Route),分為兩種子類型:

Per ES A-D Route

Per EVI( EVPN Instance) A-D Route

水準分割、故障快速收斂、别名、指導二層流量轉發( EVPN VPWS)
Type2 MAC/IP 通告路由( MAC/IP Advertisement Route,MAC/IP Route) MAC 通告、 ARP 通告、 ND( Neighbor Discovery,鄰居發現)通告、 IRB 通告
Type3 內建多點傳播以太标記路由( Inclusive Multicast Ethernet Tag Route, IMET Route) 鄰居自動發現、指導 BUM( Broadcast, Unknown unicast and Multicast,廣播&未知單點傳播&多點傳播)流量轉發
Type4 以太網段路由( Ethernet Segment Route, ES Route) ES 成員自動發現、 DF( Designated Forwarder,指定轉發者)選舉
Type5 IP 字首路由( IP Prefix Route, Prefix Route) IP 主機路由通告、 IP 網段路由通告

相對于傳統VPN它具有以下優點:

  1. 具有網絡鄰居自發現功能
  2. 支援CE多活模式接入
  3. 減少了網絡間的廣播封包
  4. 可以很好地支援雙活鍊路的負載均衡
  5. 收斂速度快
  6. 無需PE全連接配接
  7. 支援的各類業務場景

鄰居自動發現

EVPN通過IMET Route(Type3 路由)實作鄰居自動發現,如圖2所示,各 PE 啟動 EVPN 之後會互相釋出 IMET Route,其攜帶的關鍵資訊包括 EVPN 執行個體的 RD、PE 的源位址和隧道轉發用的标簽值。PE 收完該路由之後,感覺到了所有 EVPN 鄰居,并在本地生成基于某個 EVPN 執行個體(辨別業務)的鄰居清單,此鄰居清單主要作用是指導 BUM 流量的轉發,是以它被稱為 BUM 流量轉發表。假設 PE1 收到一份BUM 流量時,它就照着 BUM 流量轉發表,給每個鄰居都發一份。

以太網虛拟專用網——EVPN

圖2 鄰居自動發現示意圖

多活模式接入CE

如圖3所示,CE1 雙歸接入 PE1 和 PE2,首先 PE1 和 PE2 互相發送 ES Route(Type4 路由),攜帶的關鍵資訊PE 本地的 ESI 和 PE 的EVPN 源位址,雙方收到路由後發現ESI相同,屬于相同的 ES,于是各自把對方的 EVPN 源位址加入到本地的 ES 成員清單中;然後, PE1 和 PE2 互相發送 Per ES A-D Route(Type1 路由),攜帶的關鍵資訊 PE 本地的 ESI 和 PE 為 ESI 配置設定的标簽值,雙方收到路由後還是先對一下ESI,對上了就把路由攜帶的标簽值貼到對應的 ES 成員身上。

以太網虛拟專用網——EVPN

圖3 ES 成員發現過程

水準分割

如圖4所示, CE1 接入PE1 和 PE2 的鍊路都活躍。假設 CE1 發送了一個廣播封包, PE1 收到後在廣播之前 PE1 要做一件事:檢查一下廣播的對象是否在本地的 ES 成員清單中,如果在ES 成員清單中,則發往廣播封包時多加一個 ESI 标簽值。PE2收到該廣播封包後,發現了自己的 ESI 标簽值,然後果斷丢棄了這個封包。這就是傳說中的水準分割,輕松擊破了接入側環路。

以太網虛拟專用網——EVPN

圖4 水準分割示意圖

DF選舉

如圖5所示,在多活模式下,當 PE1 和 PE2 同時收到一份 BUM 流量時,它們會都發給 CE1,進而導緻 CE1 重複收到相同的流量。重複傳輸的 BUM 流量不僅白白占用 PE 與 CE 間的鍊路帶寬還會造成不良體驗,如追劇螢幕老是重影,聽歌時總是有回音,玩遊戲時打掉一隻怪獸卻發現它又沖過來。

以太網虛拟專用網——EVPN

圖5 BUM 流量多收示意圖

解決思路是在PE間進行選舉,獲勝者被稱為 DF,隻允許它向 CE1 轉發 BUM 流量;落敗者作為 Non-DF,不能轉發 BUM。

如圖6所示, PE1 和 PE2 互動完 ES Route 之後,會各自形成 ES 成員清單,DF 選舉就基于這個表進行,有兩種方式:

  1. 基于接口選舉。首先淘汰掉接口狀态為 Down 的 PE,然後在剩下PE中選舉在 ES 成員清單裡的 EVPN 源位址最小為 DF。
  2. 基于 VLAN 選舉。首先淘汰掉接口狀态為 Down 的 PE;然後在剩下PE中根據公式 V mod N = i 來計算,其中 V 是 VLAN ID, N 是連接配接同一個 CE 的 PE 數量, i 就是 ES 成員清單中被選為 DF 的 PE 序号。如圖 6 中,假設有兩個 VLAN,對于 VLAN10 的業務來說, 10 mod 2 = 0,是以序号為 0 的 PE1就是 DF;對于 VLAN11 的業務來說, 11 mod 2 = 1,是以序号為 1 的 PE2 就是DF。這種方式的好處是不同 VLAN 的業務可以有自己的 DF,便于更精細的控制。
以太網虛拟專用網——EVPN

圖6 DF 選舉示意圖

有效減少廣播

EVPN 通過控制平面學習MAC位址,盡量減少利用廣播來學習 MAC 位址。承擔這一光榮任務的是 MAC/IP Route(Type2 路由),它賴以取勝的“兩闆斧”是 MAC 通告和 ARP 通告。

MAC 通告路由

此形态的MAC/IP Route 攜帶 MAC 位址、 ESI 和二層轉發标簽。如圖 7所示,假設CE1 雙歸接入 PE1 和 PE2。PE1 和 PE2通過轉發平面學到的 CE1 的 MAC 位址 mac1,然後 PE1 和 PE2 分别生成 MAC/IP Route,向所有 EVPN 鄰居通告 mac1。PE1 和 PE2收到彼此發來的MAC/IP Route,發現是 ESI相同,為了避免将來指導封包走彎路,于是仍優選本地學到的 mac1 路由。PE3 和 PE4,作為遠端 PE學到了 mac1的不同下一跳的兩條路由(為後續負載分擔打下基礎),此時它們無需通過廣播就學到了 mac1,如果再收到發往 mac1 的封包,它們也可以直接發送單點傳播封包至mac1,不用再當成未知單點傳播封包進行廣播了,顯著減少了網絡側的廣播封包。

以太網虛拟專用網——EVPN

圖7 MAC 位址學習示意圖

ARP 通告路由

此形态的 MAC/IP Route 攜帶 MAC 位址、 IP 位址、 ESI 和二層轉發标簽。如圖 8 所示, PE1 和 PE2 學習到 CE1 的 MAC 位址 mac1和 IP 位址 ip1, PE1 和 PE2 分别生成 MAC/IP Route,向所有EVPN 鄰居通告 ARP 資訊。

PE1 和 PE2都基于本地的 ARP 資訊生成 ARP Snooping表項,用于 ARP 代答。PE3 和 PE4收到ARP資訊後,由于 ARP“喜新厭舊”的性格,它們會基于較新的 ARP 資訊來生成一條 ARP Snooping 表項。假設之後 PE3 或 PE4 再收到 ARP 請求封包,想擷取 ip1 對應的 MAC 位址, PE3 或 PE4 會先檢查一下本地的ARP Snooping 表項,回複ARP請求。這樣一來就避免了 PE3 和 PE4 繼續廣播 ARP 請求,進而進一步減少了網絡側的廣播封包。

以太網虛拟專用網——EVPN

圖8 ARP 代答示意圖

MAC/IP Route 還有一種形态:IRB 通告路由,攜帶 MAC 位址、IP 位址、ESI、二層轉發标簽和三層轉發标簽,在後面會介紹。

實作負載均衡

如圖 9 所示,假設有 4 條不同的單點傳播業務流量從 CE2 發往 CE1,它們的轉發過程如下:

  1. 流量在 CE2 上通過雙活鍊路進行負載分擔,分别發送到 PE3 和 PE4 上。
  2. 在 PE3 和 PE4 上已經有兩條目的 MAC 位址都是 mac1 且下一跳不同的MAC 路由,是以流量會通過不同的路徑發往 PE1 和 PE2。
  3. PE1 和 PE2 收到流量後,分别根據本地的 MAC 位址表轉發給 CE1。
以太網虛拟專用網——EVPN

圖9 負載均衡示意圖

由于某種原因,如圖10所示, PE2 沒學到CE1的mac1。此時隻有PE1 生成 MAC/IP Route 向 PE3 和 PE4 通告 mac1,這樣下去 PE3 和 PE4 上單點傳播流量的負載分擔就出問題了。

以太網虛拟專用網——EVPN

圖10 PE2 未學到 mac1 示意圖

EVPN通過“别名”的方法解決此問題,如圖 11 所示:

  1. PE1 生成 MAC/IP Route,向 PE3 和 PE4 通告 mac1。
  2. PE2 向 PE3 和 PE4 釋出 Per EVI A-D Route,攜帶的關鍵資訊有 ESI、單點傳播轉發的标簽值。
  3. PE3 和 PE4 雖然沒有收到 PE2 發來的 MAC/IP Route,但是它們發現 PE1 發來的MAC/IP Route 攜帶的 ESI,與 PE2 的 ESI 相同,于是它們認定 PE2 也能到達mac1,并據此更新 MAC 位址表。
  4. PE3 和 PE4 再向 mac1 發送單點傳播流量時,仍然會通過 PE1 和 PE2 進行負載分擔。
以太網虛拟專用網——EVPN

圖11 别名功能示意圖

雖然 PE3 和 PE4 向 PE2 分擔到達 mac1 的單點傳播流量,但是 PE2 并沒有學到 mac1,那流量怎麼轉發?

EVPN 使用“ MAC 重定向”的方式解決此問題:PE1 生成MAC/IP Route 之後也會向 PE2 通告 mac1, PE2 發現這個路由攜帶的 ESI 自己也有,于是将 mac1 的出接口重定向為自己本地連接配接 CE1 的接口,這樣再收到發往 mac1 的流量 PE2 就直接通過本地接口轉發了。

加快網絡收斂速度

如圖 12 所示,假設 PE1 與 CE1 之間的鍊路發生了故障,傳統 L2VPN 處理時:PE1 感覺到故障後,發送 MAC 路由撤銷消息給遠端的 PE3;收到消息的PE3 删除對應的 MAC 表項。這裡面有兩個問題:

  1. PE1 會針對所有不再可達的 MAC 位址逐一發送撤銷消息,如果 MAC 位址數量非常大,撤銷消息會很多,既效率低下又浪費帶寬。
  2. PE3 删了 MAC 表項之後,就沒有到達這些 MAC 位址了,而傳統 L2VPN 不能通過控制平面提前學習 MAC,PE3 隻能通過廣播,并在資料轉發過程中慢慢學習那些删掉的 MAC 位址。
以太網虛拟專用網——EVPN

圖12 傳統 L2VPN 的故障收斂示意圖

EVPN的故障收斂如圖 13 所示,假設 PE1與 CE1 之間的鍊路發生了故障, PE1 感覺到故障後,向 PE3 釋出 Per ES A-D Route(Type1 路由),通知 PE3撤銷所有下一跳是 PE1 的、辨別 esi1 的MAC 路由。因為 PE3 上已存在通過 MAC/IP Route 提前學到的其他路徑,是以業務流量可以自動切換到下一跳是 PE2 的路徑上,無需重新學習 MAC 位址,更不需要廣播。

以太網虛拟專用網——EVPN

圖13 EVPN 的故障收斂示意圖

避免全連接配接

EVPN 借助了 BGP 的路由反射器( Route Reflector, RR)機制,如圖 14 所示,在引入了 RR 之後,各個 PE 隻需要和 RR 建立鄰居關系即可,然後由 RR 将大家的 EVPN 路由反射給彼此。

  1. 顯著提升了 EVPN 網絡的可擴充性:後續擴充 PE隻需和 RR 之間建立 EVPN 鄰居關系就行了。
  2. 大大減少了配置工作量。
  3. 由于 PE 上隻需維持與 RR 的鄰居關系,有效減輕了 PE 裝置的負擔。
以太網虛拟專用網——EVPN

圖14 RR 機制示意圖

統一承載各類業務

在 EVPN 産生之前,二層業務有 VPWS、VPLS 兩種主要的L2VPN 協定,信令協定使用 LDP 或 BGP;三層業務主要是 MPLS L3VPN 協定,信令協定使用 BGP。如圖15所示,在 EVPN 橫空出世之後,業務層面的協定隻有一個EVPN 就夠了,信令協定也都統一為 BGP。簡化網絡協定帶來的直接好處是業務部署更友善了,當網絡發生故障時,定位業務層面的問題就直接排查EVPN 就可以了。

以太網虛拟專用網——EVPN

圖15 協定簡化示意圖

繼續閱讀