OVS使用LISPトンネル

LISPは、イーサネットヘッダでカプセル化されたパケットは、二階を運ぶことなく、トンネルを介してARP要求パケットを送信しないことを意味し、三層トンネリングメカニズムです。支持L3トンネルが改善されるまでこのように、オープンのvSwitch提供LISPトンネルは、余分な工程を必要とします。

このガイドは、LISPトンネルは、2台のVMの仮想マシン、IPv4アドレスによって到達可能なそれらの間のOVSブリッジの異なるハイパーバイザに接続された2台の仮想マシンとの間に位置することを前提としています。もちろん、複数の仮想マシンが任意のハイパーバイザに接続することができ、ハイパーバイザハイパーバイザは、LISPを介してトンネルと通信するための異なるインターフェースの複数であってもよいです。LISP「マップキャッシュは、」この資料の最後の例を参照して、流れを達成するために使用することができます。

以下の状況:

  1. (別のサブネット上の仮想マシン)も、同じサブネット上の仮想マシン、ハイパーバイザーのIPアドレス単一のサブネット。
  2. IPの同じサブネット上の仮想マシンのアドレスが、ハイパーバイザは、ルータ(ない同じサブネット内)で区切られます。
  3. 異なるサブネット内の仮想マシン。

ケース1)とでは3)、ARPは正常に動作することを決意する:ARPトラフィックがトンネルLISPを通過しないように設定されています。ケース1の場合)ARPは、2つのインスタンスOVS MACアドレス学習がデフォルトで有効になっている場合は、別のVMに到達することができます。ケース3の場合)仮想マシンのデフォルトルータとして構成されたハイパーバイザーが必要です。

ケース2)仮想マシンは、ARP応答の他の側面を期待しますが、3つのネットワークにこれは不可能です。一つの解決策は、(例えば、起動UnixベースのVMで実行されるVMスタティックMACアドレスエントリを事前に設定することですarp -f /etc/ethers)。またはプロキシARPを行うには、ハイパーバイザをしましょう。この場合には、次の例ではeth0、BR0ブリッジを追加する必要がありません。

受信側では、元のMACヘッダパケットが到着せずに補完。トンネルLISPコードは、送信元および宛先MACのハードコードされたアドレス追加02:00:00:00:00:00ヘッダ。局所投与のビットに加えて、このアドレスのすべてのビット以外のビットは、既存のMACアドレスとの潜在的な競合を回避するために、0に設定されています。その意図した宛先に到達するために、データパケットを作成するには、宛先MACアドレスを書き換える必要があります。これは、流量計を使用して行うことができます。

次の設定例を参照して、必要なフローの関連付けがLISPトンネルルール可能。

    Diagram

           +---+                               +---+
           |VM1|                               |VM2|
           +---+                               +---+
             |                                   |
        +--[tap0]--+                       +--[tap0]---+
        |          |                       |           |
    [lisp0] OVS1 [eth0]-----------------[eth0] OVS2 [lisp0]
        |          |                       |           |
        +----------+                       +-----------+

ハイパーバイザ、インターフェースTAP0、eth0のlisp0のそれぞれに、独立したブリッジの例に加え、ポート番号が1,2,3に変更されます。

$ ovs-vsctl add-br br0
$ ovs-vsctl add-port br0 tap0
$ ovs-vsctl add-port br0 eth0
$ ovs-vsctl add-port br0 lisp0 \
  -- set Interface lisp0 type=lisp options:remote_ip=flow options:key=flow

最後のコマンドは、トンネルのlisp0フローベースのインタフェース上に設けられています。LISPの観点から、それはトンネルルータマップキャッシュはフロールールとして実装されているようなものです。

次のようにBR0ブリッジストリームを構成する必要があります。

    priority=3,dl_dst=02:00:00:00:00:00,action=mod_dl_dst:<VMx_MAC>,output:1
    priority=2,in_port=1,dl_type=0x0806,action=NORMAL
    priority=1,in_port=1,dl_type=0x0800,vlan_tci=0,nw_src=<EID_prefix>,action=set_field:<OVSx_IP>->tun_dst,output:3
    priority=0,action=NORMAL

第3の規則は、キャッシュエントリをマップに類似している:nw_srcマッチングフィールドが指定<EID_prefix>RLOCにマッピングし<OVSx_IP>、このフィールドは、この特定のフロー・トンネルの宛先に設定されています。

あなたは、ストリーム内のインスタンスのIDを使用している場合は別の方法として、アクションのリストに追加することができますset_tunnel:<IID>

おすすめ

転載: blog.csdn.net/sinat_20184565/article/details/94590346