IGMPその2

IGMPによるマルチキャストグループの管理とは?

IGMPによって、マルチキャストグループの管理を行います。管理するとは、具体的に


・マルチキャストグループへの加入
・マルチキャストグループの維持
・マルチキャストグループからの脱退



を制御することです。


IGMPv1によるマルチキャストグループへの加入

あるコンピュータがマルチキャストのアプリケーションでマルチキャストを受信したいと設定したとします。つまり、マルチキャストグループに入りたいという設定を行うと、コンピュータはIGMPメンバーシップレポートを送信します。
このマルチキャストグループへ入りたいというタイミングで送信するIGMPメッセージを
IGMP Joinメッセージと呼びます。

IGMP JoinメッセージのIPヘッダの送信先IPアドレスは加入したいグループアドレスを指定します。IGMPが有効になっているルータは、この加入メッセージを受け取ると、受け取ったインタフェースの先にマルチキャストグループのメンバーがいるということがわかるようになり、該当のマルチキャストグループへのパケットを転送するようになります。
IGMP Joinメッセージによって、「マルチキャストグループに入りたいんです!」ということをルータに知らせています。

たとえば、あるコンピュータAが224.10.10.10のグループに加入したいときは、次の図のようになります。






IGMPv1によるマルチキャストグループの維持

ルータは、さらにインタフェースの先にマルチキャストグループが存在しているかどうかを確認しなくてはいけません。そのために、定期的な問い合わせ、クエリーを行います。

デフォルトの設定では、60秒に1度、ルータはジェネラルクエリーを送信します。ジェネラルクエリーの送信先IPアドレスは224.0.0.1です。この
224.0.0.1というアドレスはWell-knownのマルチキャストグループであり、ネットワーク上のすべてのマルチキャストホストを示しています。ジェネラルクエリーを送信することによって、ルータは「マルチキャストグループのメンバーの人いますか〜?」と問い合わせをしているんですね。





問い合わせを受けたマルチキャストグループのメンバーは、返事を返します。でも、返事を返すのはひとりだけです。ルータはひとりでもグループのメンバーがいれば、マルチキャストを中継するので
何人も返事を返す必要はありません。

返事を返すメンバーを決める仕組みは、ジェネラルクエリーを受け取ると、受け取ったメンバーはタイマーをスタートさせます。タイマーの初期値は10秒以内のランダムな値です。この
タイマーが最初に0になったメンバーがルータに返事を返します。返事の内容は、Joinのときと同じメンバーシップレポートとなっています。






IGMPv1によるマルチキャストグループからの脱退

あるコンピュータが「もうマルチキャストを受け取りたくない!」というとき、IGMPv1では何もしません。IGMPv1は、グループから抜けるときには黙って抜けていきます。

ルータは、マルチキャストグループのメンバーがいないところへいつまでもパケットを転送しても仕方がないですね。ルータが送信するジェネラルクエリーに対する返事(レポート)が一定時間内に返ってこないと、グループのメンバーがいなくなったと判断して、そのインタフェースへマルチキャストを転送しなくなります。






IGMPv1によるマルチキャストグループの管理のまとめ

以上のように、


・マルチキャストグループへの加入
ホストからルータへのメンバーシップクエリー(Joinメッセージ)

・マルチキャストグループの維持
ルータからの定期的なジェネラルクエリーに対して、ホストがレポートを返す

・マルチキャストグループの脱退
ホストは何もしない。ルータはクエリーの返事が返ってこないとメンバーがいなくなったと判断


によって、マルチキャストグループの管理を行っています。







(C) Copyright 2000-2003 Gene All Right Reserved