概要

IGMPによって、マルチキャストレシーバはラストホップルータへマルチキャストグループの参加や脱退を通知します。IGMPの動作の仕組みについて解説します。

マルチキャストグループへの参加

マルチキャストレシーバが何らかのマルチキャストアプリケーションを利用して、マルチキャストグループに参加します。すると、レシーバからIGMPメンバーシップレポートが送信されます。メンバーシップレポートによって、ルータにマルチキャストグループへの参加を通知します。これを特に「Joinメッセージ」と呼ぶことがあります。Joinというタイプのメッセージがあるわけではなく、グループ参加の最初のメンバーシップレポートを便宜上「Join」と呼んでいます。

メンバーシップレポートを受信したルータは、IGMPテーブルにその情報を登録します。また、実際にはIGMPテーブルだけでなく、マルチキャストルーティングテーブルにも反映されます。この様子を図に表すと次のようになります。

図 マルチキャストグループへの参加
図 マルチキャストグループへの参加

ここで、IGMPメンバーシップレポートの宛先IPアドレスが参加するグループアドレスになっていることに注意してください。そして、ルータはマルチキャストルーティングが有効(=IGMPが有効)であれば、すべてのマルチキャストパケットを受信して処理を行うようになります。

この図のルータR1はホストAからIGMPメンバーシップレポートを受け取ることで、FastEthernet0/0の先にマルチキャストレシーバが存在しているということを認識します。


マルチキャストレシーバがグループに参加することについては、以下の記事をご覧ください。


マルチキャストグループの維持

ホストは、任意のタイミングでマルチキャストグループに参加したり脱退したりできます。そのため、ルータはレシーバが存在しているかを定期的に確認しなければいけません。そのためのメッセージがIGMPクエリーです。ルータが定期的にIGMPクエリーを送信することで、マルチキャストレシーバの存在を確認します。Ciscoルータでは、デフォルトで60秒ごとにIGMPクエリーを送信します。その様子を次の図に示します。

図 マルチキャストグループの維持
図 マルチキャストグループの維持 IGMPクエリー

IGMPクエリーは224.0.0.1というサブネット上の全マルチキャストホストを示すリンクローカルマルチキャストアドレスで送信します。IGMPクエリーに対しては、IGMPメンバーシップレポートで返事を返します。IGMPメンバーシップレポートで返事を返すのは1つのマルチキャストレシーバのみで十分です。サブネット上に1台でもレシーバが存在すれば、そのサブネットにマルチキャストパケットをルーティングします。何台レシーバが存在するかは、重要ではありません。レシーバが存在するか、しないかが重要なのです。

クエリーに対して返事するマルチキャストレシーバを決めるために最大応答時間があります。レシーバがクエリーを受信すると、最大応答時間内のランダムな時間のタイマーをセットします。タイマーが切れるとIGMPメンバーシップレポートを送信します。IGMPメンバーシップレポートの送信先IPアドレスは参加しているマルチキャストグループアドレスなので、他のレシーバはメンバーシップレポートがルータに送信されていることがわかります。そのため、他のレシーバはメンバーシップレポートを送信しません。

図 マルチキャストグループの維持 IGMPレポート
図 マルチキャストグループの維持 IGMPレポート

なお、1つのサブネット上に複数台のルータが冗長化されている場合があります。そのような場合、IGMPクエリーはサブネット上の1台のルータからのみ送信されます。IGMPクエリーを送信するルータを特に「IGMPクエリア」と呼び、サブネット上の最も小さいIPアドレスを持つルータがIGMPクエリアとして選出されます。

図 IGMPクエリア
図 IGMPクエリア

show ip igmp interfaceコマンドでIGMPクエリアを確認できます。

マルチキャストグループからの脱退

マルチキャストレシーバがグループから脱退するとき、それをラストホップルータに通知するメッセージがIGMPリーブメッセージです。

図 IGMPリーブ
図 IGMPリーブ

リーブメッセージを受信したルータは、そのメッセージがIGMPテーブルの「Last Reporter」が送信したものであるかによって、動作が異なります。
Last Reporterからリーブメッセージが送信されると、そのサブネット上にレシーバがいなくなってしまう可能性があります。そこで、他にもレシーバがいるかどうかを定期的なクエリー以外のタイミングで問い合わせます。これをグループスペシフィッククエリーといいます。

図 IGMPグループスペシフィッククエリー
図 IGMPグループスペシフィッククエリー

Last Reporterからのリーブメッセージでない場合は、ルータは特に何もしません。Last Reporterがマルチキャストレシーバとして存在していることがわ
かっているからです。

関連記事

IPマルチキャストの仕組み