はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
最近、作成した記事を見直していて、マルチキャストシリーズが中途半端になっていたので、「PIM-DM」について、まとめてみました。

ここ最近、更新が止まっていました・・・
PIM-DMとはなんだ?
マルチキャストを学ぶ上で避けては通れない「PIM-DM」と「PIM-SM」。
今回は、その1つである「PIM-DM」について、理解していきましょう。

PIM-DMとは?
PIM-DMとは、「Denseモードのマルチキャストルーティングプロトコル」になります。
以下の図の通り、各送信元ごとにマルチキャストパケットを送信するツリーが構成され、各ユーザにデータ配信が行われるのがPIM-DMです。
各送信元ごとにツリーが構成されるため、各ルータが保持するツリー量が増えることによる負荷増大や帯域圧迫につながるデメリットがあります。
一方、最短経路でツリーが作成されるので遅延を意識する必要がなくなるメリットもあります。

このプロトコルの特徴は、ディストリビューションツリーの作成に「FloodとPrune」を利用することです。

FloodとPruneはDenseモードのプロトコルで一般的に利用されるよ!

FloodとPruneとは?
PIM-DMのディストリビューションツリーを構成するために、「Flood」と「Prune」といった機能を利用しています。
この章では、「Flood」と「Prune」とは何か?について、説明していきます。
Floodとは?
Floodとは、「マルチキャストトラフィックをそのルータの全PIMネイバーに対し、送信すること」を示します。
この後に説明する「Pruneメッセージ」が送られ、Prune状態になるまで、マルチキャストの送信が継続します。


この後実機確認してパケットの中身を見てみます!
Pruneとは?
Pruneとは、「PIMネイバーが存在しない場合、マルチキャスト送信元がある上位のルータに対しPruneメッセージを送り、受け取ったルータはそのネイバーに対し、マルチキャストパケットを送信しなくなる機能」です。
このPrune状態になった場合、180秒間はマルチキャストを送信しないため、通信ができなくなります。
しかし、180秒後には再度、「Flood&Prune」を実施し、送信元ツリーの形状が変わっていくという機能・動作が「Flood&Prune」なのです。


これも後で実機でパケットがどうなってるか見てみますよ!
マルチキャストの経路制御で重要なRPFとは?
RPF(Reverse Path Forwarding)とは、「マルチキャストの経路を制御し、ネットワークループを発生させないための重要な機能」になります。
RPFの動作は、送信元IPアドレスをルーティングテーブルで確認し、マルチキャストパケットを受信したインターフェースが正しいのかどうかをチェックします。(具体的には以下のフローで説明します)
マルチキャストパケットの送信元IPアドレスをユニキャストルーティングテーブルからチェックします。
Step1でチェックした結果から、送信元IPアドレスにパケットを送る場合、どのインターフェースから送信するのが正しいのかチェックします。
Step1/Step2でチェックしたインターフェースとマルチキャストを受信したインターフェースが一致すれば、最短経路で受け取っていると判断され、OIL(Outgoing Interface List)を参照し、他のルータに送信されます。


実機で確認してみよう!
ここまでPIM-DMについて、まとめたところで次は実機で動作を確認していきます。

今回もCisco IOSを利用して確認してみます
確認項目
今回の動作確認では、以下の4項目について確認してみます。
No2の「ネイバー状態の確認」とNo4の「Flood/Pruneの確認」については、パケットキャプチャも実施し、実際にやりとりされているパケットの中身も見てみたいと思います。
No | 項目 | 目的 |
---|---|---|
1 | PIM-DMの基本設定 | PIM-DM設定方法の確認 |
2 | ネイバー状態の確認 | 設定時のPIMネイバーの確立動作を確認 |
3 | 送信元ツリーの確認 | 送信元ツリーの状態やRPFやOILを確認 |
4 | Flood/Pruneの確認 | Flood/Pruneの動作・パケットキャプチャを実施 |
今回の検証構成
今回の動作確認では、以下の構成で検証を行います。
Router1からRouter6のアンダーレイはOSPFを設定しており、各ルータのLoopbackは「10.0.X.1/32 *X:ルータ番号」としています。

