マルチキャストルーティングの問題 解答と解説【CCIEレベル】
目次
解答
R1 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ interface Serial0/0 ip pim nbma-mode ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ R3 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ip pim spt-threshold infinity group-list 1 ip mroute 10.0.0.2 255.255.255.255 192.168.100.1 ! access-list 1 permit 239.3.3.3 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
解説
まず、前回の問題の設定をあらためて確認しておきます。PIM-SMを有効にしているインタフェースと考えている239.3.3.3のグループのソース、レシーバ、RPをまとめたものが次の図です。
図 239.3.3.3に関するマルチキャストルーティングの構成
通常のマルチキャストルーティングは、PIM-SMの有効化およびRPアドレスの設定を行えば、たいていは動作します。しかし、今回の構成はそれだけではうまくマルチキャストルーティングできないようにしています。ポイントは、次の2点です。
- R3でのRPFネイバーの変更
- フレームリレーハブ&スポークトポロジでのマルチキャストルーティング
追加でこの2点を考慮した設定をしなければ、マルチキャストルーティングできないようにしています。
≪R3でのRPFネイバーの変更≧
R3はレシーバが直接接続されるラストホップルータです。レシーバからのIGMPレポートをトリガーにして、RPまでPIM(*,G)Joinを送信します。PIM(*,G)JoinはRPFインタフェースからRPFネイバーに対して送信します。R3でのRPアドレス10.0.0.2に対するRPFインタフェースとRPFネイバーは、次のようになります。
RPFインタフェース:Serial0/0
RPFネイバー:192.168.100.2
R3とR2の間には直接のFR PVCはありません。R3はR1との間でLSDBの同期を取っています。ですが、R2とR3のSerial0/0は同一サブネットです。そのため、OSPFでのSPFの計算の結果、10.0.0.2/32に対するネクストホップは192.168.100.2になります。つまり、RPアドレス10.0.0.2に対するRPFネイバーも192.168.100.2です。R3はSerial0/0から192.168.100.2に対してPIM(*,G)Joinを送信します。R3から送信されたPIM(*,G)JoinはR1へ届きます。R1は自身に対するPIM(*,G)Joinではないので無視します。すると、ここで共有ツリーの作成ができなくなってしまいます。
R3は共有ツリーを作成するために192.168.100.2(R2)ではなく、192.168.100.1(R1)に対してPIM(*,G)Joinを送信しなければいけません。そのために、R3でRPアドレス10.0.0.2に対するRPFネイバーを192.168.100.1へと変更します。RPFネイバーの変更は、ip mrouteコマンドで行います。
R3 RPFネイバーの変更 ----------------- ip mroute 10.0.0.2 255.255.255.255 192.168.100.1 -----------------
図 RPFネイバー変更後のR3から送信するPIM(*,G)Join
そして、デフォルトではすぐにスイッチオーバーしてR3は(S,G)エントリを作成しようとします。送信元ツリーでも同じ問題が発生します。ただ、今回の構成ではスイッチオーバーしても意味がないので、スイッチオーバーしないようにSPT Thresholdをinfinityにします。
R3 SPT Thresholdの設定 ----------------- ip pim spt-threshold infinity group-list 1 access-list 1 permit 239.3.3.3 -----------------
または、スイッチオーバー後に作成される(S,G)エントリのRPFネイバーを192.168.100.1になるようにip mrouteの設定を行ってもOKです。ソースは、192.168.22.0/24上に接続されているので、192.168.22.0/24に対するRPFネイバーをip mrouteコマンドで次のように変更します。
R3 192.168.22.0/24に対するRPFネイバーの変更 ----------------- ip mroute 192.168.22.0 255.255.255.0 192.168.100.1 -----------------
≪フレームリレーハブ&スポークトポロジでのマルチキャストルーティング≧
続いて、フレームリレーハブ&スポークトポロジを考慮した設定についてです
。
マルチキャストルーティングの原則として、マルチキャストパケットを受信したインタフェースからはマルチキャストパケットを出力しません。ディストリビューションツリーを作成するためのPIM Joinメッセージも同様です。原則として、PIM Joinメッセージを受信したインタフェースからPIM Joinメッセージを送信しません。ディストリビューションツリーの情報で考えると、原則としてIncoming IFはOILに含まれることがないということです。
すると、今回考えているようなフレームリレー ハブ&スポークトポロジでは、ディストリビューションツリーを作成することができず、マルチキャストパケットのルーティングを行うことができません。
今回の構成は、R1がハブルータです。R3からPIM(*,G)JoinをSerial0/0で受信します。R1ではRPアドレス10.0.0.2に対するRPFインタフェースはSerial0/0でRPFネイバーは192.168.100.2です。Serial0/0でPIM(*,G)Joinを受信しているため、Serial0/0から192.168.100.2に対してPIM(*,G)Joinを送信しません。
このようにハブ&スポークトポロジでは、ハブルータを経由したマルチキャストルーティングは原則としてできなくなってしまいます。それを解消するためには、NBMAモードの設定を行います。NBMAモードの設定を行っているインタフェースであれば、PIM Joinを受信しても、そのインタフェースからPIM Joinをさらに送信することができます。また、NBMAモードの設定を行っているインタフェースで受信したマルチキャストパケットを同じインタフェースから転送できます。つまり、NBMAモードの設定をしたインタフェースはIncoming IFにもOILにも現われることができるようになります。
R1でのNBMAモードの設定は、次のように行います。
R1 NBMAモードの設定 --------------------- interface Serial0/0 ip pim nbma-mode ---------------------
≪設定後のディストリビューションツリー≫
設定した後、ソースから239.3.3.3にパケットを送信したときの各ルータのデ
ィストリビューションツリーは次のようになります。
R2 show ip mroute 239.3.3.3 ----------------- R2#sho ip mroute 239.3.3.3 IP Multicast Routing Table Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected, L - Local, P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT, M - MSDP created entry, X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement, U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel, z - MDT-data group sender, Y - Joined MDT-data group, y - Sending to MDT-data group Outgoing interface flags: H - Hardware switched, A - Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.3.3.3), 00:04:24/00:03:06, RP 10.0.0.2, flags: S Incoming interface: Null, RPF nbr 0.0.0.0 Outgoing interface list: Serial0/0, Forward/Sparse, 00:00:24/00:03:06 (192.168.22.100, 239.3.3.3), 00:04:24/00:00:38, flags: T Incoming interface: FastEthernet1/0.22, RPF nbr 0.0.0.0 Outgoing interface list: Serial0/0, Forward/Sparse, 00:00:24/00:03:06 ----------------- R1 show ip mroute 239.3.3.3 ----------------- R1#show ip mroute 239.3.3.3 IP Multicast Routing Table Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected, L - Local, P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT, M - MSDP created entry, X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement, U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel, z - MDT-data group sender, Y - Joined MDT-data group, y - Sending to MDT-data group Outgoing interface flags: H - Hardware switched, A - Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.3.3.3), 00:00:47/00:03:00, RP 10.0.0.2, flags: S Incoming interface: Serial0/0, RPF nbr 192.168.100.2 Outgoing interface list: Serial0/0, 192.168.100.3, Forward/Sparse, 00:00:47/00:03:00 ----------------- R3 show ip mroute 239.3.3.3 ----------------- R3#show ip mroute 239.3.3.3 IP Multicast Routing Table Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected, L - Local, P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT, M - MSDP created entry, X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement, U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel, z - MDT-data group sender, Y - Joined MDT-data group, y - Sending to MDT-data group Outgoing interface flags: H - Hardware switched, A - Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.3.3.3), 00:31:03/00:02:37, RP 10.0.0.2, flags: SCL Incoming interface: Serial0/0, RPF nbr 192.168.100.1, Mroute Outgoing interface list: Loopback0, Forward/Sparse, 00:31:03/00:02:37 -----------------