# A Network Virtualization Overlay Solution Using Ethernet VPN (EVPN)
**著者**: Ali Sajassi (編集, Cisco), John Drake (編集, Juniper), Nabil Bitar (Nokia), R. Shekhar (Juniper), James Uttaro (AT&T), Wim Henderickx (Nokia)
**発行**: 2018-03 / IETF, RFC 8365, Standards Track(BESS Working Group)
**URL**: https://datatracker.ietf.org/doc/html/rfc8365
---
## 背景と位置づけ
本文書は、[[EVPN]](Ethernet VPN、[[BGP]] ベースの制御プレーンを持つマルチテナント L2 VPN 技術、RFC 7432)を、マルチテナントデータセンター向けの Network Virtualization Overlay(NVO)ソリューションとして転用する方法を規定する標準仕様である。RFC 7364 が定義する NVO の要件——テナントごとのトラフィック隔離、数万〜数十万規模のテナント収容、データセンター内外にまたがる L2 接続の拡張、VM の物理的な移動への追従——を、EVPN が元々マルチプロバイダエッジ VPN 向けに備えていた BGP 制御プレーンの資産(自動検出、Route Target による経路フィルタリング、高速収束、All-Active 多重接続)へ接続することが本文書の狙いである。分析対象のデータプレーンカプセル化は [[VXLAN]]・NVGRE([[@2020__SystemsApproach__Computer Networks - A Systems Approach - Chapter 4 Advanced Internetworking]] が扱う NVGRE と同系)・MPLS over GRE の3種で、GENEVE は将来の別文書([EVPN-GENEVE] draft)に委ねられる。(§1)
## EVPN の主要な特性(§4)
RFC 7432 が定義する EVPN は、以下の10特性によって NVO のスケーラビリティ要件に応える。(1) BGP による制御プレーン配布、共有マルチキャストツリーまたは ingress replication による BUM トラフィック配送、(2) データプレーン学習ではなく制御プレーン学習による MAC/IP アドレス学習(unknown unicast・ARP のフラッディングが不要)、(3) Route Reflector によるフルメッシュ BGP セッションの削減、(4) BGP による自動検出、(5) All-Active 多重接続、(6) 単一の EVPN ルート撤回による mass withdrawal、(7) BGP ルートフィルタリングによる制御プレーントラフィックの限定配布、(8) IEEE 802.1Q VLAN ID の MAC-VRF へのマッピング(VLAN-aware bundle service で最大4094ブリッジテーブル)、(9) VM Mobility 機構、(10) Route Target による論理トポロジ(メッシュ・ハブアンドスポーク・エクストラネット)の柔軟な定義。これらは全て、数百万インスタンス規模を設計目標とする NVO の制御プレーンスケーラビリティに直結する。
## VXLAN/NVGRE カプセル化とEVPN BGPルートの構成(§5)
VXLAN・NVGRE はいずれも共通の物理 IP インフラ上でパケットを運ぶデータプレーンカプセル化で、パケットごとに NVO インスタンスの識別子(VXLAN の VNI、NVGRE の VSID)を含む。VXLAN はさらに、VNI をテナント VID に1対1対応させる基本モードと、内側 VLAN タグを含める拡張モード(VLAN Bundle Service に対応)を持つ。NVGRE は GRE の Key フィールドで VSID を運び、内側 VLAN タグの付与は禁止される。両カプセル化とも EVPN ルートのエンコーディング自体には変更を要さず、BGP Encapsulation Extended Community(RFC 5512)でカプセル化種別(VXLAN/NVGRE/MPLS/MPLS in GRE/VXLAN GPE)を示すだけでよい。(§5.1)
VNI(VSID)のスコープには、データセンター間接続をゲートウェイ(GW)が境界で変換するグローバル一意モデルと、MPLS ラベルのようにダウンストリーム割り当てされローカルにのみ意味を持つモデルの2通りがある(§5.1.1)。EVI(EVPN Instance)へのマッピングには、単一ブロードキャストドメインを単一 EVI に対応させる Option 1(RD/RT を VNI ごとに必要とするが BGP RT constraint による経路フィルタが効く)と、複数 VNI を単一 EVI に束ねる Option 2(VLAN-aware bundle service 相当、RD/RT のプロビジョニングは1つで済むが不要な経路インポートが生じうる)がある(§5.1.2)。Option 1 では RT を AS 番号(2オクテット限定)・auto-derived フラグ・空間種別(VID/VXLAN/NVGRE/I-SID/EVI/dual-VID)・domain-id・Service ID から自動導出できる(§5.1.2.1)。
BGP ルート構成では、EVPN が本来 MPLS ラベルを運ぶために使うフィールド(MAC/IP Advertisement Route の MPLS Label1、Ethernet A-D per EVI Route の MPLS label、IMET Route の PMSI Tunnel attribute 内 MPLS label)を、そのまま 24 ビット VNI フィールドとして転用する。VLAN-Based Service では Ethernet Tag フィールドをゼロに固定し、VLAN-Aware Bundle Service ではブリッジテーブルを識別する VID(ローカル VNI の場合)または VNI(グローバル VNI の場合)を設定する(§5.1.3)。MPLS over GRE の場合、GRE Key フィールドは ECMP ハッシュに使う場合のみ 32 ビットエントロピー値として含め、Checksum・Sequence Number フィールドは含めない(§5.2)。
## 複数データプレーンカプセル化の共存(§6)
1つの EVI 内の NVE(PE)は、BGP Encapsulation Extended Community を用いて互いのサポートするカプセル化を検知しあう。ある PE が複数カプセル化を広告する場合、それらは同一の EVPN 手続き(特にスプリットホライズンフィルタリング)を共有していなければならない——VXLAN と NVGRE、あるいは MPLS と MPLS over GRE は同じ手続きを共有するため併用可能だが、VXLAN と MPLS は(a) MPLS フィールドが MPLS ラベルか VNI のどちらか一方にしか使えず、(b) スプリットホライズン手続きが異なるため、同時広告してはならない(MUST NOT)。
## 単一ホーミング NVE(ハイパーバイザー常駐)(§7)
NVE と VM がハイパーバイザーのように同一物理デバイスに同居する場合、リンクは仮想的であり多重接続を要しない。この場合、必要な EVPN BGP ルート・属性は RFC 7432 の8種類のうち4種類(MAC/IP Advertisement Route、Inclusive Multicast Ethernet Tag Route、MAC Mobility Extended Community、Default Gateway Extended Community)に縮小され、必要な手続きも(1) ローカル MAC 学習、(2) BGP での広告、(3) BGP でのリモート学習、(4) IMET ルートによる NVE 発見とマルチキャストトンネル構築、(5) MAC モビリティ処理、の5つに限定される。ただし、多重接続されたエグレス NVE と相互運用して高速収束・Aliasing・Backup Path の恩恵を受けるには、シングルホーミングの ingress NVE も Ethernet A-D per ES・per EVI ルートの受信・処理を実装すべきである(SHOULD)。
## 多重接続 NVE(ToR スイッチ常駐)(§8)
NVE が ToR スイッチに常駐し、サーバがその ToR 群へ All-Active または Single-Active モードで多重接続される場合、RFC 7432 の多重接続機能一式(自動検出、高速収束/mass withdrawal、スプリットホライズン、Aliasing/Backup Path、DF 選出)がフルに必要になる。このうち VXLAN/NVGRE カプセル化(MPLS クライアント層を持たない)の影響を受けるのはスプリットホライズンフィルタリングのみである。
### スプリットホライズン:Local Bias 方式(§8.3.1)
MPLS ベースの EVPN では、ESI ラベルによってイングレス NVE の起点セグメントを識別し、エグレス NVE 側でループを防ぐ。VXLAN/NVGRE にはこの ESI ラベルが存在しないため、各 NVE が「共有多重接続 ES を持つ相手 NVE の IP アドレス」を追跡し、トンネルヘッダのソース IP アドレスで判定してフィルタリングする **Local Bias** 方式が推奨される。この方式では、イングレス NVE が DF 選出状態に関わらずローカルの全直結 ES へレプリケーションを行う必要があるが、NVE あたり ES 数ではなく NVE あたり1つの IP アドレスだけで済むという利点がある。MPLS over GRE(RFC 7432 準拠のスプリットホライズン)と VXLAN/NVGRE(Local Bias)を同一 ES 上で混在させてはならない(MUST NOT)。
### Aliasing・Backup Path(§8.3.2)、Unknown Unicast 指定(§8.3.3)
Aliasing/Backup Path の手続きは MPLS と VXLAN/NVGRE でほぼ同一で、Ethernet Tag・VNI フィールドの設定のみ §5.1.3 に従う。Unknown Unicast トラフィックの識別には、MPLS では専用ラベルを使うが VXLAN/NVGRE には相当機構がなく、稀なケース(All-Active 多重接続先ホストの MAC がエグレス PE には既知だがイングレス PE にはまだ未着のタイミングで unknown unicast flooding が有効)で一時的な重複配送が起こりうる。これを避けたい場合は VXLAN-GPE の BUM Traffic Bit(B bit)を使う。
## マルチキャストサポート(§9)
IMET ルートが EVI(または VLAN-Aware Bundle Service では〈EVI, VLAN〉)ごとのマルチキャストトンネルを発見する。PMSI Tunnel attribute でトンネル種別(PIM-SSM Tree・PIM-SM Tree・BIDIR-PIM Tree・Ingress Replication のいずれか、RFC 6514 由来)を、BGP Encapsulation Extended Community でカプセル化種別を独立に指定する。ローカル VNI では利用するトンネル種別ごとに IMET ルートを必ず広告しなければならない(MUST)が、グローバル VNI では ingress replication・PIM-SSM は必須(MUST)、PIM-SM・BIDIR-PIM は任意(MAY)でよい。
## データセンター相互接続(DCI)(§10)
DCI には GW 方式と ASBR 方式の2通りがある。
**GW 方式**(§10.1): 各 GW が EVI ごとに MAC-VRF/IP-VRF を保持し、EVPN ルートを終端・再処理する。DC → WAN 方向は常に再広告するが、WAN → DC 方向はデフォルト IP ルート・unknown MAC ルートを用いる場合は再広告しない。これにより NVE 側のテーブルサイズを抑え、mass withdrawal のような障害系ルートがリモート DC の NVE まで伝播しないため収束も速い。
**ASBR 方式**(§10.2): GW 方式の対極で、DCI デバイスは MAC/IP フォワーディングテーブルを持たず、inter-AS Option B([[MPLS]] の BGP/MPLS VPN、RFC 4364 §10)のように end-to-end LSP 確立のためのルート中継に徹する。ローカル割り当て VNI が MPLS VPN ラベル同様に24ビット VPN ラベルとして機能する必要がある。
ASBR が BGP ネクストホップを自身へ書き換えて再広告するため、Aliasing(Ethernet A-D per EVI Route)は RD/RT による経路解決の一意性が保たれ問題なく機能する一方、mass withdrawal(Ethernet A-D per ES Route)は originating PE の識別情報が失われ機能しない。本文書は具体例(PE1・PE2 が CE を多重接続し、ASBR1・ASBR2 を経由して PE3 に到達する Inter-AS Option B トポロジ、Figure 3)で、PE2 の Ethernet A-D per ES ルート撤回が PE3 の L2 RIB を更新できないことを示す。代わりに Ethernet A-D per EVI ルートの撤回によって PE3 が該当 〈ES, EVI, BD〉 の次ホップリストから PE2 を除去できるため、**mass withdrawal は per-ES 粒度から per-EVI 粒度へ後退する**(単一 MAC ごとの撤回よりは高速だが per-ES より収束は遅い)。これが本文書の中心的な発見の1つであり、[[MPLS]] ページが既に記録する inter-AS Option B の一般的な特性(ASBR によるネクストホップ書き換え)が、EVPN の mass withdrawal 機構に対して具体的にどう作用するかを示す事例といえる。
## セキュリティ考慮事項・IANA(§11-12)
セキュリティ考慮事項は VXLAN(RFC 7348)・NVGRE(RFC 7637)のデータプレーン仕様、および BGP(RFC 4271・RFC 4272)の一般的な考慮事項をそのまま継承する。IANA には「BGP Tunnel Encapsulation Attribute Tunnel Types」レジストリへ VXLAN(8)・NVGRE(9)・MPLS(10)・MPLS in GRE(11)・VXLAN GPE(12)の5値が新規登録された。
## 関連概念・エンティティ
- [[EVPN]] — 本文書が NVO 転用の対象とする BGP ベース制御プレーンの中核 concept。新規作成。
- [[VXLAN]] — 本文書が分析する主要データプレーンカプセル化の1つ。新規作成。
- [[MPLS]] — MPLS over GRE カプセル化、および ASBR 方式 DCI の inter-AS Option B との関連で既存 concept を更新。
- [[ネットワーク仮想化]] — RFC 7364/7365 が定義する NVO 要件と、本文書がその実現手段として EVPN を位置づける関係で既存 concept を更新。
- [[オーバーレイネットワーク]] — VXLAN/NVGRE カプセル化による L2-over-IP オーバーレイの制御プレーンとして EVPN を位置づける観点で既存 concept を更新。
- [[Cisco]] / [[Juniper Networks]] / [[Nokia]] / [[AT&T]] — 著者所属組織。
- [[Ali Sajassi]] / [[John Drake]] — 編集者(EVPN の主要設計者、RFC 7432 の著者でもある)。