項目1:PIM-DMの基本設定
基本的な設定内容
PIM-DMの場合、マルチキャストを有効にする「ip multicast-routing」とPIM-DMを有効にしいインターフェースに「ip pim dense-mode」を設定する必要があります。
(config)# ip multicast-routing
(config-if)# ip pim dense-mode
実機への設定ログ
では、実際に実機に設定してみましょう。
まずは、設定投入前の事前確認を行ってみましょう
Router2# show ip mroute
IP Multicast Forwarding is not enabled.
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,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector, p - PIM Joins on route,
x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
Router2#show ip multicast
Multicast Routing: disabled
Multicast Multipath: disabled
Multicast Route limit: No limit
Multicast Fallback group mode: Sparse
Number of multicast boundaries configured with filter-autorp option: 0
MoFRR: Disabled
Router2#
上記では、マルチキャストルーティングテーブルを確認する「show ip mroute」とマルtキャストの状態を確認する「show ip multicast」で確認しています。
その結果、マルチキャストは有効化されておらず、何も設定されていないのがわかると思います。
では、以下Configを投入し設定していきたいと思います。
Router2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router2(config)#ip multicast-routing
Router2(config)#interface gigabitEthernet 0/1
Router2(config-if)#ip pim dense-mode
Router2(config)#end
Router2#wr
Building configuration...
[OK]
状態確認
基本設定を投入した後の状態を確認してみましょう。
Router2#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,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector, p - PIM Joins on route,
x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 224.0.1.40), 00:01:44/00:02:56, RP 0.0.0.0, flags: DCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/1, Forward/Dense, 00:01:44/stopped
Router2#show ip multicast
Multicast Routing: enabled
Multicast Multipath: disabled
Multicast Route limit: No limit
Multicast Fallback group mode: Dense
Number of multicast boundaries configured with filter-autorp option: 0
MoFRR: Disabled
上記の結果からマルチキャストが有効化されていることがわかります。
項目2:ネイバー状態の確認
基本的な設定を終えた後は、ネイバーの状態を確認していきます。

