目次
概要
IGMPによって、マルチキャストレシーバはラストホップルータへマルチキャストグループの参加や脱退を通知します。IGMPの動作の仕組みについて解説します。
マルチキャストグループへの参加
マルチキャストレシーバが何らかのマルチキャストアプリケーションを利用して、マルチキャストグループに参加します。すると、レシーバからIGMPメンバーシップレポートが送信されます。メンバーシップレポートによって、ルータにマルチキャストグループへの参加を通知します。これを特に「Joinメッセージ」と呼ぶことがあります。Joinというタイプのメッセージがあるわけではなく、グループ参加の最初のメンバーシップレポートを便宜上「Join」と呼んでいます。
メンバーシップレポートを受信したルータは、IGMPテーブルにその情報を登録します。また、実際にはIGMPテーブルだけでなく、マルチキャストルーティングテーブルにも反映されます。この様子を図に表すと次のようになります。
ここで、IGMPメンバーシップレポートの宛先IPアドレスが参加するグループアドレスになっていることに注意してください。そして、ルータはマルチキャストルーティングが有効(=IGMPが有効)であれば、すべてのマルチキャストパケットを受信して処理を行うようになります。
この図のルータR1はホストAからIGMPメンバーシップレポートを受け取ることで、FastEthernet0/0の先にマルチキャストレシーバが存在しているということを認識します。
マルチキャストレシーバがグループに参加することについては、以下の記事をご覧ください。
マルチキャストグループの維持
ホストは、任意のタイミングでマルチキャストグループに参加したり脱退したりできます。そのため、ルータはレシーバが存在しているかを定期的に確認しなければいけません。そのためのメッセージがIGMPクエリーです。ルータが定期的にIGMPクエリーを送信することで、マルチキャストレシーバの存在を確認します。Ciscoルータでは、デフォルトで60秒ごとにIGMPクエリーを送信します。その様子を次の図に示します。
IGMPクエリーは224.0.0.1というサブネット上の全マルチキャストホストを示すリンクローカルマルチキャストアドレスで送信します。IGMPクエリーに対しては、IGMPメンバーシップレポートで返事を返します。IGMPメンバーシップレポートで返事を返すのは1つのマルチキャストレシーバのみで十分です。サブネット上に1台でもレシーバが存在すれば、そのサブネットにマルチキャストパケットをルーティングします。何台レシーバが存在するかは、重要ではありません。レシーバが存在するか、しないかが重要なのです。
クエリーに対して返事するマルチキャストレシーバを決めるために最大応答時間があります。レシーバがクエリーを受信すると、最大応答時間内のランダムな時間のタイマーをセットします。タイマーが切れるとIGMPメンバーシップレポートを送信します。IGMPメンバーシップレポートの送信先IPアドレスは参加しているマルチキャストグループアドレスなので、他のレシーバはメンバーシップレポートがルータに送信されていることがわかります。そのため、他のレシーバはメンバーシップレポートを送信しません。
なお、1つのサブネット上に複数台のルータが冗長化されている場合があります。そのような場合、IGMPクエリーはサブネット上の1台のルータからのみ送信されます。IGMPクエリーを送信するルータを特に「IGMPクエリア」と呼び、サブネット上の最も小さいIPアドレスを持つルータがIGMPクエリアとして選出されます。
show ip igmp interfaceコマンドでIGMPクエリアを確認できます。
マルチキャストグループからの脱退
マルチキャストレシーバがグループから脱退するとき、それをラストホップルータに通知するメッセージがIGMPリーブメッセージです。
リーブメッセージを受信したルータは、そのメッセージがIGMPテーブルの「Last Reporter」が送信したものであるかによって、動作が異なります。
Last Reporterからリーブメッセージが送信されると、そのサブネット上にレシーバがいなくなってしまう可能性があります。そこで、他にもレシーバがいるかどうかを定期的なクエリー以外のタイミングで問い合わせます。これをグループスペシフィッククエリーといいます。
Last Reporterからのリーブメッセージでない場合は、ルータは特に何もしません。Last Reporterがマルチキャストレシーバとして存在していることがわ
かっているからです。
IPマルチキャストの仕組み
- ユニキャスト/ブロードキャスト/マルチキャストの振り返り
- IPマルチキャストの用途 ~同じデータの同報~
- マルチキャストグループへの参加 ~マルチキャストデータを受信できるようにする~
- マルチキャストアドレス ~レイヤ3とレイヤ2のマルチキャストアドレス~
- IGMPの概要 ~マルチキャストグループへの参加を通知~
- IGMPの仕組み
- IGMPの設定と確認コマンド
- IGMPスヌーピング
- マルチキャストルーティングの概要
- ディストリビューションツリー
- RPFチェック
- PIM-DMの仕組み
- PIM-DMの設定と確認コマンド
- PIM-SMの仕組み ~ディストリビューションツリー作成~
- PIM-SMの仕組み ~ディストリビューションツリー作成例~
- PIM-SMの設定と確認コマンド
- PIM-SM ダイナミックなRPの設定 ~Auto RP/BSRの概要~
- PIM-SM AutoRPの設定例
- PIM-SM BSRの設定例
- Bidirectional PIMの設定と確認コマンド
- PIM SSMの設定と確認コマンド
- PIM-SMの設定演習 [スタティックRP]
- PIM-SMの設定演習 [Auto RP]
- PIM-SMの設定演習 [BSR]
- PIM-SMの設定演習 [Bidirectional PIM]
- PIM-SMの設定演習 [SSM]
- PIM-SMの設定演習 [トラブルシュート]
- Anycast RP ~RPの負荷分散~
- Anycast RPの設定と確認コマンド
- Anycast RPの設定例
- マルチキャストパケットの転送経路の制御 ~ip mrouteコマンド~
- ip multicast rate-limitコマンド ~マルチキャストパケットのレート制限~
- ip multicast rate-limitコマンドの設定例
- IGMPレポートの制限
- PIM-SM 設定ミスの切り分けと修正 Part1
- PIM-SM 設定ミスの切り分けと修正 Part2
- PIM-SM 設定ミスの切り分けと修正 Part3