DMVPN:ネクストホップの重要性

    本ページは英語ドキュメントを翻訳したものです。

     


     

    光ファイバについて理解するために

    DMVPN の概要

     

    ダイナミック マルチポイント仮想プライベート ネットワーク(DMVPN)はコスト効率と拡張性に優れたテクノロジーで、複数のサイトを相互接続するために使用されます。DMVPN は次の 3 つの主要テクノロジーから成るソリューションです。

    1. マルチポイント GRE トンネル
    2. NHRP
    3. IPSec

     

    ここでは、DMVPN の設定ではなく、マルチポイント GRE トンネルと NHRP がルーティング テーブルのネクストホップ値を使用してトンネルを形成する方法に焦点を当てます。

     

    DMVPN の動作の簡素化

     

    DMVPN はハブ ルータとスポーク ルータで構成されます。すべてのスポーク ルータが少なくとも 1 台のハブ ルータに接続します。この設計により、DMVPN は基本的に次の 2 つのモデルのいずれかで動作します。

    1. ハブアンドスポーク
    2. ハブアンドスポークとスポーク間トンネルの組み合わせ

     

    ハブアンドスポーク モデルでは、すべてのトラフィックが最初にハブ ルータを通過します(静的なポイントツーポイント GRE トンネルを使用)。ハブは各パケットを検査して、適切なスポーク ルータに転送します。ハブアンドスポーク モデルは DMVPN フェーズ 1 とも呼ばれています。

     

    ハブアンドスポークとスポーク間トンネルの組み合わせモデルでは、トラフィックがスポーク間を直接行き来することができます(ダイナミック マルチポイント GRE トンネルを使用)。これは DMVPN フェーズ 2 およびフェーズ 3 とも呼ばれています。

     

    NHRP とマルチプロトコル GRE(mGRE)がこれら 2 つのモデルの構成要素になっています。

     

    mGRE

     

    従来の GRE トンネルはポイントツーポイントです。ポイントツーポイントのトンネルではトンネルに対するエンドポイント(宛先アドレス)が 1 つしかありませんが、mGRE トンネルでは複数のトンネル エンドポイントを動的に確立することができます。これにより、ハブ ルータが単一のトンネル インターフェイスを使用して、各スポーク ルータへのトンネルを作成することができます。また、スポーク ルータも単一のトンネル インターフェイスを使用して、他のスポーク ルータへのトンネルを作成することができます。

     

    NHRP

     

    DMVPN が機能できるようにするには、すべての DMVPN ルータが DMVPN ネットワークに接続している機器を把握している必要があります。これは、mGRE トンネルには宛先アドレスが事前設定されないためです。これらのアドレスを何らかの動的な手段によって学習する必要があります。

     

    NHRP は、レイヤ 3 からレイヤ 3 へのマッピングを作成します。これは、レイヤ 2 からレイヤ 3 へのマッピングを作成するイーサネット ネットワークの ARP とは対照的です。ARP は、MAC アドレス(レイヤ 2 アドレス)を IP アドレス(レイヤ 3 アドレス)にマッピングします。一方、NHRP は、オーバーレイ(レイヤ 3 アドレス)をアンダーレイ(レイヤ 3 アドレス)にマッピングします。

     

    適切なマッピングの検出

     

    DMVPN はオーバーレイ ネットワーク テクノロジーです。オーバーレイ ネットワークは既存のネットワーク上に構築されるネットワークです。DMVPN では、DMVPN ネットワーク内でルータを特定するアドレス(オーバーレイ アドレス)と、既存のネットワーク内でルータを特定するアドレス(アンダーレイ アドレスまたは NBMA アドレス)がルータに割り当てられます。 トンネルは、DMVPN ルータの基盤となるアドレスを使用して形成されます。図 1 に簡単な例を示します。

     

    図 1

    FIG.jpg

     

    この図では、R1 にオーバーレイ アドレス 172.16.100.1 とアンダーレイ アドレス 10.0.0.1 が割り当てられています。同様に、R2 にオーバーレイ アドレス 172.16.100.2 とアンダーレイ アドレス 20.0.0.2 が割り当てられています。R1 が R2 のオーバーレイ アドレスにトラフィック(LAN 間プロトコルまたはルーティング プロトコル)を送信する場合、元のパケットの発信元アドレスが R1 のオーバーレイ アドレスになります。このパケットは、GRE によって基盤となるネットワークに作成されたトンネルを通って送信されます。その際、発信元の R1 のアンダーレイ アドレスと宛先の R2 のアンダーレイ アドレスが記載された第 2 の IP ヘッダーが追加されます。基盤となるネットワークは、この外部ヘッダーに基づいて転送先を判断します。図 2 に、結果として生成されたパケットを示します。

     

    図 2

    Packet-Header2.jpg

     

    では、R1 と R2 は互いのアンダーレイ アドレスとオーバーレイ アドレスをどのようにして認識するのでしょうか。この例では、R1 が NHS になっています。そのため、R2 は NHRP の登録メッセージを使用して、そのオーバーレイ アドレスからアンダーレイ アドレスへのマッピングを R1 に送信します。これで R1 は、R2 と通信する際にトンネルを構築するためのアンダーレイ アドレスを認識することができます。

     

    172.16.100.2/32 via 172.16.100.2

    Tunnel0 created 00:29:38, expire 01:30:21

    Type: dynamic, Flags: unique registered

    NBMA address: 20.0.0.2

     

    これは R1 が R2 を認識する方法ですが、R2 は R1 をどのようにして認識するのでしょうか。クライアントは、NHS のアンダーレイ アドレスとオーバーレイ アドレスの静的な NHRP マッピングを設定することによって NHS を認識します。R2 では、これは次のようになります。

     

     

    172.16.100.1/32 via 172.16.100.1

    Tunnel0 created 00:31:07, never expire

    Type: static, Flags:

    NBMA address: 10.0.0.1


     

    DMVPN では、ハブ ルータが NHS として設定され、スポークがクライアントになります。すべてのスポークは、初めて起動したときにハブに登録を行い、自身の存在をアドバタイズするために登録メッセージを定期的に送信します。ハブは NHRP 解決要求を転送できるよう、これらの登録を保存します。スポークは解決要求をハブに送信し、別のスポークとトンネルを構築します。 では、スポークはネットワーク内に存在する他のスポークをどのようにして認識するのでしょうか。

     

    ルーティング:あらゆる情報の提供

     

    スポークが他のスポークを認識し、スポーク間トンネルを形成する方法には 2 種類あります。1 つ目は、ハブがその NHRP マッピング テーブル全体を各スポークに定期メッセージで送信する方法です。この方法では次の 2 つの問題が生じます。

     

    1)スポークがネットワークに追加されたとき、またはスポークがネットワークから削除されたときに、コントロール プレーン トラフィックが追加で作成されます。これはソリューションの拡張機能に影響します。

    2)一部のスポーク同士が直接通信する必要がなくなる可能性があります。その場合、スポークにとって不要な情報がハブからアドバタイズされるため、リソースの無駄遣いにつながります。さらに、スポークは自身が使用しない情報を保存または破棄する必要があります。

     

    もう 1 つは、スポークがスポーク間トンネルを形成する必要がある場合にマッピングを要求する方法です。この方法では、ハブはスポークに関連する情報のみをフラッディングし、スポークはトラフィックを転送するのに必要な情報のみを保存します。この処理は NHRP 解決メッセージを介して行われます。

     

    では、スポークはスポーク間トンネルを形成する必要があるタイミングをどのようにして認識するのでしょうか。

     

    ネクストホップの重要性

     

    DMVPN ではルーティング テーブルが利用されます。スポークは自身をハブ ルータに通知するため、この点はハブ ルータでは明白ではありません。ただし、スポーク同士は相互に通知しません。ルーティング テーブルには、プレフィックスに到達するまでに使用されるネクストホップ ルータに関する情報が格納されます。トンネルの形成をトリガーするのはこの情報です。

     

    では、サンプルのネットワークをさらに詳しく説明しましょう。

     

    図 3

    MainTopology2.jpg

     

    図 3 では、R1 がハブ ルータになっています。各スポーク ルータの背後には、192.168.0.0/16 の範囲のネットワークがあります。これらのネットワークには、DMVPN ネットワークを介して相互に通信する必要があるホストが含まれています。ルーティングはすでに設定されています(プレフィックスを DMVPN ネットワークにアドバタイズするプロトコルとして EIGRP を使用)。

     

    DMVPN では、すべてのスポークがハブ ルータとの間にルーティング隣接関係を構築します。ただし、スポーク ルータ同士ではルーティング隣接関係を構築しません。そのため、すべてのルーティング情報がハブによって中継されます。DMVPN の各種のモデルおよびフェーズは、ハブからスポークへのアドバタイズの際にネクストホップ値が保持されるかどうかによって区別されます。

     

    • フェーズ 1 - ネクストホップがハブで保持されない
    • フェーズ 2 および 3 - ネクストホップがハブで保持される

     

    図 3 のトポロジが純粋にハブアンドスポークの DMVPN ネットワークの場合、R2 のルーティング テーブルは次のようになります。

     

    R2#sh ip route eigrp

    D    192.168.10.0/24 [90/27008000] via 172.16.100.1, 00:00:10, Tunnel0

    D    192.168.30.0/24 [90/28288000] via 172.16.100.1, 00:00:10, Tunnel0

    D    192.168.40.0/24 [90/28288000] via 172.16.100.1, 00:00:10, Tunnel0

     

    各プレフィックスのネクストホップ値が R1(ハブ ルータ)になっていることに注目してください。これは、R2 が 192.168.0.0/16 ネットワークのいずれかにパケットを送信する場合は必ず、ネクストホップとして R1 を使用することを意味します。これにより、NHRP マッピング テーブルが参照され、R1 のオーバーレイ アドレスに対する適切なアンダーレイ アドレスが検出されるようになります。パケットはハブに送信され、ハブがそのパケットを検査して、適切な宛先に転送します。

     

    R2 がスポーク間トンネルを構築するには、受信プレフィックスのネクストホップ値を、プレフィックスを送信したスポークのオーバーレイ アドレスにする必要があります。このため、ハブアンドスポークとスポーク間トンネルの組み合わせモデルでは、R2 のルーティング テーブルが次のようになるはずです。

     

    R2#sh ip route eigrp

    D    192.168.10.0/24 [90/27008000] via 172.16.100.1, 00:00:06, Tunnel0

    D    192.168.30.0/24 [90/28288000] via 172.16.100.3, 00:00:06, Tunnel0

    D    192.168.40.0/24 [90/28288000] via 172.16.100.4, 00:00:06, Tunnel0

     

    R2 が R3 の 192.168.30.0/24 ネットワークにトラフィックを送信する必要がある場合は必ず、そのルーティング テーブル内のプレフィックスが R3 のオーバーレイ アドレスを示します。R2 はその後、R3 の適切なアンダーレイ アドレスを取得するために NHRP マッピングを参照しますが、結局はエントリがないことがわかるだけです。R2 は NHRP 解決要求を使用して、ハブにマッピング情報を要求することができます。この要求は R3 に転送され、R3 が R2 に直接応答します。R2 に作成される NHRP マッピング テーブルは次のようになります。

     

    R2#sh ip nhrp

    172.16.100.1/32 via 172.16.100.1

    Tunnel0 created 00:00:44, never expire

    Type: static, Flags: used

    NBMA address: 10.0.0.1

    --- omitted ---

    172.16.100.3/32 via 172.16.100.3

    Tunnel0 created 00:00:29, expire 01:59:30

    Type: dynamic, Flags: router used

    NBMA address: 30.0.0.3

     

    まとめ

     

    トンネルの作成をトリガーするのはネクストホップ値です。

     

    DMVPN フェーズ 1 では、ハブアンドスポーク トンネルのみが存在します。スポーク間のすべてのトラフィックのネクストホップはハブ ルータでなければなりません。すべてのトラフィックはハブを経由するため、通常、ハブはスポークへのデフォルト ルートにフラッディングします。

     

    DMVPN フェーズ 2 およびフェーズ 3 では、動的なスポーク間トンネルが存在します。各プレフィックスのネクストホップは、プレフィックスを送信したスポークである必要があります。こうすることで、スポークが適切なアンダーレイ アドレスに解決され、最終的にスポーク間トンネルを構築できるようになります。

     

    DMVPN ネットワークの設計では、この点に留意する必要があります。また、これらの要件を満たすよう、IGP を適切にチューニングする必要があります。さらに、ハブ ルータとスポーク ルータの負荷を軽減するために実装可能なその他の各種の最適化機能も用意されています。その詳細については、今後のブログ記事で説明する予定です。

    CLNBanner