正直、項目1で確認できるんですけどね・・・
事前状態の確認
まず、事前状態の確認として、「マルチキャストの状態」と「PIMネイバーの状態」を確認します。
Router6#show ip mroute
IP Multicast Forwarding is not enabled.
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,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector, p - PIM Joins on route,
x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
Router6#show ip multicast
Multicast Routing: disabled
Multicast Multipath: disabled
Multicast Route limit: No limit
Multicast Fallback group mode: Sparse
Number of multicast boundaries configured with filter-autorp option: 0
MoFRR: Disabled
Router6#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,
L - DR Load-balancing Capable
Neighbor Interface Uptime/Expires Ver DR
Address
事前の状態では、マルチキャストもPIM-DMも無効化の状態です。
Config投入
次に、項目1でも説明しているConfigを投入していきます。
Router6#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router6(config)#ip multicast-routing
Router6(config)#interface gigabitEthernet 0/3
Router6(config-if)#ip pim dense-mode
Router6(config-if)#end
Router6#
Config投入時のデバッグログ
Config投入時に出力されたデバッグログは以下の通りです。
Router6#
*Aug 22 00:48:28.924: MCAST-RWATCH: -client 0x5E19AFC: PIM RPF
*Aug 22 00:48:28.925: MCAST-RWATCH: -client 0x5E19AFC: IGMP RPF
*Aug 22 00:48:28.929: MCAST-RWATCH: Sending Topo state: 2 for topoid: 8000 to PIM Process
*Aug 22 00:48:28.930: IPMCAST-TOPO(0): message handling: topology (topoid 0x8000) state change UP
*Aug 22 00:48:28.944: %PIM-5-NBRCHG: neighbor 10.6.0.1 UP on interface GigabitEthernet0/3
*Aug 22 00:48:28.944: PIM(0): Update GigabitEthernet0/3/10.6.0.1 to (*, 224.0.1.40), Forward state, by PIM *G Join
*Aug 22 00:48:29.027: PIM(0): Building Graft message for 224.0.1.40, GigabitEthernet0/3: no entries
*Aug 22 00:48:30.876: PIM(0): Check DR after interface: GigabitEthernet0/3 came up!
*Aug 22 00:48:30.876: PIM(0): Changing DR for GigabitEthernet0/3, from 0.0.0.0 to 10.6.0.2 (this system)
*Aug 22 00:48:30.876: %PIM-5-DRCHG: DR change from neighbor 0.0.0.0 to 10.6.0.2 on interface GigabitEthernet0/3
*Aug 22 00:48:30.927: PIM(0): Building Graft message for 224.0.1.40, GigabitEthernet0/3: no entries
このデバッグログを一つずつ見ていきましょう
No | デバッグログ | 説明 |
---|---|---|
1 | %PIM-5-NBRCHG: neighbor 10.6.0.1 UP on interface GigabitEthernet0/3 | PIMネイバーの確立ログ |
2 | PIM(0): Update GigabitEthernet0/3/10.6.0.1 to (*, 224.0.1.40), Forward state, by PIM *G Join | 10.6.0.1から(*,224.0.1.40)への真ルチキャストグループへの参加 |
3 | PIM(0): Building Graft message for 224.0.1.40, GigabitEthernet0/3: no entries | *グラフト:Pruneされた経路を再アクティブ化するために利用 | グラフトメッセージの構築 + アクティブするEntryがない
4 | PIM(0): Check DR after interface: GigabitEthernet0/3 came up! | Flood/Pruneの動作・パケットキャプチャを実施 |
5 | PIM(0): Changing DR for GigabitEthernet0/3, from 0.0.0.0 to 10.6.0.2 (this system) | DR選出 |
6 | %PIM-5-DRCHG: DR change from neighbor 0.0.0.0 to 10.6.0.2 on interface GigabitEthernet0/3 | DR選出が完了 |
Config投入時のパケットキャプチャ
Config投入前後のパケット配下画像の内容になります。

上記から分かる通り、IGMPv2によるメンバーシップレポートの送信に始まり、PIMv2のHelloメッセージをやりとりしていることがわかります。
これは、ルータ6からIGMPv2によるマルチキャストグループ参加を通知し、受理された後はPIMv2でやりとりしていることがわかります。
では、PIMv2 Helloメッセージの中身はどうなっているのか、見てみましょう。

上記の通り、PIMのメッセージタイプは「Hello」となっており、各オプションの値が出力されています。
事後状態の確認
最後にCLIによる事後状態の確認を行います。
以下の出力結果からもPIMネイバーが確立されていることがわかると思います。
Router6#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,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector, p - PIM Joins on route,
x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 224.0.1.40), 00:00:07/00:02:54, RP 0.0.0.0, flags: DCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/3, Forward/Dense, 00:00:07/stopped
Router6#show ip multicast
Multicast Routing: enabled
Multicast Multipath: disabled
Multicast Route limit: No limit
Multicast Fallback group mode: Dense
Number of multicast boundaries configured with filter-autorp option: 0
MoFRR: Disabled
Router6#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,
L - DR Load-balancing Capable
Neighbor Interface Uptime/Expires Ver DR
Address Prio/Mode
10.6.0.1 GigabitEthernet0/3 00:00:16/00:01:28 v2 1 / S P G

項目3:送信元ツリーの確認
項目1では基本的な設定方法、項目2ではPIMネイバーの状態を確認しました。
ここでは、マルチキャストでは欠かせない送信元ツリーの状態を確認していきましょう。
今回は、「ルータ1」、「ルータ2」、「ルータ5」の3台の状態を確認していきます。
この検証項目で用いたマルチキャストのグループアドレスは「239.1.1.1」、送信元は「192.168.10.2」となっています。

