マルチキャスト通信で欠かせない要素は,マルチキャストアドレッシング,IGMP,そしてマルチキャストルーティングプロトコルです。マルチキャストルーティングプロトコルにより,マルチキャストのトラフィックが適切にネットワークに配信されます。今回は,マルチキャストルーティングプロトコルの代表であるPIM(Protocol-Independent Multicast)を学びます。

PIMのモード

 PIM(Protocol-Independent Multicast)は,ユニキャスト用のルーティングプロトコル(EIGRPやOSPFなど)から独立(Independent)した,マルチキャスト用のルーティングプロトコルです。

 PIMでは,マルチキャスト・ルーティングのための専用のルーティングテーブルを作ります。また,PIMが動作しているルータ間では,ユニキャスト用ルーティングプロトコルのようなルーティングアップデートのやりとりはしません。

 ルーティングループを防ぐ手法も独特で,PIMでは,RPF(Reverse Path Fowarding)と呼ばれる手法を使います。RPFは,マルチキャストトラフィックを受信するインタフェース(アップストリーム)と送信するインタフェース(ダウンストリーム)を,ユニキャスト用ルーティングテーブルを使って決めるという方法です。これにより,ルーティングループを防ぎます(図1)。

 図1 RPF(Reverse Path Fowarding)

 通常のルーティングでは受け取ったパケットのあて先IPアドレスからルーティングテーブルを参照していくのに対し,RPFでは,送信元IPアドレスを使ってルーティングテーブルを参照するわけです。

 PIMには2つのモードがあります。デンスモード(PIM-Dense Mode)とスパースモード(PIM-Sparse Mode)とです。また,両方を使用するスパース-デンスモードもあります。

 デンスモードは,「プッシュ(push)」型のトラフィックモデルで,マルチキャストトラフィックの配信元を根元としたツリー構造のネットワークを作ります。マルチキャストトラフィックはいったんネットワーク全体に配信され,その後,マルチキャストグループを持たないルータがネットワークから離脱するという流れにます。

 一方のスパースモードは,「プル(pull)」型のトラフィックモデルで,ランデブーポイント(Randezvous Point:RP)と呼ばれるルータを中心(根元)としたツリー構造のネットワークを作ります。マルチキャスト対応ルータは,このツリーに参加することにより,マルチキャストトラフィックが配信されます。

 スパース-デンスモードは,RPがあるマルチキャストグループではスパースモード,RPがないグループではデンスモードで動作します。

マルチキャスト配信ツリー

 マルチキャスト配信で使うルーティングテーブルである「マルチキャストルーティングテーブル」は,通常のルーティングテーブルのようには記述されません。送信元とあて先マルチキャストグループを対にしたエントリとして登録され,アップストリームとダウンストリームのインタフェースが記述されます(図2)。

 図2 マルチキャストルーティングテーブル
マルチキャストルーティングテーブル

 マルチキャストトラフィックはループのない木構造で配信されます。これを「マルチキャスト配信ツリー」と呼びます。マルチキャスト配信ツリーには2種類あり,PIM-DMで使われる送信元配信(Source Distribution)ツリーと,PIM-SMで使われる共有配信(Shared Distribution)ツリーがあります。

 送信元配信ツリーは,1つの送信元(マルチキャストトラフィックの発生源)に対して1つのツリーが生成される方式です。送信元マルチキャストメンバに接するルータを根としたツリーが形成されます。送信元配信ツリーはSPT(Shortest Path Tree)とも呼ばれます。送信元配信ツリーは複数の送信元が存在する場合,複数のツリーが形成されます(図3)。

 図3 送信元配信ツリー
送信元配信ツリー

 上記のように送信元それぞれに対し,ツリーが構成されます。そのため,送信元から必ず最適経路であて先マルチキャストグループに配信されますが,マルチキャストルーティングテーブルにエントリが複数必要になります。

 一方,共有配信ツリーはRPを使用します。RPを根とした木構造により配信されます。送信元が複数あった場合でもツリーは1つしか生成されません。送信元はRPへマルチキャストパケットを送信し,RPからマルチキャストグループへ配信されるという形になります(図4)。

 図4 共有配信ツリー
共有配信ツリー

 共有配信ツリーでは,1つのツリーしか作成されないため,マルチキャストルーティングテーブルのエントリも1つで済み,処理も少なくなります。ですが,送信元からあて先マルチキャストグループまで必ずしも最適経路で届くというわけではないのでツリーの再構成が必要となります。さらにRPも必要となります。

PIM-DMとPIM-SM

 PIM-DMは送信元配信ツリーを使用するモードです。特にネットワーク内にマルチキャストグループのメンバが多く存在する場合に使用されます。そのため,Dense(稠密・濃密)モードと呼ばれています。

 PIM-DMでは基本的に送信元から送信されたマルチキャストパケットをネットワーク内にフラッドします。パケットを受け取ったPIMルータはRPFによるインカミングインタフェース(RPFインタフェース)以外のインタフェースからパケットを送信します。それにより他PIMルータもしくは接続されているマルチキャストグループへパケットを配信することになります。

 RPFインタフェース以外のインタフェースでマルチキャストグループが存在しないかつPIMネイバーが存在しない場合,そのPIMルータはマルチキャストトラフィックが必要ないため,配信ツリーから離脱する必要があります。そのためpurneメッセージをRPFインタフェースから送信します。pruneメッセージを受け取ったPIMルータはそのインタフェースからパケットを送信しなくなります。また,RPFインタフェース以外のインタフェースすべてでpruneメッセージを受け取った場合,そのPIMルータもマルチキャストトラフィックが必要なくなるため,RPFインタフェースからpruneメッセージを送信します(図5)。

 図5 PIM-DM(Denseモード)

 pruneメッセージは3分間ごとに送信します。もし,pruneメッセージを受信しなくなった場合,再びマルチキャストパケットを送信します。

 PIM-SMは共有配信ツリーを使用します。PIM-DMとは逆に,ネットワーク内にメンバが少ない場合に使用します。Sparse(希薄)モードと呼ばれます。ただし,送信元配信ツリーを使用することもできます。

 PIM-SMではRPを使用します。各PIMルータはメンバが接続されているネットワークにある場合,事前にRPにJoinメッセージを送り,ツリーに参加します。送信元に接続しているルータはRPにパケットを送り,RPはJoinしたルータにパケットを転送します。RPを経由するため,最適経路になっていない場合,メンバのルータは最適経路になるようにJoinメッセージを送り,最適になるようにツリーを構築します(図6)。

 図6 PIM-SM(Sparseモード)

 PIMスパース-デンスモードは,PIM-DMとPIM-SMの双方を使うードです。RPが設定されているマルチキャストグループではPIM-SMで,RPが設定されていないマルチキャストグループにはPIM-DMで動作します。Ciscoルータではスパース-デンスモードの使用が推奨されています。デンスモードはルータ数が多い場合,ルーターのリソースを多く消費するからです。また,通常はRPは手動設定されますが,スパース-デンスモードでは自動でRPを発見するオプション機能を使うべきでしょう。