マルチキャストルーティングの問題 解答と解説【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をまとめたものが次の図です。

multicast_routing_problem02.jpg

図 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ではないので無視します。すると、ここで共有ツリーの作成ができなくなってしまいます。

multicast_routing_problem03.jpg

図 R3から送信する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
-----------------

multicast_routing_problem04.jpg
図 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を送信しません。

multicast_routing_problem05.jpg
図 R1での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
---------------------

multicast_routing_problem06.jpg

図 R1でのPIM(*,G)Join (NBMAモード)

≪設定後のディストリビューションツリー≫

設定した後、ソースから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
-----------------