PIM-SMの動作をサンプル構成をもとに解説していきます。
以下の記事を先に読んでいただくことをお勧めします。
>> 参考 : 【初心者わかりやすく】マルチキャストルーティングの第1歩マルチキャスト設定
IGP設定
まずは、各ネットワーク間がユニキャストでルーティングできるように設定します。ここでは、OSPFで設定しているとします。
注意として、配信サーバはマルチキャストだけ配信できれば良いので、デフォルトゲートウェイは設定しなくても良いです。 受信機もマルチキャストを受信するだけなら、デフォルトゲートウェイ設定は不要ですが、配信サーバからのマルチキャスト宛のPingに返答ができるように、今回はデフォルトゲートウェイを設定します。
マルチキャストルーティングの有効化
Ciscoでは、マルチキャストルーティングはデフォルトで無効のため、有効にします。
R2,R3,R5 (config)# ip multicast-routing
インタフェースでPIM-SMを有効
下記、インタフェースで、PIM-SMを有効にします。
配信サーバ、受信機 それぞれが接続されているインタフェースもPIM-SMを有効にします。
R2,R3,R5 (config-if)# ip pim sparse-mode
PIM-SMをインタフェースで有効にすることで、ルータはPIM Helloパケットを送信し始めます。
例えば、R2→R3を観察します。 30秒間隔でPIM Helloが送信されていることがわかります。ホールドタイムは、デフォルトで30秒の3.5倍で105秒です。 R3からも同様にPIM Helloが送信されます。
コンソール上では、以下のログを出力され、R2とR3はPIM隣接関係になります。
R2 %PIM-5-NBRCHG: neighbor 192.168.23.3 UP on interface FastEthernet0/0.23 R3 %PIM-5-NBRCHG: neighbor 192.168.23.2 UP on interface FastEthernet0/0.23
コマンドではshow ip pim neighbor で隣接関係を確認できます。
R2# show ip pim neighbor PIM Neighbor Table Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority, P - Proxy Capable, S - State Refresh Capable, G - GenID Capable Neighbor Interface Uptime/Expires Ver DR Address Prio/Mode 192.168.23.3 FastEthernet0/0.23 00:45:16/00:01:43 v2 1 / DR S P G 192.168.25.5 FastEthernet0/0.25 00:44:40/00:01:20 v2 1 / DR S P G
R2、R3、R5間それぞれ同様の動作によりPIM隣接関係を構築します。
ランデブーポイントの設定
では、ランデブーポイント(RP)を設定します。今回はR5のループバックアドレス(5.5.5.5)をRPとします。 今回は、RPを動的に学習するのではなく、手動で構成します。
R5 R5(config)# interface Loopback0 R5(config-if)# ip address 5.5.5.5 255.255.255.255 R5(config-if)#! R5(config-if)# router ospf 1 R5(config-router)# network 5.5.5.5 0.0.0.0 area 0 !
R2、R3、R5 (config)# ip pim rp-address 5.5.5.5
するとコンソール上に以下のログが出力されます。
R2 %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to up R3 %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to up R5 %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to up %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel1, changed state to up
トンネルインタフェースがUPしています。 全ルータで、Tunnel0がUPし、RPであるR5だけ Tunnel1がUPしています。 トンネルインタフェースは何に使うのでしょうか。
動作確認
PIMレジスタ
配信サーバからのマルチキャスト(239.1.1.1)の内容を、ファーストホップルータであるR2は、RP(R5)に対して、PIMレジスタとして送信します。 このPIMレジスタにトンネルインタフェースが使用されます。 Tunnel0は、PIMレジスタのカプセル化に使用し、Tunnel1はPIMレジスタのカプセル化解除に使用します。
配信サーバから、239.1.1.1へPingを実行し、R2とR5間のPIMレジスタを確認します。
これで、RPに配信サーバ(192.168.12.1)から239.1.1.1へのマルチキャストの登録を試みます。次にRP自身が、ファースホップルータ向けにPIM Join を送り、192.168.12.1から239.1.1.1へのマルチキャストを受信すると、RPは、PIMレジスタ停止(Register-stop)が送信されます。
PIM参加と離脱
受信機が239.1.1.1を受信したい場合、ラストホップルータであるR3にIGMPを送信します。(IGMPv2の動作はhttps://hirotanoblog.com/multicast-igmpv2/1442/を参照してください)。IGMPを受信したR3はRPへ接続するインタフェースよりPIM参加(PIM Join)を送信します。
R3〜R5間のPIM参加のパケットは以下のようになります。
マルチキャストルーティングの確認
共有ツリー・送信元ツリー
マルチキャストルーティングを確認します。マルチキャストルーティングでは、共有ツリーと送信元ツリーが作成されます。
説明 | |
共有ツリー | RPから配信されるマルチキャストのルーティング情報。RPは複数の送信元で共有されるため、このような名前が付いています。 PIM-SMの場合、共有ツリーは必ず作成されます。マルチキャストパケットを受信して、送信元アドレスがわかると、送信元ツリーへ推移します。 |
送信元ツリー | 特定の送信元アドレスから配信されるマルチキャストのルーティング情報 |
スパニングツリーの記事でも書きましたが、ツリーという言葉が出てきたら、一番大事なことは、ツリーのルート(根っこ)はどこなのかを意識することです。 スパニングツリーの根っこはルートブリッジです。
では、マルチキャストの共有ツリーと送信元ツリーのそれぞれの根っこは以下の通りです。
根っこは? | |
共有ツリー | ランデブーポイント(RP) |
送信元ツリー | 配信元サーバ(送信元アドレス) |
あと、ツリーは根っこから枝の先までループしないことを保証する必要があります。 マルチキャストにおいて、根っこ(共有ツリー:ランデブーポイント、送信元ツリー:送信元アドレス)に対して、RPFを実行することで、ループを排除します。
R2のルーティング確認
R2# show ip mroute 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, E - Extranet, 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, V - RD & Vector, v - Vector Outgoing interface flags: H - Hardware switched, A - Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.1.1.1), 00:02:31/stopped, RP 5.5.5.5, flags: SPF Incoming interface: FastEthernet0/0.25, RPF nbr 192.168.25.5 Outgoing interface list: Null (192.168.12.1, 239.1.1.1), 00:02:31/00:03:26, flags: FT Incoming interface: FastEthernet0/0.12, RPF nbr 0.0.0.0 Outgoing interface list: FastEthernet0/0.25, Forward/Sparse, 00:02:31/00:02:56
説明 | |
共有ツリー | (*, 239.1.1.1) は、送信元は任意で、宛先239.1.1.1のパケットについてのルーティングです。このようなパケットはRPから配信される、共有ツリーです。Incoming interfaceは、RP向けのFastEthernet0/0.25です。転送先はいないので、Outgoing interfaceはありません。 |
送信元ツリー | (192.168.12.1, 239.1.1.1)は送信元192.168.12.1から宛先239.1.1.1のパケットについてのルーティングです。 Incoming interfaceは、配信サーバがいるFastEthernet0/0.12となり、Outgoing interfaceはRP向けの FastEthernet0/0.25となります。 |
R5のルーティング確認
R5# show ip mroute 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, E - Extranet, 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, V - RD & Vector, v - Vector Outgoing interface flags: H - Hardware switched, A - Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.1.1.1), 00:22:28/00:02:41, RP 5.5.5.5, flags: S Incoming interface: Null, RPF nbr 0.0.0.0 Outgoing interface list: FastEthernet0/0.35, Forward/Sparse, 00:08:08/00:02:41 (192.168.12.1, 239.1.1.1), 00:03:04/00:02:53, flags: T Incoming interface: FastEthernet0/0.25, RPF nbr 192.168.25.2 Outgoing interface list: FastEthernet0/0.35, Forward/Sparse, 00:03:04/00:02:41
説明 | |
共有ツリー | (*, 239.1.1.1)は、RPから配信される共有ツリーを表します。Incoming interfaceは自身がRPなので、Nullとなります。Outgoing interfaceは、受信機向けのFastEthernet0/0.35となります |
送信元ツリー | (192.168.12.1, 239.1.1.1)は送信元192.168.12.1から宛先239.1.1.1のパケットについてのルーティングです。 Incoming interfaceは、配信サーバがいるFastEthernet0/0.25となり、Outgoing interfaceは受信機向けのFastEthernet0/0.35となります。 |
R3のルーティング確認
R3# show ip mroute 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, E - Extranet, 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, V - RD & Vector, v - Vector Outgoing interface flags: H - Hardware switched, A - Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.1.1.1), 00:22:55/00:02:06, RP 5.5.5.5, flags: SC Incoming interface: FastEthernet0/0.35, RPF nbr 192.168.35.5 Outgoing interface list: FastEthernet0/0.34, Forward/Sparse, 00:08:35/00:02:06
説明 | |
共有ツリー | (*, 239.1.1.1)は、RPから配信される共有ツリーを表します。Incoming interfaceはRP向けのFastEthernet0/0.35で、Outgoing interfaceは受信機がいる FastEthernet0/0.34です。 |
これで、R3は、共有ツリーをもとに、ランデブーポイントから239.1.1.1のパケットを受信し、受信機へ転送できます。
共有ツリー→送信元ツリーへの切り替え
ここで受信機から一番近いルータ(R3: ラストホップルータ)は、送信元のアドレスが192.168.12.1 だとわかります。 ここで、共有ツリーから送信元ツリーに切り替えます。192.168.12.1へ向けのインタフェースに239.1.1.1に対してのPIM参加を送信します。(ルーティングテーブルを参照し192.168.12.1宛の出力インタフェースから送信されます。)
R3からのPIM参加のパケットは以下です。
これで、R2からマルチキャストパケットを受信すると、もうランデブーポイントからマルチキャストパケットを受信する必要がないので、R5向けにPIM Pruneメッセージを送信します。
R3からRP向けのPIM Pruneメッセージは以下です。
R3のルーティングテーブルを見ると、送信元ツリーが登録されていることがわかります。
R3# show ip mroute
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, E - Extranet,
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,
V - RD & Vector, v - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 01:39:26/stopped, RP 5.5.5.5, flags: SJC
Incoming interface: FastEthernet0/0.35, RPF nbr 192.168.35.5
Outgoing interface list:
FastEthernet0/0.34, Forward/Sparse, 01:25:06/00:02:30
(192.168.12.1, 239.1.1.1), 00:00:05/00:02:54, flags: JT
Incoming interface: FastEthernet0/0.23, RPF nbr 192.168.23.2
Outgoing interface list:
FastEthernet0/0.34, Forward/Sparse, 00:00:05/00:02:54
ラストホップルータの共有ツリーから送信元ツリーの推移はデフォルトで即時に実行されます。
これで、ランデブーポイントを経由せず、最短経路で、配信元サーバから受信機まで、マルチキャストが配信されました。
疎通確認
配信元サーバ(Ciscoデバイスを使用)で239.1.1.1にPingを実行すると、レスポンスが確認できます。
R1# ping 239.1.1.1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:
Reply to request 0 from 192.168.34.4, 28 ms
設定情報
各ルータの設定内容をまとめます。
R2(config)# ip multicast-routing R2(config)# interface FastEthernet0/0.12 R2(config-subif)# ip pim sparse-mode R2(config-subif)# interface FastEthernet0/0.23 R2(config-subif)# ip pim sparse-mode R2(config-subif)# interface FastEthernet0/0.25 R2(config-subif)# ip pim sparse-mode R2(config)# ip pim rp-address 5.5.5.5 R2(config)# router ospf 1 R2(config-router)# network 192.168.12.0 0.0.0.255 area 0 R2(config-router)# network 192.168.23.0 0.0.0.255 area 0 R2(config-router)# network 192.168.25.0 0.0.0.255 area 0
R3(config)# ip multicast-routing R3(config)# interface FastEthernet0/0.23 R3(config-subif)# ip pim sparse-mode R3(config-subif)# interface FastEthernet0/0.34 R3(config-subif)# ip pim sparse-mode R3(config-subif)# interface FastEthernet0/0.35 R3(config-subif)# ip pim sparse-mode R3(config)# ip pim rp-address 5.5.5.5 R3(config)# router ospf 1 R3(config-router)# network 192.168.23.0 0.0.0.255 area 0 R3(config-router)# network 192.168.35.0 0.0.0.255 area 0
R5(config)# ip multicast-routing R5(config)# interface Loopback0 R5(config-if)# ip address 5.5.5.5 255.255.255.255 R5(config-if)# interface FastEthernet0/0.25 R5(config-subif)# ip pim sparse-mode R5(config-subif)# interface FastEthernet0/0.35 R5(config-subif)# ip pim sparse-mode R5(config)# ip pim rp-address 5.5.5.5 R5(config)# router ospf 1 R5(config-router)# network 5.5.5.5 0.0.0.0 area 0 R5(config-router)# network 192.168.25.0 0.0.0.255 area 0 R5(config-router)# network 192.168.35.0 0.0.0.255 area 0
最後までお読み頂きありがとうございました。
コメント