マルチキャストグループへの参加
マルチキャストレシーバが何らかのマルチキャストアプリケーションを利用し
て、マルチキャストグループに参加します。すると、レシーバから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がマルチキャストレシーバとして存在していることがわ かっているからです。







