PIM-DMの概要

PIM-DMはDenseモードのマルチキャストルーティングプロトコルです。マルチキャストレシーバがひとつ拠点のLAN内に密集していることを想定しています。PIM-DMのマルチキャストパケットの転送は、Flood & Pruneモデルと呼ばれています。

まず、マルチキャストレシーバが存在するかもしれないインタフェース全体にマルチキャストパケットをフラッディングします。その後、不要なインタフェースからマルチキャストパケットの転送をとめる(Prune)という仕組みです。厳密にマルチキャストレシーバの存在を把握しないで、シンプルなマルチキャストパケットのルーティングを可能にしています。

こうしたマルチキャストルーティングを行うために、PIM-DMはディストリビューションツリーとして、送信元ツリーを作成します。送信元ツリーの作成は、マルチキャストパケットを受信したタイミングで行っていきます。

PIM-DMを使えば、手軽にマルチキャストルーティングを行うことができます。しかし、LAN内であっても初期のフラッディングで他のアプリケーションの通信に悪影響を及ぼすことが考えられます。そのため、あまりPIM-DMの利用は推奨されていません。一般的にはマルチキャストルーティングプロトコルとして、PIM-SMを利用します。

PIM-DMによるマルチキャストルーティングの仕組み

次のネットワーク構成を基にして、PIM-DMによるマルチキャストルーティングの仕組みを解説します。

図 PIM-DMの仕組み ネットワーク構成
図 PIM-DMの仕組み ネットワーク構成

このネットワーク構成で、あるマルチキャストグループ(G)のソースとレシーバが存在する状態でのPIM-DMの動作を見ていきます。

マルチキャストソースがマルチキャストパケットを送信すると、ファーストホップルータはそのパケットを受信します。この場合は、R1がファーストホップルータです。パケットを受信したタイミングでPIM-DMによりそのマルチキャストパケットに対応する(S,G)で表現される送信元ツリーを作成します。
このとき(S,G)エントリのOILとして、次の3つの種類のインタフェースが登録されます。

  • PIM-DMネイバーが存在するインタフェース
  • レシーバが存在するインタフェース(IGMPメンバーシップレポートを受信)
  • ip igmp join-groupコマンド、ip igmp static-groupコマンドが設定されているインタフェース

2点目、3点目はレシーバの存在がはっきりわかりますが、1点目のネイバーが存在するインタフェースというだけでは、その先にレシーバが存在するかどうかがはっきりとはわかりません。ネイバーが存在するインタフェースはその先にマルチキャストレシーバがいる「かもしれない」インタフェースです。
また、(S,G)エントリのIIFにはソースのIPアドレスに対するRPFインタフェースが載っています。そのRPFインタフェースを利用してRFPチェックが成功すれば、OILのインタフェースすべてにマルチキャストパケットをフラッディングします。なお、原則としてOILからRPFインタフェースは取り除かれます。

図 PIM-DMマルチキャストパケットの転送
図 PIM-DMマルチキャストパケットの転送

各マルチキャストルータでマルチキャストパケットを受信すると、同様に送信元配布ツリーを作成してマルチキャストパケットをフラッディングします。
すると、レシーバが存在しないインタフェースや、RPFチェックが失敗するインタフェースにもマルチキャストパケットがフラッディングされていくことがあります。マルチキャストパケットをフラッディングする必要のないインタフェースには、PIMのPruneメッセージによって、フラッディングをとめます。

図 PIM-DM 不要なフラッディング
図 PIM-DM 不要なフラッディング

上記の図の赤い丸印で囲っているところには、マルチキャストをフラッディングする必要がありません。次の図のようにPIM Pruneメッセージでフラッディングをとめます。

図 PIM-DM Pruneメッセージ
図 PIM-DM Pruneメッセージ

Pruneメッセージを受信したインタフェースからはマルチキャストパケットのフラッディングを行わないようになります。ですが、フラッディングをとめる時間はデフォルトで180秒間です。180秒後には、再びフラッディングを行い、不必要なインタフェースにはPruneメッセージを送信します。

最終的なマルチキャストパケットがルーティングされていく経路と送信元ツリーを考えると次の図のようになります。

図 PIM-DM 送信元ツリー
図 PIM-DM 送信元ツリー

以上のように、PIM-DMでは、マルチキャストパケットをフラッディングしてルーティングしていくという仕組みです。

PIM-DMでは送信元ツリーの(S,G)エントリを作成するためのテンプレートとして、(*,G)エントリも作成します。この場合の(*,G)エントリは共有ツリーを表すものではありません。

関連記事

IPマルチキャストの仕組み