6. マルチキャストルーターのプロトコル
IGMPの目的は、各マルチキャストルーターが、直接接続されている各ネットワークについて、そのネットワーク上でリスナーを持つマルチキャストアドレスを学習できるようにすることです。IGMPv3により、マルチキャストルーターは、リスナーが関心を持つソースも学習できます。
6.1. Querier選出の条件
IGMPv3はIGMPv2と同様に、ネットワークごとに1つのQuerierのみが存在すべきであることに同意しています。ただし、IGMPv3 QuerierとIGMPv2 Querierは同じネットワーク上で共存できます。選出プロトコルはIGMPv2と同じです:
- 最初に、すべてのマルチキャストルーターは、接続されている各ネットワーク上でQuerierとして起動します。
- マルチキャストルーターが、より低いIPアドレスを持つルーターからのQueryメッセージを受信した場合、そのネットワーク上でNon-Querierになる必要があります。
- マルチキャストルーターが[Other Querier Present Interval]の間、より低いIPアドレスを持つルーターからのQueryメッセージを受信しなかった場合、Querierの役割を再開します。
6.2. Queryの受信時のQuerierのアクション
QuerierがQueryメッセージを受信すると、QueryのソースIPアドレスをチェックします。
- ソースIPアドレスが自身のIPアドレスよりも低い場合、ルーターはNon-Querierになります。
- ソースIPアドレスが自身のIPアドレスよりも高い場合、ルーターはQuerierのままです。
- ソースIPアドレスが自身のIPアドレスと等しい場合、Queryは無視されます(反射またはループバック)。
6.3. Queriesの送信
Querierは定期的にGeneral Queriesを送信して、メンバーシップ情報を要求します。また、特定のタイプのState Change Reportsを受信したときに、Group-SpecificまたはGroup-and-Source-Specific Queriesを送信します。
6.3.1. General Queries
Querierは定期的にGeneral Queriesをall-systemsマルチキャストアドレス(224.0.0.1)に送信します。デフォルトの[Query Interval]は125秒です。
General Queriesは、すべてのグループとソースのメンバーシップ情報を更新するために使用されます。
6.3.2. Group-Specific Queries
Querierが、システムがグループを離れたことを示すState Change Reportを受信した場合(例:EXCLUDEからINCLUDEへのフィルターモード変更、またはソースをブロックするソースリスト変更)、グループアドレスにGroup-Specific Queryを送信します。
このQueryは、グループに関心のある残りのシステムがあるかどうかを判断するために使用されます。
6.3.3. Group-and-Source-Specific Queries
Querierが、システムがグループの特定のソースに関心がなくなったことを示すState Change Reportを受信した場合(例:特定のソースをブロック)、Group-and-Source-Specific Queryを送信します。
このQueryは、それらの特定のソースに関心のある残りのシステムがあるかどうかを判断するために使用されます。
6.4. Reportsの受信
マルチキャストルーターは、受信したReportsに基づいて、各グループとソースの受信状態を記録します。状態はインターフェースごとに維持されます。
6.4.1. Current State Recordsの受信
ルーターがCurrent State Recordを受信すると、グループ/ソースタイマーを更新します。
- レコードがMODE_IS_INCLUDEの場合、ルーターはリストされたソースのタイマーを更新します。
- レコードがMODE_IS_EXCLUDEの場合、ルーターはグループタイマーと除外されたソースのタイマー(存在する場合)を更新します。
6.4.2. Filter-Mode-Change Recordsの受信
ルーターがFilter-Mode-Change Recordを受信すると、フィルターモードとタイマーを更新します。
- CHANGE_TO_INCLUDE_MODE: ルーターはINCLUDEモードに切り替え(まだでない場合)、ソースタイマーを更新します。
- CHANGE_TO_EXCLUDE_MODE: ルーターはEXCLUDEモードに切り替え、グループタイマーを更新します。
6.4.3. Source-List-Change Recordsの受信
ルーターがSource-List-Change Recordを受信すると、ソースタイマーを更新します。
- ALLOW_NEW_SOURCES: ルーターは新しいソースをリストに追加し、それらのタイマーを開始します。
- BLOCK_OLD_SOURCES: ルーターは、削除する前に他のシステムがこれらのソースをまだ必要としているかどうかを照会する場合があります。
6.5. ルーターフィルターモードの切り替え
グループのルーターフィルターモードは、グループタイマーとソースタイマーの状態に基づいて、INCLUDEとEXCLUDEの間で遷移します。
- グループタイマーが実行中の場合、フィルターモードはEXCLUDEです。
- グループタイマーが期限切れになると、フィルターモードはINCLUDEに切り替わります。
6.6. Group Leaveメッセージの受信に対するアクション (IGMPv2)
ルーターがIGMPv2 Leave Groupメッセージを受信した場合、Leaveメッセージで指定されたグループについて、INCLUDEモードへの変更(事実上グループを離れる)を示すState Change Reportを受信したかのように動作します。これにより、IGMPv3ルーターはIGMPv2ホストと相互運用できます。