- マルチキャストルーティングの概要
- PIM と IGMP の違い
- マルチキャストルーティングの用語
- PIM (Protocol Independent Multicast)
- IGMP (Internet Group Management Protocol)
- ソース (Source)
- ソースアドレス (Source Address)
- レシーバ (Receiver)
- マルチキャストグループ (Group)
- グループアドレス (Group Address)
- FHR (First Hop Router)
- LHR (Last Hop Router)
- RP (Rendezvous Point)
- 共有ツリー (Shared Tree)
- 送信元ツリー (Source Tree)
- IIF (Incoming InterFace)
- OIL (Outgoing Interface List)
- マルチキャストルーティングのルーティングテーブル
- マルチキャストルーティングにエントリが追加される条件
マルチキャストルーティングの概要
同じ NW セグメント内のマルチキャスト通信であれば、通信するために特に設定は不要ですが、NW セグメント超え (ルータ超え、 L3 スイッチ超え) するマルチキャストルーティングについては、NW 機器に対して PIM 等の設定が必要です。
以下に構成例を示します。補足ですが、マルチキャスト通信を受信するクライアントは、OS レベルにセットされた IPアドレスの他に、アプリケーションレベルでセットされたマルチキャストアドレスが必要になります。
マルチキャストルーティングでは、送信元と宛先が別セグメントであっても TTL が 0 にならない限り、セグメントを超えて通信ができます。
ちなみに、図にある Windows PE というのは、イメージ配信ソフト等で利用される簡易 OSです。
PIM と IGMP の違い
PIM はルータ間でマルチキャストルートの調整をするために使われるのに対し、IGMP はクライアントがルータに対してマルチキャスト通信が届くように要求するために使われます。
例えばクライアントは最寄りルータに対して『225.10.10.10 のマルチキャストグループに参加します!だから 225.10.10.10 宛の IP パケットを僕に頂戴!』と IGMP で投げ掛けるのです。
IGMP の詳細については以下を参照下さい。

