PIM-SMの概要
PIM-SMはSparseモードのマルチキャストルーティングプロトコルです。マルチ
キャストレシーバがさまざまなLAN上に分散しているようなネットワーク構成
を想定しています。
さまざまなLAN上にレシーバが分散している構成で、Denseモードのようなフラ
ッディングを行うと、他のアプリケーションの通信に大きな影響を及ぼす可能
性があります。そこで、PIM-SMではExplicit Joinモデルに従います。これは、
レシーバの位置をきちんと把握し、レシーバが存在するインタフェースにのみ
マルチキャストパケットをルーティングするというものです。
このような動作のために、PIM-SMでは送信元ツリーと共有ツリーの2つのディ
ストリビューションツリーを組み合わせます。2つのツリーの境となるルータ
をRP(Rendezvous Point)といいます。マルチキャストソースからRPまで送信元
ツリーを作成し、RPからレシーバまで共有ツリーを作成して、マルチキャスト
パケットをルーティングします。そのため、ソースから送信されたマルチキャ
ストパケットは基本的にRPを経由して、マルチキャストレシーバへルーティン
グされます。
すべてRPを経由してマルチキャストパケットをルーティングするという性質上、
RPやマルチキャストソース、レシーバの位置しだいでは最適な経路でのルーテ
ィングではないことがあります。そのようなときに、スイッチオーバー機能に
よって、RPを経由せずにマルチキャストソースとレシーバ間の最短経路に経路
を切り替えてマルチキャストパケットを転送することも可能です。
※RPはマルチキャストグループごとに決定します。1つのマルチキャストグル
ープに対して1つのRPアドレスを決定します。また、1つのRPアドレスを複数の
マルチキャストグループのRPとして設定することもできます。
※スイッチオーバー機能の詳細は割愛します。
PIM-SMはマルチキャストルーティングプロトコルとして、デファクトスタンダ ードになっています。一般的にマルチキャストルーティングプロトコルといえ ば、PIM-SMを採用していることが多いです。
PIM-SMのディストリビューションツリー
前述のように、PIM-SMでは共有ツリーと送信元ツリーの2つを組み合わせます。 それぞれ、以下のような特徴があります。
- 共有ツリー
RPからレシーバまでのツリー
(*,G)エントリ 次のタイミングで作成
→IGMPレポートを受信したとき
→PIM(*,G)Joinの受信したとき
→最初の(S,G)エントリを作成するとき
IIF(Incoming interface)はRPのアドレスに対する最短経路のインタフェース
→RPF nbr = IIFの先に存在するPIMネイバー
→RPではIIF = Null、RPF nbr = 0.0.0.0
次のインタフェースがOIL(Outgoing interface list)に追加される
→IGMPレポートを受信したインタフェース
→PIM(*,G)Joinを受信したインタフェース
→ip igmp-join groupコマンドまたはip igmp static-groupコマンドが
設定されているインタフェース
- 送信元ツリー
送信元からRPまでのディストリビューションツリー
(S,G)エントリ 次のタイミングで作成
→PIM(S,G)Joinを受信したとき
→PIM Registerメッセージを受信したとき(RP)
→直接接続のマルチキャストソースからマルチキャストパケットを受信した とき(ファーストホップルータ)
→対応する(*,G)エントリがなければ(S,G)エントリの前に作成する
IIFはマルチキャストソースのアドレスに対する最短経路のインタフェース
→RPF nbr = IIFの先に存在するPIMネイバー
次のインタフェースがOILに追加される
→(*,G)のOIL-IIF
→PIM(S,G)Joinを受信したインタフェース
まず、共有ツリーの作成の様子から解説します。前提として、PIM-SMではすべ てのマルチキャストルータがルーティング対象のマルチキャストグループに対 するRPのアドレスを認識しています。共有ツリーの作成は次のような流れで行 われます。
(1) レシーバがマルチキャストグループに参加するとIGMPレポートを送信しま す。ラストホップルータはこれを受信して、IGMPテーブルに登録します。この とき、レシーバが参加したマルチキャストグループに対応する(*,G)エントリ を作成します。(*,G)エントリのIIF(Incoming interface)は設定されているRP のアドレスに対するRPFインタフェースです。また、RPFインタエース上のPIM-SM ネイバーがRPF nbrに入ります。そして、OIL(Outgoing interface list)にはIGMP レポートを受信したインタフェースが入ります。
(2) IGMPレポートを受信したラストホップルータは、RPからレシーバまでの共 有ツリーを作るために、RPの方向に向けてPIM(*,G)Joinメッセージを送信しま す。RPの方向とはつまり、(*,G)エントリのIIFです。
(3) PIM(*,G)Joinメッセージを受信したルータは、そのマルチキャストグルー プに対応した(*,G)エントリを作成します。IIFはやはりRPのアドレスに対する RPFインタフェースで、RPF nbrも先ほどと同様です。また、OILはPIM(*,G)Join を受信したインタフェースが入ります。
(4) そして、さらにRPへ向けてPIM(*,G)Joinメッセージを送信します。これを
RPに到達するまで続けていきます。
なお、RP自身では(*,G)エントリのIIFはNull、RPF nbrは0.0.0.0です。
次に送信元ツリーの作成について解説します。前提として、PIM-SMではすべて のマルチキャストルータがルーティング対象のマルチキャストグループに対す るRPのアドレスを認識しています。そして、RPからレシーバまで共有ツリーが 作成されるという動作を認識しています。送信元ツリーの作成は次のような流 れで行われます。
(1) マルチキャストソースがマルチキャストパケットを送信すると、ファース トホップルータがそのマルチキャストパケットを受信します。ファーストホッ プルータは直接接続されたソースからマルチキャストパケットを受信すると、 先に(*,G)を作成した後で(S,G)エントリを作成します。ただし、この時点では ファーストホップルータはマルチキャストレシーバの存在を認識していないた め、OILはNullです。また、IIFはマルチキャストパケットを受信したインタフ ェースになり、RPF nbrは0.0.0.0です。
(2) ファーストホップルータはRPのアドレスを認識しています。そして、PIM-SM の動作の仕組みとして、レシーバが存在すればRPからレシーバまで共有ツリー が作成されています。そのため、マルチキャストパケットをRPまで転送すれば、 レシーバまで到達する可能性があります。ファーストホップルータは、PIM Register メッセージにマルチキャストパケットをカプセル化して、RPまでユニキャスト で転送します。
(3) PIM Registerメッセージを受信したRPは対応する(S,G)エントリを作成し
ます。この(S,G)エントリのIIFはソースのIPアドレスに対するRPFインタフェ
ースです。OILは(*,G)エントリのOILからIIFを除いたものになります。
PIM Registerメッセージにカプセル化されているマルチキャストパケットを取
り出して転送します。
(4) ファーストホップルータは、マルチキャストパケットを受け取るごとに PIM RegisterメッセージをRPまでユニキャストします。マルチキャストのまま、 ファーストホップルータからRPまでルーティングできるようにRPからソースの 方向に向けてPIM(S,G)Joinメッセージを送信します。
(5) PIM(S,G)Joinメッセージを受信したルータは、(S,G)エントリを作成しま
す。また、(S,G)エントリを作成する前にそのテンプレートとして(*,G)エント
リも作成されます。
(S,G)エントリのIIFはソースの方向のRPFインタフェースです。OILは(*,G)エ
ントリのOILからIIFを除いたものに、PIM(S,G)Joinを受信したインタフェース
が追加されます。
(6) そして、さらにソースの方向に向かってPIM(S,G)Joinが送信されていきま す。ファーストホップルータまでPIM(S,G)Joinが到達すると、ファーストホッ プルータのOILにPIM(S,G)Joinを受信したインタフェースが追加されます。こ れにより、ファーストホップルータはマルチキャストパケットをルーティング できるようになります。
(7) ファーストホップルータはソースからのマルチキャストパケットをPIM Register メッセージにカプセル化したものと、マルチキャストパケットのままルーティ ングします。RPでは、2つのマルチキャストパケットが重複するようになりま す。マルチキャストパケットのままルーティングされてくれば、PIM Register メッセージは不要になるのでファーストホップルータに対してPIM Register-stop メッセージを送信します。
このようにマルチキャストソースからのマルチキャストパケットを受信するこ とで、ファーストホップルータとRPまでの送信元ツリーを作成することができ ます。 最終的にマルチキャストパケットは、
- ソースからファーストホップルータ
- ファーストホップルータからRP
- RPからラストホップルータ
- ラストホップルータからレシーバ
という経路で転送されていきます。