ルータ1の状態
ルータ1の状態は、以下の状態となっていますが、黄色の文字の部分が送信元ツリーを表しています。
Router1#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,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector, p - PIM Joins on route,
x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 00:15:27/stopped, RP 0.0.0.0, flags: D
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/2, Forward/Dense, 00:15:27/stopped
GigabitEthernet0/1, Forward/Dense, 00:15:27/stopped
(192.168.10.2, 239.1.1.1), 00:00:07/00:02:52, flags: PT
Incoming interface: GigabitEthernet0/1, RPF nbr 10.1.0.2 →ルータ2向けのIF
Outgoing interface list:
GigabitEthernet0/2, Prune/Dense, 00:00:07/00:02:52, A→ルータ3向けのIF
(*, 224.0.1.40), 1w3d/00:02:20, RP 0.0.0.0, flags: DCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/2, Forward/Dense, 4d10h/stopped
GigabitEthernet0/1, Forward/Dense, 1w3d/stopped
Router1#
Outgoing InterfaceのGi0/2は、Prune状態になっていますが、確かにルータ6配下のUserにはマルチキャストの設定をいれてない かつ ルータ5へはルータ2経由が最短経由となるため、Prune状態が正しい状態となります。
ルータ2
ここでは、SenderがInterface Gi0/4に接続されており、Gi0/1~0/3がそれぞれPIM-DMが構築されていることがわかります。
ルータ1でも述べた通り、Gi0/1はPrune状態、Gi0/2とGi0/3はForward状態が正しいのです。
Router2#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,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector, p - PIM Joins on route,
x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 10:04:56/stopped, RP 0.0.0.0, flags: DC
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/4, Forward/Dense, 10:04:56/stopped
GigabitEthernet0/3, Forward/Dense, 10:04:56/stopped
GigabitEthernet0/2, Forward/Dense, 10:04:56/stopped
GigabitEthernet0/1, Forward/Dense, 10:04:56/stopped
(192.168.10.2, 239.1.1.1), 00:19:00/00:01:53, flags: T
Incoming interface: GigabitEthernet0/4, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/1, Prune/Dense, 00:00:39/00:02:20
GigabitEthernet0/2, Forward/Dense, 00:05:41/stopped
GigabitEthernet0/3, Forward/Dense, 00:06:31/stopped
(*, 224.0.1.40), 10:22:19/00:02:43, RP 0.0.0.0, flags: DCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/3, Forward/Dense, 10:22:19/stopped
GigabitEthernet0/2, Forward/Dense, 10:22:19/stopped
GigabitEthernet0/1, Forward/Dense, 10:22:19/stopped
ルータ5
ルータ5は、上位のルータとGi0/1とGi0/2で接続していますが、Incomingには「ルータ2向けのGi0/2」のみとなります。
これは、OSPFコスト計算から最短経路はRouter2向けになっているためです。
そのため、Outgoing IFにはUser2向けのGi0/3とルータ3向けのGi0/1があり、Gi0/1 Prune状態となっているため、マルチキャストパケットの送信が行われません。
この動作・機能によりルーティングループが起こらないようになっているわけです。
Router5#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,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector, p - PIM Joins on route,
x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 00:29:57/stopped, RP 0.0.0.0, flags: DC
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/3, Forward/Dense, 00:16:38/stopped
GigabitEthernet0/2, Forward/Dense, 00:29:57/stopped
GigabitEthernet0/1, Forward/Dense, 00:29:57/stopped
(192.168.10.2, 239.1.1.1), 00:17:27/00:01:22, flags: T
Incoming interface: GigabitEthernet0/2, RPF nbr 10.4.0.1
Outgoing interface list:
GigabitEthernet0/3, Forward/Dense, 00:16:38/stopped
GigabitEthernet0/1, Prune/Dense, 00:02:26/00:00:33
(*, 224.0.1.40), 4d10h/00:02:43, RP 0.0.0.0, flags: DCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/2, Forward/Dense, 10:33:18/stopped
GigabitEthernet0/1, Forward/Dense, 4d10h/stopped
Router5#

