🌐

EVPN/VXLAN -座学編-

に公開

EVPN/VXLANとは

データセンターネットワークで使用されているL3ネットワーク上にL2ネットワークを構築するL2VPNを実現するための技術でコントロールプレーンのEVPNとデータプレーンのVXLANの2つの技術を組み合わせています。
初期のVXLANは、コントロールプレーンを使用せずマルチキャストベースのflood&learningとして構想されていました。しかし、スケーラビリティやデータセンター内, アンダーレイNWでのマルチキャストは望まれていませんでした。
以上の問題を克服するためにMP-BGP EVPNをVXLANのコントロールプレーンとして活用していくことになりました。

MP-BGP EVPNとは

Ethernet VPNのことでL2VPNの技術として使われている。
MP-BGPによりIPv4以外のプロトコルについてもBGPで広報ができ、MP-BGP EVPNはMAC/IPアドレス, IP Prefix, RD/RT, VTEP/VNIなどの情報を学習し、EVPNネイバーと共有することで、VXLANはどこのリモートVTEPの背後にどのホストが所属しているのかを知り、カプセル化を行うことができる。
さらに、BUMトラフィックやARP抑制などによるネットワークフラティングを最小限にすることやIRBやSVIをサポートしており、EVPN/VXLAN上でのL2VPNの通信に加えL3VPNが可能となる。
IRBやSVIをサポートしていることでVTEPがMACアドレスに加えてIPアドレスを持つことができるのでL3VPNのゲートウェイとしての役割やMAC/IPアドレスのテーブルを保持することができ、リモートVTEP先のホストのARPに対してもローカルVTEPからARPを返す(ARP Suppression)ことができ、ARPのFloodingを減少させることにつながる。

※ BUMトラフィックとは、Broadcast, Unknow unicast, Multicast パケットのこと
※ ARP抑制とは、ARPフラティングを抑制するためにローカルVTEPがARP解決を代わりに行う

Route-Type

EVPNには5つのRoute-Typeが存在し、それぞれ以下のような情報を広報している

Route-Type 1

広報するもの 用途
Ethernet Auto-discovery Route Multi-homing

VTEPが自分が接続しているイーサネットセグメント(ESI: Ethernet Segment Identifier)をBGP EVPN制御プレーンを介してアドバタイズするために使用する。

Route-Type 2

広報するもの 用途
MAC/IP Advertisement Route ホストのMAC/IPアドレスの広報

ホストのMAC/IPアドレスを持つことでL2VNIに加えてL3VNIも同時に持つことができる。
VTEPが新しいMACアドレスを学習/削除すると直ちにRoute Type 2でMAC/IPアドレスとL2/L3VNIと自身のVTEPのIPアドレスを広報することでVTEP間での転送テーブル更新し、同期をする。

Route-Type 3

広報するもの 用途
Inclusive Multicast Ethernet Tag Route BUMの転送先の決定

VTEPに新しいVNIが追加/削除されるとRoute Type 3で広報され、VTEPとVNIの対応表を更新する。
VTEPとVNIの対応表がBUMの転送先を表している。

Route-Type 4

広報するもの 用途
Ethernet Segment Route Multi-homing

イーサネットセグメントの冗長性を提供するために、イーサネットセグメント識別子 (ESI) と、指定フォワーダー (DF) 選出に必要なVTEPのIPアドレスをアドバタイズするために使用する。

Route-Type 5

広報するもの 用途
IP Prefix Route IP Prefixの広報

IP PrefixとNext-hopを広報する。主にEVPNネットワークの外部ネットワークへの到達性のために利用されるがIRBのConnected経路(L2VNIのセグメント)も広報されるのでVXLAN間ルーティングができる。

RD(Route Distinguisher)

RDはIPv4アドレスの前に付加してVPNv4プレフィックスを形成することで、BGPテーブルにおいて同じIPv4アドレスでも区別できるようにするもの

RT(Route Target)

VPNv4プレフィックスにさらにRTを加えることで、経路情報を挿入するVRFを識別することができる。

RDとRTの話はこれが1番わかりやすい

card

Export RT

VPNv4プレフィックスを送信する際に付与されるVRFによるVPNの識別子
1つのVPNv4プレフィックスに対して、複数のRT値を付与することができる

Import RT

受信したVPNv4プレフィックスをどのVRFに転送するのかを判断するためのVPN識別子
受信したVPNv4プレフィックスのRT値を見て、自ルータ上で設定したImport RT値が一致したVRFに経路情報を取り込む

VRF

