NBMAでのIPマルチキャスト
NBMAのハブ&スポークトポロジの問題点
フレームリレーのハブ&スポークの環境では、Pruneメッセージによって必要なマルチキャストパケットが止まってしまうことがあります。たとえば、次のようなネットワーク構成を考えます。
この図では、R1がハブルータでR2とR3がスポークルータです。R2とR3の配下にレシーバが存在しています。話を簡単にするために、PIM-DMを利用しているとします。R1の(S,G)エントリのOILにはSerial0/0が登録されます。
ここで、レシーバ2がマルチキャストグループを脱退したとします。すると、R3はマルチキャストパケットが不要になるので、上流のR1へPruneメッセージを送信します。しかし、R2の配下にはレシーバ1が存在するので、R2はマルチキャストパケットを必要としています。イーサネットやフルメッシュフレームリレーであれば、R2はR3から送信されたPruneメッセージをJoinメッセージで
上書き(Joinオーバーライド)します。
ところが、ハブ&スポーク環境ではR2はR3がPruneメッセージを送信したことを検出できません。その結果、R1のOILに登録されているSerial0/0がPrune状態となり、マルチキャストパケットがルーティングされなくなってしまいます。
すると、レシーバ1はマルチキャストグループを脱退したわけではないのに、
マルチキャストパケットが届かなくなってしまいます。
NBMAモード
このような問題を解決するために、NBMAモードの設定を行います。NBMAモードの設定は、インタフェースコンフィグレーションモードで次のコマンドを入力します。
Router(config-if)#ip pim nbma-mode
NBMAモードの設定をしたインタフェースをOILに追加するときに、PIMネイバーのIPアドレスも一緒に記録するようになります。先ほどのネットワーク構成のR1でSerial0/0をNBMAモードとして設定すると、OILは
- Serial0/0 192.168.1.2
- Serial0/0 192.168.1.3
となります。
レシーバ2が脱退してR3からPruneメッセージが送信されると、R1はOILの
- Serial0/0 192.168.1.3
の状態をPrune状態として、R3にはマルチキャストパケットをルーティングしないようになります。
※ここまでの解説では、PIM-DMを想定しています。PIM-SMでも同様です。
また、NBMAモードを設定したインタフェースはディストリビューションツリーのIncoming InterfaceとOILの両方に現れることができるようになります。原則として、Incoming InterfaceはOILには現れませんが、NBMAモードを設定したインタフェースでは例外です。
ハブ&スポークトポロジのスポークにソースとレシーバが存在するような環境で、マルチキャストルーティングを行いたいときにもNBMAモードの設定を行います。
※ただし、このようなソースとレシーバの配置は望ましいものではありません。
※PIM Joinメッセージについても、同様のことが言えます。原則として、PIM Joinメッセージを受信したインタフェースからPIM Joinメッセージを送信しません。NBMAモードを設定したインタフェースは例外です。NBMAモードの設定をしているインタフェースでPIM Joinメッセージを受信した場合、同じインタフェースからPIM Joinメッセージを送信できます。