IPユニキャスト同様、IPマルチキャストは独自のルーティングプロトコル、管理プロトコル、レイヤ2プロトコルを使用します。以下の2つが重要なマルチキャストプロトコルです。
・PIM ( Protocol Independent Multicast )
・IGMP ( Internet Group Management Protocol )
■PIM
マルチキャストルーティングプロトコルはマルチキャスト配送ツリーを構築しパケットの転送を可能にする役割を扱います。ツリーの構築とパケットの転送に使用する手法はマルチキャストルーティングプロトコルによって異なります。PIMルーティングプロトコルではユニキャストルーティングテーブルの構築に使われているユニキャストルーティングプロトコルを利用してマルチキャストの転送の意思決定を下します。
また、ルータはALL-PIM-Routersマルチキャストアドレス ( 224.0.0.13 ) へHelloメッセージを送るPIMネイバー検出メカニズムを利用してPIM隣接関係を確立しPIMマルチキャスト配送ツリーを構築、維持します。ルータはPIM Helloメッセージを利用してマルチキャストLANネットワークの代表ルータ ( DR )を選出します。
PIMは以下の3つの動作モードを備えています。
・PIM denseモード
・PIM sparseモード
・PIM sparse-denseモード
大規模なエンタープライズネットワークではsparse-denseモードが最も広く使われています。
■PIM denseモード
PIM denseモード ( PIM-DM ) マルチキャストルーティングプロトコルではマルチキャストトラフィックによるネットワークの定期的なフラッディングを利用して配送ツリーを構築、維持します。PIMでは隣接デバイス情報を利用して配送ツリーを構築します。PIM-DMではマルチキャスト送信元が送信を開始すると同時にルータによって構築される送信元配送ツリーを使ってマルチキャストトラフィックを転送します。以下は例を示しています。
PIM-DMではマルチキャストグループのメンバーがネットワーク全体にわたって蜜に分散しており、帯域幅が十分にあることを前提としています。PIM-DMが設定されているルータはマルチキャストパケットを受信すると、RPFチェックを実行して受信インターフェイスが送信元に対応する適切なインターフェイスがあるかどうかを確認し、プルーニングおよびトランケーティングが行われるまでの間、マルチキャスト用として設定された全てのインターフェイスでパケットを転送します。下流の全てのルータはマルチキャストがタイムアウト ( 180秒 ) するまでマルチキャストパケットを受信します。PIM-DMでは以下の状態になったときにプルーニングメッセージを上流に送信します。
・非RPFのポイント・ツー・ポイントルータインターフェイスに着信したとき
・受信ホストが全く接続されていないポイント・ツー・ポイントルータインターフェイスに着信したとき
PIM-DMは1つのマルチキャストグループに多数のメンバーが属しているときに最もうまく機能します。PIM-DMではネットワーク上の全てのルータへマルチキャストパケットをフラッディングした後、特定のマルチキャストグループのメンバーにサービスを提供していないルータをプルーニングします。
PIM-DMは以下の場合に最も効果的です。
・送信元と受信ホストが互いに近隣している場合
・送信元が少なく受信ホストが多い場合
・マルチキャストトラフィック量が多い場合
・マルチキャストトラフィックの流れが安定している場合
しかし、PIM-DMは拡張性に貧しくフラッディングを行うためエンタープライズネットワークなどでは適していません。
■PIM sparseモード
PIM-SMが想定しているのはグループのメンバーが少ない環境ではなくメンバーが広範囲にわたって分散している環境である点について注意してください。そのような環境でフラッディングを行うとネットワーク帯域幅が無用に消費され、パフォーマンスに問題が生じる可能性があります。したがってPIM-SMマルチキャストルーティングプロトコルでは範囲を絞る手法を使ってマルチキャストツリーを構築し維持します。
PIM-SMではまず空の配送ツリーを用意し配送グループへの明示的な参加要求があった場合にだけホストを追加します。PIM-SMではネットワーク上の比較的少数のセグメントへパケットが配送されます。データを送信したい送信元はまずデータをRPにパケット送信します。データを受信したい受信ホストを接続しているルータはRPに登録されます。パケットが送信元からRPを経由して受信ホストへ流れ始めるとパス上のルータはパスを自動的に最適化し不要なホップが削除されます。PIM-SMではマルチキャストを明示的に要求しているホスト以外はマルチキャストの受信を希望していないことを前提としています。PIM-SMでは一定の閾値が経過した後、共有ツリーモードを送信元ツリー切り替えて送信元に至る最適ルートを確立できます。ラストホップルータがマルチキャストを受信しはじめたときに直ちにSPTモードに切り替えてマルチキャストが最適ルートの恩恵を受けられるよう全てのIOSはデフォルトでSPT閾値を0に設定されています。
PIM-SMを実装する方式は次の場合に最も効果的です。
・グループに属する受信ホストが少ない場合
・トラフィックが散発的である場合
■PIM sparse-denseモード
PIM sparse-denseモードではグループのRP情報が利用できるかどうかに応じて個々のグループがsparseモードまたはdenseモードのいずれかを使用できます。ルータが特定のグループのRP情報を学習した場合、そのグループはsparseモードとして処理されます。それ以外の場合はそのグループはdenseモードとして処理されます。Cisco社ではこのsparse-denseモードを奨励しています。
■RP情報の配信の自動化
sparseモードで必要とされるRPについて管理者が手動で設定することももちろん可能ですが、以下のメカニズムを使用してRP情報の配信を自動化することも可能です。
・Auto-RP
・BSR ( Bootstrap Router )
上記を利用すると以下のメリットがあります。
・ネットワーク上で個々のルータとスイッチでRP情報を手動で設定する必要がなくなります。
・ネットワーク内で複数のRPを使用して様々なグループにサービスを提供することが容易です。
・複数のRP間で負荷を分散しグループの参加ホストの場所に応じてRPを配置することができます。
・設定の不整合を回避できます。手動によるRPの設定では設定を誤ると接続性の問題が生じる可能性があります。
■Auto-RP
Auto-RPではPIMネットワークにおけるグループ対RPのマッピング情報の配信を自動化します。グループ対RPのマッピングではどのマルチキャストグループがどのRPをsparseまたはsparse-denseモードで使用するか定義します。
PIMネットワーク上の全てのルータとレイヤ3スイッチはCisco-RP-discoveryマルチキャストグループ ( 224.0.1.40 ) に自動的に参加することでグループからRPへのアクティブなマッピングをRPマッピングエージェントから学習します。RPマッピングエージェントは以下の図のようにどのグループ対RPのマッピングを使用すべきかを他のルータに指示する権限を持った検出パケットを送信するルータです。RPマッピングエージェントはこの情報を60秒ごとに送信します。この役割は競合 ( グループ対RPのマッピング範囲の重複など ) が発生した場合に必要です。
マッピングエージェントはCisco-RP-announceグループ ( 224.0.1.39 ) に参加してRP候補アナウンスメントを受信することでIPマルチキャストを利用したネットワーク上のRP候補ルータの検出も行います。RP候補は特定のグループのRP-announceマルチキャストメッセージを60秒ごとに送信します。RPマッピングエージェントはアナウンスメントに含まれている情報を利用してグループ対RPキャッシュ内にエントリを作成します。RPマッピングエージェントは1つのグループにつき1つのエントリしか作成しません。複数のRP候補が同じ範囲をアナウンスしている場合、RPマッピングエージェントはRP候補のIPアドレスを比較してRP候補を選択します。
接続性と安定性が最も高いルータをRPマッピングエージェントとして設定することが奨励されています。RPマッピングルータからのホップ数がTTL値の範囲内にある全てのルータがAuto-RP discoveryメッセージを受信します。
sparseモード環境ではデフォルトRPがAuto-RP discoveryグループに参加する必要がありますが、denseモードではAuto-RP用のデフォルトRPは必要ありません。グローバルグループのRPを使用することが奨励されています。グローバルグループのRPを使用することが奨励されています。そうすることでRPがサービスを提供するグループアドレス範囲を再設定する必要はありません。Auto-RPを介して動的に検出されるRPは静的に設定されたRPより優先されます。
■BSR
BSR ( Bootstrap Router ) とはRP情報を配信する役割を扱うルータです。BSRはPIMマルチキャストネットワーク上でグループ対RPのマッピング情報を配信するもう一つの手段です。但し、BSRはPIMバージョン2でのみ動作します。BSRではマルチキャストの代わりに特殊なBSRメッセージを1ホップづつフラッディングすることでグループ対RPのマッピング情報を配信します。
BSRでは選出メカニズムを利用してドメイン内のルータおよびマルチレイヤスイッチの中からBSRルータを選出します。BSRの選出ではネットワーク全体にわたって1ホップづつ転送されるBSRメッセージに含まれたデバイスのBSRプライオリティを利用します。個々のBSRデバイスがメッセージを調べてメッセージに含まれているBSRプライオリティがルータ自身のBSRプライオリティより高い場合、あるいはBSRプライオリティはルータ自身のBSRプライオリティと同じであるものBSRのIPアドレスが自分のIPアドレスよりも大きい場合にのみ全てのインターフェイスからメッセージを転送します。
BSRに選出されたルータは選出されたBSRに関する情報を他のBSR候補が自動的に学習できるようにTTLを1に設定して自分のIPアドレスが含まれたBSRメッセージを送信します。隣接するルータはBSRメッセージを受信しBSRメッセージを受信したインターフェイス以外の全てのインターフェイスからTTLが1に設定されたメッセージをマルチキャストし1ホップづつBSRメッセージを配信します。
RP候補は自分の管理するグループ範囲をBSRに示すRP候補アドバタイズメントを送信しBSRはその情報をローカルのRP候補キャッシュに保存します。BSRはこの情報をブートストラップメッセージに挿入しTTLを1に設定して224.0.1.13を使用しドメイン内の全てのPIMルータに1ホップづつ情報を伝達します。全てのルータがこの情報に基づいてマルチキャストグループを特定のRPにマッピングすることができます。ルータはブートストラップメッセージを受信している限り、最新のRPマップを取得できます。全てのルータおよびマルチレイヤスイッチが同じRPハッシングアルゴリズムを使用するため特定のグループについて同じRPを選出します。
■IGMP
ホストはIGMP ( Internet Group Management Protocol ) を利用して特定のLAN上のマルチキャストグループに自ホストを動的に登録します。ホストはローカルのマルチキャストルータにIGMPメッセージを送信することでグループメンバーシップを示します。IGMPに対応するように設定されたルータはIGMPメッセージをリスンし、定期的にクエリを送信して特定のサブネットまたはVLANでアクティブなグループまたはアクティブでないグループを検出します。
IGMPには以下のバージョンがありCiscoではデフォルトでバージョン2が稼働します。
名称 | 説明 |
IGMPバージョン1 RFC1112 | ホストのグループ加入( join ) と継続の為のメッセージを送信します。 |
IGMPバージョン2 RFC2236 | ホストがグループから離れること ( leave ) を明示するためのメッセージを送信します。 |
IGMPバージョン3 RFC3376 | 受信ホストが送信元フィルタリングを行えます |
■IGMPスヌーピング
IGMPスヌーピングはレイヤ2とレイヤ3のIPマルチキャスト情報を調べてレイヤ2マルチキャストテーブルを維持するIPマルチキャスト抑制メカニズムです。
IGMPスヌーピングではLANスイッチがホストとルータの間で送信されるIGMP joinメッセージとIGMP leaveメッセージを「スヌーピング」する、つまり覗き見を行います。それによりスイッチはどのポート配下に受信ホストが存在しているのかを把握することが可能となり受信端末のいないポートにはマルチキャストを転送しないよう無駄なトラフィックを抑制することが可能となります。
スイッチは特定のマルチキャストグループに属するホストからIGMPホストレポートを受信するとそのグループに対応するマルチキャストテーブルエントリに追加します。グループを離脱したホストは定期的に送られる一般的なIGMPクエリを無視するか、IGMP leaveメッセージを送信します。IGMP leaveメッセージを受信したスイッチはそれに対する応答としてMacベースのグループ固有のクエリを送信し、そのVLANに接続されている他のデバイスが特定のマルチキャストグループのトラフィックを受信する意思を持っているかどうかを調べます。その際にIGMP joinメッセージを受信しなかった場合、スイッチはそのホストのテーブルエントリを削除します。最後のleaveメッセージがグループ内の唯一のホストから送信されたものであり一般的なクエリに応答するIGMP joinメッセージをスイッチが受信しなかった場合、スイッチはグループエントリを削除しそのIGMP leaveメッセージをマルチキャストルータに伝えます。それを受信したルータはインターフェイスからグループを削除します。
IGMPスヌーピングは高速離脱処理をサポートしています。この処理ではIGMPグループ固有クエリをホストポートに送信する過程を省いてレイヤ2インターフェイスをマルチキャスト転送テーブルから直ちに削除します。グループ固有のIGMPバージョン2またはバージョン3のleaveメッセージを受信するとスイッチはそのインターフェイスでマルチキャストルータが検出された場合を除き、そのマルチキャストグループに対応するレイヤ2転送テーブルエントリからそのインターフェイスを直ちに削除します。高速離脱処理によってネットワーク上のVLANに属する全てのホストの帯域幅管理機能が強化されます。