今までVRFの話が出てきてましたが、説明してなかったのでやっておこうと思います。
VRF(Virtual Routing and Forwarding)とは、1つのルータ上で独立した複数のルーティングテーブルを保持できる技術になってます。
基本的に、VRFといえばIP-VRFのことを言い、MAC-VRFはルーティングテーブルではなくフォワーディングテーブルの分離を行っており、EVPNの文脈でしか聞いたことしかないので初耳な方もいると思います。

IP-VRF

みんながいつも使っている方のVRFで、ルーティングテーブルの分離に使用されています。Route DistinguisherやRoute Targetを使用することで受け取った経路をそれぞれのVRFにインストールします。

MAC-VRF

MAC-VRFはフォワーディングテーブルの分離をしており、Route DistinguisherやRoute Targetで識別するのではなく、VNIごとに識別してフォワーディングテーブルに経路情報をインストールします。
次に示すEVPN Service Interfaceによってフォワーディングテーブルの分離の仕方などが変わります。さらにEVPN Service Interfaceが異なることによって通信ができないことになるので注意してください。

EVPN Service Interface

EVPN Service InterfaceはEVI, Bridge Domain, Broadcast Domain(VLAN)の関係により、以下の画像のように3つのタイプに区別されます。
画像はそれ本当にEVPNでやるの?EVPNの使いドコロがわかる150分をから引用しています。
card

少しわかりにくいと自分では感じたので、簡略化した図を作成したのでそっちで説明をしたいと思います。

VLAN-Based

card

1つのEVPN instanceに1つのVNIとMAC-VRFが紐づいており、VLAN-Based の場合、すべての EVPN Route の Ethernet tag が 0になります。
Ethernet tag は Broadcast Domain を識別するために利用されるますが、1 EVI につき 1 Broadcast Domain のため、常に0となるためEthernet tag 値は不要になります。

VLAN-Bundle

card

1つのEVPN instanceに複数のVNIが紐づくがMAC-VRFは複数VNIで共通のものを利用しています。

VLAN-Aware Bundle

card

1つのEVPN instanceに複数のVNIが紐づき、MAC-VRFはVNIごとに1対1対応しています。
EVPN Route の Ethernet tag を Broadcast Domain を識別する値として利⽤しています。

VXLANとは(Virtual eXtensible Local Area Network)

VXLANはL3ネットワーク上に論理的なL2ネットワークを構築するトンネリングプロトコル
VNI(VXLAN ID)でイーサネットフレームをカプセル化することでトンネリングを実現しています。

VTEP(VXLAN Tunnel End Point)

VTEPとはトラフィックがVXLANトンネルに出入りする仮想インターフェイス
VNI(VXLAN Network Identifier)と呼ばれる論理ネットワークを識別するIDを付与して、VXLANパケットのencap/decapを行います。
その際、VTEPでのencap/decap時にVLANIDとVNIの変換が入るので互いのMappingが必要になります。
VXLANでカプセル化したパケットはこのVTEPを送信元, 送信先として使用しています。

EVPN/VXLANの動作について

画像の出典元は、VXLAN-EVPN 勉強まとめになります。

L2VNI

card
L2VNIは1つのL2ネットワークに対応しており、VLANとL2VNIが1対1で対応しています。
MAC-VRFで分離しているフォワーディングテーブルをもとにVTEPがリモートVTEP宛にカプセリングしてL2VPNを実現しています。

L3VNI

card
L3VNIは1つのL3ネットワークに対応しており、IP-VRFに接続したL2VNI同士を繋げることでL3VPNを実現しています。
マルチテナントによるVXLAN間ルーティングやEVPNVXLAN外のネットワークへの通信に使われます。

IRB(Integrated Routing and Bridging)

IRBとは、読んで字の如くルーティングとブリッジングの両方を行うことができるものです。

Symmetric IRB

card
IngressとEgressのencap/decapで使用するVNI(L3VNI)が同じで、Ingress側のIRBでルーティングを行い、L3VNIでencap/decapを行いEgress側でも目的のVNIのIRBにルーティングを行い通信を行います。
画像で言うと、ホストA(192.168.10.1)からホストD(192.168.20.2)へと通信を行う際に、Ingress側では192.168.10.0/24側のIRBからL3VNIのVNI30のIRBへルーティングされてカプセル化されてEgress側に送られます。Egress側でもL3VNIのIRBから目的の192.168.20.0/24側のIRBへとルーティングされてからホストDに到達します。
他にも、Asymmetricというのがあるので気になる方は調べてください。

参考文献

Discussion