Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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 識別子モードを設定するには:

  1. Contrail Web UIから、[ インフラストラクチャ>グローバル設定の設定]>を選択します。

    グローバル構成のオプションと値が [グローバル構成] ウィンドウに表示されます。

    図 1: VXLAN ID Global Config Window for VXLAN ID のグローバル設定ウィンドウ
  2. 編集アイコン をクリックします。

    「グローバル設定の編集」ウィンドウが 図 2 のように表示されます。

    図 2: VXLAN 識別子モード Edit Global Config Window for VXLAN Identifier Modeのグローバル設定ウィンドウの編集
  3. 次のいずれかを選択します。
    • 自動構成 — VXLAN 識別子が仮想ネットワークに自動的に割り当てられます。

    • ユーザー設定 – 仮想ネットワークの VXLAN 識別子を指定する必要があります。

    メモ:

    [ユーザー設定] が選択されている場合、識別子を指定しないと、VXLAN カプセル化は使用されず、モードは MPLS にフォールバックします。

または、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 プロビジョニング コマンドを使用して変更できます。

転送モードを変更するには:

  1. Contrail Web UI から、[> ネットワーク>ネットワークの設定] を選択します。
  2. 転送モードを変更する仮想ネットワークを選択します。
  3. 歯車アイコン をクリックし、[ 編集] を選択します。

    図 3 に示すような [ネットワークの編集] ウィンドウが表示されます。

    図3:[ネットワークの編集]ウィンドウ Edit Network Window

    [詳細オプション] で、次の選択肢から転送モードを選択します。

    • [ 既定 ] を選択して、既定の転送モードを有効にします。

    • L2 と L3 を選択して、IP および MAC FIB(フォールバック ブリッジング)を有効にします。

    • MAC FIB のみを有効にするには、[ L2 のみ ] を選択します。

    • IP のみを有効にするには、[ L3 のみ ] を選択します。

メモ:

転送モードの完全なリストは、/ usr/src/contrail/contrail-web-core/config/config.global.js ファイルのエントリを変更した場合にのみ表示されます。例えば:

  1. L2 を選択可能にするには、次の場所を見つけます。

  2. エントリを次のように変更します。

  3. 他の選択を使用可能にするには、対応するエントリを変更します。

  4. ファイルを保存し、エディターを終了します。

  5. 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 識別子を設定するには:

  1. Contrail Web UI から、[> ネットワーク>ネットワークの設定] を選択します。
  2. 転送モードを変更する仮想ネットワークを選択します。
  3. 歯車アイコン をクリックし、[ 編集] を選択します。

    「ネットワークの編集」ウィンドウが表示されます。図 4 に示すように、[詳細オプション] を選択します。

    図4:VXLAN識別子 Edit Network Window for VXLAN Identifierのネットワークウィンドウの編集
  4. VXLAN 識別子を入力します。
  5. 保存」をクリックします。

または、次の 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 のように表示されます。

図 5: カプセル化の優先順位の Edit Global Config Window for Encapsulation Priority Orderグローバル設定ウィンドウの編集

[カプセル化の優先順位] で、次のいずれかを選択します。

  • MPLS over UDP

  • MPLS over GRE

  • VxLAN

最初の優先度の右側にある + プラス記号をクリックして、2 番目の優先度または 3 番目の優先度を追加します。

encap.py ファイルを編集してデフォルトのカプセル化方法を VXLAN に変更するには、次の手順を使用します。

メモ:

VXLAN は EVPN ユニキャスト でのみ サポートされます。IPトラフィックまたはマルチキャストトラフィックではサポートされていません。 encap.py ファイルでの VXLAN の優先度とプレゼンス、または Web UI で設定された VXLAN の優先度とプレゼンスは、VXLAN でサポートされていないトラフィックの場合は無視されます。

VXLAN にカプセル化方法の優先度を設定するには:

  1. /opt/contrail/utils/ ディレクトリにある encap.py ファイルを変更します。

    デフォルトのカプセル化行は次のとおりです。

    encap_obj=EncapsulationPrioritiesType(encapsulation=['MPLSoUDP','M PLSoGRE'])

    行を次のように変更します。

    encap_obj=EncapsulationPrioritiesType(encapsulation=['VXLAN', 'MPLSoUDP','MPLSoGRE'])

  2. ステータスが変更されたら、次のスクリプトを実行します。

    python encap_set.py <add|update|delete> <username> <password> <tenant_name> <config_node_ip>

    この構成は、すべての仮想ネットワークにグローバルに適用されます。