このページの目次
EVPN と VXLAN の設定
Contrail は、イーサネット VPN(EVPN)と仮想拡張可能ローカル エリア ネットワーク(VXLAN)をサポートしています。
EVPNは、レイヤー2オーバーレイを使用してデータセンター内の複数のエッジ(仮想マシン)を相互接続する柔軟なソリューションです。従来、データセンターはフラットなレイヤー2ネットワークとして構築されており、フラッディング、冗長性とプロビジョニングの制限、大量のMACアドレス学習などの問題があり、ノード障害時にチャーンが発生します。EVPNは、フラットMAC接続を妨げることなく、これらの問題に対処するように設計されています。
EVPNでは、MACアドレス学習はデータプレーンではなくコントロールプレーンによって駆動されます。これは、仮想フォワーダ全体で学習されたMACアドレスを制御するのに役立ち、フラッディングを回避します。フォワーダは、ローカルで学習された MAC アドレスをコントローラにアドバタイズします。コントローラは、MP-BGP を使用してピアと通信します。EVPNにBGPを使用するコントローラのピアリングにより、コンバージェンスが良好で高速になります。
EVPN では、MAC 学習は仮想マシンが属する仮想ネットワークに限定されるため、複数の仮想ネットワーク間のトラフィックが分離されます。このようにして、仮想ネットワークはトラフィックを交差させることなく、同じMACアドレスを共有できます。
EVPN でのユニキャスト
ユニキャスト転送は、トラフィックがローカルエンドポイントで終端できる、またはリモートエンドポイントに到達するようにカプセル化されるMACアドレスに基づいています。カプセル化には、MPLS/UDP、MPLS/GRE、または VXLAN が可能です。
EVPNにおけるBUMトラフィック
マルチキャストおよびブロードキャスト トラフィックは、仮想ネットワークであふれています。レプリケーションツリーは、フォワーダから送信されたエンドノード(仮想マシン)のアドバタイズメントに基づいて、コントロールプレーンによって構築されます。各仮想ネットワークにはディストリビューションツリーが 1 つあり、ファブリックノードでマルチキャスト状態を維持しないため、ノードがマルチキャストの影響を受けません。レプリケーションはエッジ フォワーダーで行われます。グループごとのサブスクリプションは提供されません。ブロードキャスト、不明なユニキャスト、マルチキャスト (BUM) トラフィックは同じ方法で処理され、仮想マシンが属する仮想ネットワークにフラッディングされます。
VXLAN
VXLANは、MACフレームをレイヤー2のUDPヘッダーにカプセル化するオーバーレイ技術です。2 つの仮想トンネル エンドポイント(VTEP)間で通信が確立されます。VTEP は、仮想マシンのトラフィックを VXLAN ヘッダーにカプセル化するだけでなく、カプセル化を取り除きます。仮想マシンは、同じ VXLAN セグメントに属している場合にのみ相互に通信できます。24ビット仮想ネットワーク識別子(VNID)は、VXLANセグメントを一意に識別します。これにより、トラフィックを交差させることなく、複数の VXLAN セグメントで同じ MAC フレームを持つことができます。VXLAN のマルチキャストはレイヤー 3 マルチキャストとして実装され、エンドポイントがグループに登録します。
EVPN および VXLAN の設計の詳細
Contrail リリース 1.03 以降では、EVPN はデフォルトで有効になっています。サポートされている転送モードは次のとおりです。
フォールバック ブリッジング - IPv4 トラフィック ルックアップは IP FIB を使用して実行されます。IPv4 以外のトラフィックはすべて MAC FIB に送信されます。
レイヤー 2 のみ:すべてのトラフィックが MAC FIB ルックアップを使用して転送されます。
転送モードは、各仮想ネットワークで個別に構成できます。
EVPNは、両方の転送モデルの異なるコントロールプレーン間でMACアドレスを共有するために使用されます。MAC アドレス ルックアップの結果はネクスト ホップであり、IP 転送と同様に、ローカル バーチャル マシンまたはリモート サーバー上のバーチャル マシンに到達するトンネルを指し示します。EVPN でサポートされているトンネルのカプセル化方法は、MPLSoGRE、MPLSoUDP、および VXLAN です。選択されるカプセル化方法は、ユーザーが設定した優先度に基づきます。
VXLAN では、VNID は、VXLAN ヘッダーで伝送されるすべての仮想ネットワークに一意に割り当てられます。VNID は仮想ネットワークを一意に識別します。リモート サーバーのファブリックから VXLAN ヘッダーを受信すると、VNID ルックアップにより仮想マシンの VRF が提供されます。この VRF は、インナー ヘッダーからの MAC ルックアップに使用され、宛先仮想マシンを提供します。
非 IP マルチキャスト トラフィックは、IP マルチキャストと同じマルチキャスト ツリー(255.255.255.255)を使用します。マルチキャストは、ブリッジング テーブルの全ブロードキャスト プレフィックス(FF:FF:FF:FF:FF:FF)と照合されます。VXLAN は、IP/非 IP マルチキャスト トラフィックではサポートされていません。
次の表は、EVPN でサポートされるトラフィックとカプセル化のタイプをまとめたものです。
カプセル 化 |
||||
MPLS-GRE |
MPLS-UDP |
VXLAN |
||
トラフィック タイプ |
IP ユニキャスト |
はい |
はい |
いいえ |
IP-BUM |
はい |
はい |
いいえ |
|
非 IP ユニキャスト |
はい |
はい |
はい |
|
非IP-BUM |
はい |
はい |
いいえ |
VXLAN 識別子モードの設定
Contrail Web UI を使用するか、Python ファイルを変更することで、グローバル VXLAN 識別子モードを設定して、自動生成された VNID またはユーザー生成された VXLAN ID を選択できます。
グローバル VXLAN 識別子モードを設定するには:
または、Python を使用して VXLAN 識別子モードを設定し、次のようにファイルを変更する /opt/contrail/utils/encap.py
こともできます。
python encap.py <add | update | delete > <username > < password > < tenant_name > < config_node_ip >
転送の設定
Contrail では、フォールバック ブリッジング(IP FIBおよびMAC FIB)に対してデフォルトの転送モードが有効になっています。モードは、Contrail Web UI または Python プロビジョニング コマンドを使用して変更できます。
転送モードを変更するには:
転送モードの完全なリストは、/ usr/src/contrail/contrail-web-core/config/config.global.js ファイルのエントリを変更した場合にのみ表示されます。例えば:
L2 を選択可能にするには、次の場所を見つけます。
config.network = {}; config.network.L2_enable = false;
エントリを次のように変更します。
config.network = {}; config.network.L2_enable = true;
他の選択を使用可能にするには、対応するエントリを変更します。
ファイルを保存し、エディターを終了します。
Contrail Web ユーザー インターフェイス プロセス(webui)を再起動します。
または、次の Python プロビジョニング コマンドを使用して、転送モードを変更することもできます。
python provisioning_forwarding_mode --project_fq_name 'defaultdomain: admin' --vn_name vn1 --forwarding_mode < l2_l3| l2 >
オプション:
l2_l3
= IP FIBおよびMAC FIB(フォールバックブリッジング)を有効にする
l2
= MAC FIBのみを有効にする(レイヤー2のみ)
VXLAN 識別子の設定
VXLAN 識別子は、VXLAN ネットワーク識別子モードが [ユーザー設定] に設定されている場合にのみ設定できます。その後、Contrail Web UI または Python コマンドを使用して、VXLAN ID を設定できます。
グローバル VXLAN 識別子を設定するには:
または、次の Python プロビジョニング コマンドを使用して、VXLAN 識別子を構成することもできます。
python provisioning_forwarding_mode --project_fq_name 'defaultdomain: admin' --vn_name vn1 --forwarding_mode < vxlan_id >
カプセル化方法の設定
EVPN のデフォルトのカプセル化モードは MPLS over UDP です。ファブリック上のすべてのパケットは、仮想マシンインターフェイスに割り当てられたラベルでカプセル化されます。ラベルのエンコードとデコードは、IP 転送の場合と同じです。EVPN でサポートされているその他のカプセル化方法には、MPLS over GRE および VXLAN があります。MPLS over UDPがMPLS over GREと異なるのは、トンネルヘッダーのカプセル化の方法だけです。
VXLANには独自のヘッダーがあり、VNIDラベルを使用してファブリック上でトラフィックを伝送します。VNID はすべての仮想ネットワークに割り当てられ、仮想ネットワーク内のすべての仮想マシンで共有されます。VNID は、それが属する仮想ネットワークの VRF にマッピングされます。
カプセル化方法を適用する優先順位は、Contrail Web UI または encap.py ファイルで設定されたメソッドの順序によって決まります。
グローバル VXLAN 識別子モードを設定するには:
Contrail Web UIから、[ インフラストラクチャ>グローバル設定の設定]>を選択します。
グローバル構成オプションが表示されます。
編集アイコン
をクリックします。
「グローバル設定の編集」ウィンドウが 図 5 のように表示されます。

[カプセル化の優先順位] で、次のいずれかを選択します。
MPLS over UDP
MPLS over GRE
VxLAN
最初の優先度の右側にある + プラス記号をクリックして、2 番目の優先度または 3 番目の優先度を追加します。
encap.py ファイルを編集してデフォルトのカプセル化方法を VXLAN に変更するには、次の手順を使用します。
VXLAN は EVPN ユニキャスト でのみ サポートされます。IPトラフィックまたはマルチキャストトラフィックではサポートされていません。 encap.py ファイルでの VXLAN の優先度とプレゼンス、または Web UI で設定された VXLAN の優先度とプレゼンスは、VXLAN でサポートされていないトラフィックの場合は無視されます。
VXLAN にカプセル化方法の優先度を設定するには: