IGMPその3
目次
IGMPv2の概要
IGMPv1では、マルチキャストグループのメンバーが脱退するとき、何も行わずに黙って脱退してしまいます。ルータがメンバーがいなくなったことを確認するまでに、多少時間がかかってしまい、その間、必要のないマルチキャストパケットを流してしまうことになります。
そこで、IGMPv2ではリーブグループメッセージによって、明示的にマルチキャストグループから脱退し、必要のないマルチキャストを流さないようにするための工夫が行われています。
また、IGMPv2はグループスペシフィッククエリーというクエリーメッセージは、特定のマルチキャストグループに対するクエリーを意味しています。
他には、ひとつのサブネットに複数のIGMPルータがいる場合、クエリーを送信するクエリアの選定やグループのメンバーがレポートを返す時間を指定することもできるようになっています。IGMPv1とは、下位互換を保っています。
IGMPv2は、RFC2236に定義されています。
IGMPv2のパケットフォーマット
IGMPv2のフォーマットは、IGMPv1とよく似ています。IGMPv2のフォーマットは以下の図のようになります。
各フィールドは次のような意味を持っています。
タイプ
v1では、「タイプ」「バージョン」と分かれていましたが、v2では、一緒になっています。この8ビットのフィールドで、IGMPのバージョンとメッセージのタイプを表現します。
0x11 = メンバーシップクエリー
0x12 = v1メンバーシップレポート
0x16 = v2メンバーシップレポート
0x17 = リーブグループ
頭がすべて「1」になっているのは、IGMPv1との互換性を確保するためです。
最大応答時間
v1では、ルータからのクエリーを受け取ったとき、ホストは10秒以内のランダムなカウンタをスタートさせて、そのカウンタが0になったホストのみレポートを返していました。v2では、カウンタの最大値を10秒から変更することができます。応答時間の最大値がこのフィールドに入ります。
チェックサム
IGMPメッセージのエラーチェックを行います。
グループアドレス
マルチキャストグループのアドレスが入ります。
以上が、IGMPv2の概要とフォーマットです。
次回、実際にIGMPv2によってグループの加入、維持、脱退がどのように行われているかを解説します。