2. Introduction (はじめに)
2. Introduction (はじめに)
Internet Group Management Protocol (インターネットグループ管理プロトコル, IGMP) は、IP ホストが直接隣接するマルチキャストルーターに自身のマルチキャストグループメンバーシップを報告するために使用されます。このメモでは、グループメンバーシップを決定するためのホストとルーター間の IGMP の使用についてのみ説明します。マルチキャストグループのメンバーであるルーターは、ルーターとしてだけでなくホストとしても振る舞うことが期待されており、自身のクエリに応答することさえあります。IGMP はルーター間で使用されることもありますが、そのような使用法はここでは規定されていません。
ICMP と同様に、IGMP は IP の不可欠な部分です。IP マルチキャストを受信したいすべてのホストに実装することが要求されます。IGMP メッセージは IP データグラムにカプセル化され、IP プロトコル番号は 2 です。この文書で説明されているすべての IGMP メッセージは IP TTL 1 で送信され、IP ヘッダーに IP Router Alert (IP ルーターアラート) オプション [RFC 2113] を含みます。ホストに関係するすべての IGMP メッセージは、以下の形式を持っています:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Max Resp Time | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Group Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2.1. Type (タイプ)
ホストとルーターの相互作用に関係する IGMP メッセージには 3 つのタイプがあります:
0x11 = Membership Query (メンバーシップクエリ)
Membership Query (メンバーシップクエリ) メッセージには 2 つのサブタイプがあります:
- General Query (一般クエリ)、接続されたネットワーク上のどのグループにメンバーがいるかを知るために使用されます。
- Group-Specific Query (グループ特定クエリ)、特定のグループが接続されたネットワーク上にメンバーを持っているかどうかを知るために使用されます。
これら 2 つのメッセージは、セクション 1.4 で説明されているように、Group Address (グループアドレス) によって区別されます。Membership Query メッセージは単に "Query" (クエリ) メッセージと呼ばれます。
0x16 = Version 2 Membership Report (バージョン 2 メンバーシップレポート)
0x17 = Leave Group (グループ脱退)
IGMPv1 との下位互換性のために、追加のメッセージタイプがあります:
0x12 = Version 1 Membership Report (バージョン 1 メンバーシップレポート)
この文書では、Membership Reports を単に "Reports" (レポート) と呼びます。バージョンが指定されていない場合、その記述は両方のバージョンに等しく適用されます。
認識されないメッセージタイプは静かに無視されるべきです。新しいメッセージタイプは、IGMP の新しいバージョン、マルチキャストルーティングプロトコル、またはその他の用途で使用される可能性があります。
2.2. Max Response Time (最大応答時間)
Max Response Time (最大応答時間) フィールドは、Membership Query メッセージでのみ意味を持ち、応答レポートを送信するまでの最大許容時間を 1/10 秒単位で指定します。他のすべてのメッセージでは、送信者によってゼロに設定され、受信者によって無視されます。
この設定を変更することで、セクション 7.8 で説明されているように、IGMPv2 ルーターは "leave latency" (脱退遅延) (最後のホストがグループを脱退した瞬間から、メンバーがもういないことがルーティングプロトコルに通知されるまでの時間) を調整できます。また、セクション 7.3 で説明されているように、サブネット上の IGMP トラフィックのバースト性を調整することもできます。
2.3. Checksum (チェックサム)
チェックサムは、IGMP メッセージ全体 (IP ペイロード全体) の 1 の補数の和の 1 の補数であり、16 ビットです。チェックサムを計算するために、チェックサムフィールドはゼロに設定されます。パケットを送信するとき、チェックサムは計算され、このフィールドに挿入されなければなりません (MUST)。パケットを受信するとき、パケットを処理する前にチェックサムは検証されなければなりません (MUST)。
2.4. Group Address (グループアドレス)
Membership Query メッセージでは、General Query を送信する場合はグループアドレスフィールドはゼロに設定され、Group-Specific Query を送信する場合はクエリ対象のグループアドレスに設定されます。
Membership Report または Leave Group メッセージでは、グループアドレスフィールドには、報告または脱退するグループの IP マルチキャストグループアドレスが保持されます。
2.5. Other fields (その他のフィールド)
IGMP メッセージは 8 オクテットより長くなる可能性があることに注意してください。特に将来の下位互換性のある IGMP バージョンではそうです。Type (タイプ) が認識されるものである限り、IGMPv2 実装はパケットを処理する際に最初の 8 オクテット以降を無視しなければなりません (MUST)。ただし、IGMP チェックサムは、最初の 8 オクテットだけでなく、常に IP ペイロード全体に対して計算されます。