メインコンテンツまでスキップ

5. グループメンバーのプロトコルの説明

IGMPは非対称プロトコルであり、グループメンバー(マルチキャストパケットを受信したいホストまたはルーター)とマルチキャストルーター(IGMPメッセージをリッスンし、マルチキャスト転送を調整する)に異なる動作を指定します。このセクションでは、グループメンバーに適用されるIGMPv3の部分について説明します。(ルーターもグループメンバーになることができることに注意してください。)

システムは、マルチキャスト受信がサポートされている各インターフェース上で、このセクションで説明されているプロトコルを実行します。各インターフェース上のプロトコルには、2種類のイベントの即時処理が含まれます:

  1. IPMulticastListen定義のローカル呼び出しによって引き起こされる、インターフェース上のマルチキャスト受信状態の変更。

  2. Membership Queryメッセージの受信。

5.1. インターフェース状態の変更に対するアクション

IPMulticastListenの呼び出しは、セクション3.2の規則に従って、インターフェースのマルチキャスト受信状態を変更する可能性があります。このような各変更は、単一のマルチキャストグループアドレスのインターフェースごとの状態に影響します。

インターフェース状態の変更により、システムはそのインターフェースからState Change Reportを即座に送信します。State Change Reportのタイプと内容は次のように決定されます:

  1. 状態変更が重要でない場合、たとえばグループのフィルターモードがINCLUDEからINCLUDEへ、またはEXCLUDEからEXCLUDEへ移動し、ソースアドレスのセットが変更されない場合、レポートは生成されません。

  2. 状態変更が重要である場合、State Change Reportが生成されます。Reportには、状態が変更されたグループの単一のGroup Recordが含まれます。Group Recordのタイプと内容は、次の表に示すように、Old State(変更前の状態)とNew State(変更後の状態)を比較することによって決定されます:

    Old StateNew StateState Change Record Sent
    INCLUDE (A)INCLUDE (B)ALLOW (B-A), BLOCK (A-B)
    EXCLUDE (A)EXCLUDE (B)ALLOW (A-B), BLOCK (B-A)
    INCLUDE (A)EXCLUDE (B)TO_EX (B)
    EXCLUDE (A)INCLUDE (B)TO_IN (B)

    "ALLOW (B-A)"という表記は、State Change Recordが、セットBにはあるがセットAにはないすべてのソースアドレスを含むソースリストを保持することを意味します。"BLOCK (A-B)"という表記は、State Change Recordが、セットAにはあるがセットBにはないすべてのソースアドレスを含むソースリストを保持することを意味します。

    ALLOWまたはBLOCKレコードの計算されたソースリストが空の場合、そのレコードはState Change Reportから省略されます。

State Change Reportがネットワーク上のすべてのマルチキャストルーターによって受信されることを保証するために、システムはReportを[Robustness Variable] - 1回再送信します。再送信は、(0, [Unsolicited Report Interval])の範囲から選択されたランダムな間隔で行われます。[Robustness Variable]は調整可能なパラメーターで、デフォルトは2です。[Unsolicited Report Interval]も調整可能なパラメーターで、デフォルトは10秒です。

State Change Reportが送信予定であり、Current State Reportを生成するQueryが受信された場合(セクション5.2を参照)、保留中のState Change Reportは破棄され、代わりにCurrent State Reportが送信されます。Current State Reportには、State Change Reportに含まれていたであろうすべての情報が含まれている必要があります。

5.2. Queryの受信に対するアクション

システムがQueryを受信すると、まずQueryが有効かどうかを確認します。有効であるためには、Queryは次の条件を満たす必要があります:

  1. 少なくとも12オクテットの長さである,
  2. 正しいIPチェックサムを持つ,
  3. 宛先IPアドレスがall-systemsマルチキャストアドレス(224.0.0.1)または照会されている特定のグループアドレスに等しい。

Queryが無効な場合、それは無視されます。Queryが有効な場合、システムは次のアクションを実行します:

  1. 必要に応じて、Querierのタイマーを更新します(セクション6を参照)。
  2. Queryに応答する必要があるかどうかを判断します。

次のサブセクションでは、さまざまなタイプのQueriesへの応答規則について説明します。

5.2.1. General Queryの受信に対するアクション

General Queryを受信すると、システムは各インターフェースをチェックして、グループのマルチキャスト受信状態があるかどうかを確認します。状態があるグループごとに、システムはCurrent State Reportの送信をスケジュールします。

ReportにはグループのGroup Recordが含まれます。Group RecordのタイプはMODE_IS_INCLUDE(グループのフィルターモードがINCLUDEの場合)、またはMODE_IS_EXCLUDE(フィルターモードがEXCLUDEの場合)です。Group Record内のソースリストには、グループのソースアドレスのセットが含まれます。

Reportは、QueryのMax Resp Codeフィールドで指定された値である[Max Resp Time]の範囲(0, [Max Resp Time])から選択されたランダムな時刻に送信されるようにスケジュールされます。

5.2.2. Group-Specific Queryの受信に対するアクション

Group-Specific Queryを受信すると、システムは、Queryで指定されたグループアドレスのマルチキャスト受信状態があるかどうかを確認します。ない場合、Queryを無視します。

グループの状態がある場合、システムはCurrent State Reportの送信をスケジュールします。Reportには、セクション5.2.1で説明されているように構築されたグループのGroup Recordが含まれます。

Reportは、範囲(0, [Max Resp Time])から選択されたランダムな時刻に送信されるようにスケジュールされます。

5.2.3. Group-and-Source-Specific Queryの受信に対するアクション

Group-and-Source-Specific Queryを受信すると、システムは、Queryで指定されたグループアドレスのマルチキャスト受信状態があるかどうかを確認します。ない場合、Queryを無視します。

グループの状態がある場合、システムは、Queryで指定されたソースアドレスのいずれかに関心があるかどうかを判断します。システムは、次の場合にソースアドレスに関心があります:

  1. グループのフィルターモードがEXCLUDEである、または
  2. グループのフィルターモードがINCLUDEであり、ソースアドレスがソースリストに含まれている。

システムが少なくとも1つのソースアドレスに関心がある場合、Current State Reportの送信をスケジュールします。Reportには、セクション5.2.1で説明されているように構築されたグループのGroup Recordが含まれます。

Reportは、範囲(0, [Max Resp Time])から選択されたランダムな時刻に送信されるようにスケジュールされます。

5.2.4. "S"フラグが設定されたQueryの受信に対するアクション

受信したQueryで"S"(Suppress Router-Side Processing)フラグが設定されている場合、システムはQuerierのタイマーを更新しません。ただし、セクション5.2.1から5.2.3で説明されているように、Queryに応答します。