【ネットワーク入門】マルチキャスト PIM-DMを理解しよう

  • URLをコピーしました!
目次

はじめに

こんにちは。ネットワークエンジニアの「だいまる」です。

最近、作成した記事を見直していて、マルチキャストシリーズが中途半端になっていたので、「PIM-DM」について、まとめてみました

ここ最近、更新が止まっていました・・・

PIM-DMとはなんだ?

マルチキャストを学ぶ上で避けては通れない「PIM-DM」と「PIM-SM」。

今回は、その1つである「PIM-DM」について、理解していきましょう

PIM-DMとは?

PIM-DMとは、「Denseモードのマルチキャストルーティングプロトコル」になります。

Denseモードとは、「送信元ツリーのみで構成されるモードであり、LAN向けに利用される」

以下の図の通り、各送信元ごとにマルチキャストパケットを送信するツリーが構成され、各ユーザにデータ配信が行われるのがPIM-DMです。

各送信元ごとにツリーが構成されるため、各ルータが保持するツリー量が増えることによる負荷増大や帯域圧迫につながるデメリットがあります。

一方、最短経路でツリーが作成されるので遅延を意識する必要がなくなるメリットもあります。

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アドレスをルーティングテーブルで確認し、マルチキャストパケットを受信したインターフェースが正しいのかどうかをチェックします。(具体的には以下のフローで説明します)

STEP
送信元IPアドレスをルーティングテーブルで確認

マルチキャストパケットの送信元IPアドレスをユニキャストルーティングテーブルからチェックします。

STEP
受信インターフェースが正しいか判断

Step1でチェックした結果から、送信元IPアドレスにパケットを送る場合、どのインターフェースから送信するのが正しいのかチェックします。

STEP
RPFのチェック

Step1/Step2でチェックしたインターフェースとマルチキャストを受信したインターフェースが一致すれば、最短経路で受け取っていると判断され、OIL(Outgoing Interface List)を参照し、他のルータに送信されます。

RPFチェックのイメージ

実機で確認してみよう!

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

今回もCisco IOSを利用して確認してみます

確認項目

今回の動作確認では、以下の4項目について確認してみます。

No2の「ネイバー状態の確認」とNo4の「Flood/Pruneの確認」については、パケットキャプチャも実施し、実際にやりとりされているパケットの中身も見てみたいと思います。

No項目目的
1PIM-DMの基本設定PIM-DM設定方法の確認
2ネイバー状態の確認設定時のPIMネイバーの確立動作を確認
3送信元ツリーの確認送信元ツリーの状態やRPFやOILを確認
4Flood/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/3PIMネイバーの確立ログ
2PIM(0): Update GigabitEthernet0/3/10.6.0.1 to (*, 224.0.1.40), Forward state, by PIM *G Join10.6.0.1から(*,224.0.1.40)への真ルチキャストグループへの参加
3PIM(0): Building Graft message for 224.0.1.40, GigabitEthernet0/3: no entriesグラフトメッセージの構築 + アクティブするEntryがない
*グラフト:Pruneされた経路を再アクティブ化するために利用
4PIM(0): Check DR after interface: GigabitEthernet0/3 came up!Flood/Pruneの動作・パケットキャプチャを実施
5PIM(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/3DR選出が完了

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について、まとめてみました。

他の記事もぜひ参照してみてください。

  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次