項目4:Flood/Pruneの確認
最後に、Flood/Pruneの動作を見ていきたいと思います。
この項目では特に確認できるコマンドがないので「Debug」と「パケットキャプチャ」で確認していきます。
Debug
Flood/Pruneの動作が発生した際のデバッグログです。
ここでは、最初の「Route watch topology found.」がICMPパケット(Senderからのマルチキャストパケット)が飛んできた際に発生した動作です。
これは、特定のマルチキャストグループに対するルーティングの確認を行なっています。
このルータはPrune状態のため、その後、適した経路が見つからない「-prefix 192.168.10.2/32: Route watch prefix not found.」と出ています。
Router3#
*Aug 26 20:23:31.238: MCAST-RWATCH: -af IPv4 -topo 8000: Route watch topology found.
*Aug 26 20:23:31.238: MCAST-RWATCH: -af IPv4 -topo 8000 -prefix 192.168.10.2/32 -client 0x11AB944C -watch 0xD060430: Watch destroyed.
*Aug 26 20:23:31.239: MCAST-RWATCH: -af IPv4 -topo 8000 -prefix 192.168.10.2/32: Stopped watching prefix in RIB.
*Aug 26 20:23:31.239: MCAST-RWATCH: -af IPv4 -topo 8000 -prefix 192.168.10.2/32: Prefix destroyed.
*Aug 26 20:23:31.239: MCAST-RWATCH: -af IPv4 -topo 8000: Route watch topology destroyed.
*Aug 26 20:23:31.394: MCAST-RWATCH: -af IPv4 -topo 8000: Route watch topology not found.
*Aug 26 20:23:31.394: MCAST-RWATCH: -af IPv4 -topo 8000: Route watch topology created.
*Aug 26 20:23:31.394: MCAST-RWATCH: -af IPv4 -topo 8000 -prefix 192.168.10.2/32: Route watch prefix not found.
*Aug 26 20:23:31.395: MCAST-RWATCH: -af IPv4 -topo 8000 -prefix 192.168.10.2/32: Route watch prefix created.
*Aug 26 20:23:31.395: MCAST-RWATCH: -af IPv4 -topo 8000 -prefix 192.168.10.2/32: Started watching prefix in RIB.
###ルータ4から来た重複していることを確認しているメッセージ###
*Aug 26 20:23:31.398: MCAST-RWATCH: -af IPv4 -topo 8000 -prefix 192.168.10.2/32: Received RIB notification - 192.168.10.0/30 via Gi0/1:10.5.0.2
*Aug 26 20:23:31.398: MCAST-RWATCH: -af IPv4 -topo 8000 -prefix 192.168.10.2/32: Prefix status set to: RIB.
*Aug 26 20:23:31.399: MCAST-RWATCH: -af IPv4 -topo 8000 -prefix 192.168.10.2/32: Prefix enqueued for notification.
*Aug 26 20:23:31.399: MCAST-RWATCH: -af IPv4 -topo 8000 -prefix 192.168.10.2/32: Prefix dequeued for notification.
*Aug 26 20:23:31.399: MCAST-RWATCH: -client 0x11AB944C: Client enqueued for notification.
*Aug 26 20:23:31.399: MCAST-RWATCH: -af IPv4 -topo 8000 -prefix 192.168.10.2/32 -client 0x11AB944C -watch 0xD060430: Watch enqueued on client for notification.
*Aug 26 20:23:31.400: MCAST-RWATCH: -client 0x11AB944C: Client dequeued and notified.
*Aug 26 20:23:31.401: MCAST-RWATCH: -af IPv4 -topo 8000 -prefix 192.168.10.2/32 -client 0x11AB944C -watch 0xD060430: Watch notification fetched by client.
パケットキャプチャ
では、この時のパケットは何がきていたか?
この画像から読み取れることは、ICMPが来た後にルータ5向けとルータ1向けで重複しているため、どちらが最短経路として正しいかを確認するAssertメッセージが飛んできています。
その後、他のマルチキャストルータにPruneメッセージを送信していることがわかります。
「Num Prunes: 1」からPrune状態が1つ かつ 送信元IPアドレスが192.168.10.2なのがわかります。

最後に
今回は、中途半端となっていたマルチキャストシリーズのPIM-DMについて、まとめてみました。
他の記事もぜひ参照してみてください。
コメント