一方、IGMP を受信したルータは、PIM のネイバールータへその情報を伝搬していきます。
伝搬の仕方は PIM のモードによって異なります。モードの種類は後述の通り、4 種類です。
マルチキャストルーティングの用語
PIM (Protocol Independent Multicast)
マルチキャストルーティングプロトコルの一種で、デファクトスタンダード。
事前に隣接するルータ同士でネイバー (PIM neighbor) を張り、ソースから FHR にマルチキャストが到達したタイミング、もしくはレシーバから LHR に IGMP が到達したタイミングで、ツリーの構築=マルチキャストルーティングテーブルの作成を実施する。
ユニキャストルーティングが機能している前提で動作する。バージョンは1,2があるが、2 が使われる場合が多い。
また、PIM には以下 4 種類のモードがある。
- PIM-Dense Mode (PIM-DM)
- PIM-Sparse Mode (PIM-SM)
- PIM-Source Specific Mode (PIM-SSM)
- PIM-bidirectional Mode (PIM-bidir)
IGMP (Internet Group Management Protocol)
レシーバが、あるグループアドレスのマルチキャストを受信したいときに送信するプロトコル。
バージョンは 1,2,3 があり、PIM-SSM ではバージョン3のみが利用可能。それ以外のモードではバージョン1/2が利用可能だが、2が使われる場合が多い。
ソース (Source)
マルチキャストの送信元ホスト。つまり、サーバ。
ソースアドレス (Source Address)
ソースのIPアドレス(通常のユニキャストIPアドレス)。ルーティングテーブルのエントリで『S』と表現される。
レシーバ (Receiver)
マルチキャストの受信者。つまりクライアント。グループメンバとも言う。
マルチキャストグループ (Group)
ある1つのマルチキャストIPアドレスのレシーバの集まり。
グループアドレス (Group Address)
マルチキャストグループの所属するマルチキャストIPアドレス。ルーティングテーブルのエントリで『G』と表現される。
FHR (First Hop Router)
ソースのNWセグメントに直結しているルータのこと。つまり送信元サーバの最寄りルータ。
LHR (Last Hop Router)
レシーバのNWセグメントに直結しているルータのこと。つまり配信先クライアントの最寄りルータ。
RP (Rendezvous Point)
ランデブーポイント。PIM-SM およびPIM-bidirectional Mode における、共有ツリーの中継ポイントとなるルータ。
全 PIM ルータで手動設定するか、Auto-RP や Bootstrap-Router を使った自動設定にて決定する。グループアドレスによって RP を変えることも可能。
IGMP Report を受信したLHR は RP に向けて PIM-join を発行していき、共有ツリーを構築する。
マルチキャストパケットを受信した FHR は RP に向けてPIM-register を送信し、それを受信した RP はFHR に向けてPIM-join を発行していき、送信元ツリーを構築する。
共有ツリー (Shared Tree)
全てのソースで共通のマルチキャストルーティング経路。
[(*,G) IIF: OIL: ] で表現される。G にはグループアドレスが入る。
PIM-SM においては LHR から RP までのルータで利用される。
PIM-bidirectional Mode においては全ルータで利用される。
送信元ツリー (Source Tree)
特定のソースにおけるマルチキャストルーティング経路。
[(S,G) IIF: OIL: ] で表現される。S にはソースアドレス、G にはグループアドレスが入る。
PIM-DM においては全ルータで利用される。
PIM-SM においては RP から FHR までのルータで利用される。
また、LHR から RP までのルータ上で、RP への最短パスとソースへの最短パスが異なる場合はこの送信元ツリーが利用される。
PIM-SSM においては全ルータで利用される。
PIM-SM における共有ツリー、送信元ツリーの例を下図に示す。
IIF (Incoming InterFace)
マルチキャストルーティングにおける受信インタフェース。
1つのエントリに対して必ず1つ。(S,G)の場合はソースに対して RPF が成功している必要がある。
(*,G)の場合は RP に対して RPF が成功している必要がある。
OIL (Outgoing Interface List)
マルチキャストルーティングにおける送信インタフェース群。
1つのエントリに対して複数持つことが可能。
基本的に IGMP による受信要求を受けているルータへ向かう IF が該当する。
マルチキャストルーティングのルーティングテーブル
マルチキャストルーティングのルーティングテーブルのエントリは [(S, G) IIF: OIL: ] という形式で書かれます。
S は Source Address のことで、マルチキャストを送信するホストのユニキャストIPアドレスを指します。
G は Group Address のことで、224.0.1.0〜239.255.255.255 までのマルチキャストIPアドレスを指します。
IIF は送信元からマルチキャストパケットを受信するインタフェースのことで、1つのエントリに必ず1つです。RPF のチェックに成功する必要があります。
OIL は受信したマルチキャストパケットを送信するインタフェース達のことで、レシーバに向かう経路が複数であれば、その数だけ持つことができます。
マルチキャストルーティングテーブルのイメージとしては以下のようになります。
マルチキャストルーティングにエントリが追加される条件
マルチキャストルーティングにおいてはソース (送信元) とレシーバ (受信先) が時間によって変わることを想定しているため、(S, G) 単位で config を投入するようなことはしません。
PIM でルータ同士ネイバーを張り、送信元からマルチキャストパケットが到達し、ソースが分かったら、もしくは受信端末から IGMP の Query を受信し、レシーバが分かったらルーティングテーブルにエントリが追加されたり更新されたりします。
具体的な条件は以下の通りです。
- PIM-DM において、マルチキャストパケットを受信した場合、FHR から LHR までの全ルータに送信元ツリーのエントリ (S,G) ができる
- PIM-SM および PIM-bidirectional Mode において、レシーバからの IGMP クエリを受信した LHR が、RP に向けて PIM-join を発行した場合、LHR から RP までの全ルータに共有ツリーのエントリ (*,G) ができる
- PIM-SM において、PIM-register を受信した RP が、ソースに向けて PIM-join を発行した場合、RP から FHR までの全ルータに送信元ツリーのエントリ (S,G) ができる
- PIM-SSM において、IGMP クエリを受信した LHR が、RP に向けてPIM-join を発行した場合、FHR から LHR までの全ルータに送信元ツリーのエントリ (S,G) ができる
RPF (Reverse Path Forwarding)
マルチキャストルーティングでは RPF (Reverse Path Forwarding) という機能がデフォルトで有効になっており、この機能によって、マルチキャストの最短経路を確保し、かつルーティング・ループを防いでいます。
これは『マルチキャストルーティングを行うルータにおいて、マルチキャストを受信する IF(IIF) は、Source へのユニキャストルーティングにおける送信 IF でなければならない』という制約を課す機能です。
例えば下記のような冗長経路構成の場合、デフォルトでは片方(Gi1/0)でしかマルチキャストの受信できません。
もしもう 1 つのルートからも受信できるようにしたい場合は、Static マルチキャストルートを書くことにより「Source」に対する「Incoming IF」でRPF が成功するように設定できます。Cisco の場合は以下コマンドを使います。
注意点として、このコマンドはあくまでRPF に成功させるためのものであり、マルチキャストルーティングテーブルにエントリを追加するコマンドではありません。
コメント
マルチキャスト、OSPFの説明とても分かりやすいです。
大変ためになります。ありがとうございました。
BGPについても解説していただけると助かります。
コメントありがとうございます。お役にたてて何よりです。BGP、近いうちに書いていきたいと思います。
今後もお気軽にご意見下さい。宜しくお願いします。