7. IGMPv1およびIGMPv2との相互運用
IGMPv3ホストとルーターは、まだIGMPv3にアップグレードされていないホストやルーターと相互運用します。この互換性は、Querierによってマルチキャストされる定期的なMembership Queryメッセージと、古いホストによってマルチキャストされるVersion 1およびVersion 2 Membership Reportメッセージによって維持されます。
7.1. IGMPv3ホストの動作
IGMPv3ホストの動作は、ネットワーク上のQuerierがIGMPv3、IGMPv2、またはIGMPv1のいずれを使用しているかによって異なります。
7.1.1. Queryバージョンの区別
Membership QueryメッセージのIGMPバージョンは次のように決定されます:
- IGMPv1 Query: 長さ = 8オクテット、Max Resp Code = 0.
- IGMPv2 Query: 長さ = 8オクテット、Max Resp Code > 0.
- IGMPv3 Query: 長さ >= 12オクテット.
7.1.2. 古いQuerierの存在下での動作
IGMPv3ホストは、QuerierがまだIGMPv3にアップグレードされていないネットワークに配置される可能性があります。ホストはこの可能性を考慮する必要があります。
- IGMPv1 Querier Present: IGMPv3ホストがIGMPv1 Queryを受信した場合、IGMPv1 Reportsで応答する必要があります。ソースフィルタリングはサポートされていません。
- IGMPv2 Querier Present: IGMPv3ホストがIGMPv2 Queryを受信した場合、IGMPv2 Reportsで応答する必要があります。ソースフィルタリングはサポートされていません。
- IGMPv3 Querier Present: IGMPv3ホストがIGMPv3 Queryを受信した場合、IGMPv3 Reportsで応答します。ソースフィルタリングがサポートされています。
ホストは各インターフェースの互換性モード変数を維持し、Queryが受信されるたびに更新されます。古いQueryが受信されると、ホストは対応する互換性モードに切り替え、タイマーを設定します。タイマーが期限切れになると、ホストはIGMPv3モードに戻ります。
7.2. IGMPv3ルーターの動作
IGMPv3ルーターの動作は、ネットワーク上に古いホストやルーターが存在するかどうかによって異なります。
7.2.1. 古いホストの存在
IGMPv3ルーターは、古いホストからIGMPv1またはIGMPv2 Reportsを受信する場合があります。
- IGMPv1 Report Received: ルーターは、グループに対してIGMPv3 IS_EX({})レポートを受信したかのように動作します。また、そのグループのすべてのLeave Groupメッセージを無視する必要があります(IGMPv1にはLeaveメッセージがないため)。
- IGMPv2 Report Received: ルーターは、グループに対してIGMPv3 IS_EX({})レポートを受信したかのように動作します。
古いホストが存在する場合、ルーターは互換性を確保するために、影響を受けるグループのIGMPv3固有の処理(ソース固有のクエリなど)を抑制する必要がある場合があります。
7.2.2. 古いルーターの存在
IGMPv3ルーターが古いルーターのあるネットワーク上にある場合、Querier選出プロセス(セクション6.1)により、どのルーターがQuerierになるかが決定されます。
- IGMPv1ルーターが存在し、Querierになった場合、すべてのルーター(IGMPv3ルーターを含む)はIGMPv1ルーターとして動作する必要があります。
- IGMPv2ルーターが存在し、Querierになった場合、すべてのルーターはIGMPv2ルーターとして動作する必要があります。
- IGMPv3ルーターがQuerierになった場合、IGMPv3 Queriesを送信します。古いルーターはこれらを無効なIGMPv1/v2クエリとして認識します(または部分的に互換性がある場合は処理します)が、一般的に、IGMPv3パケットを処理できない古いルーターと共存する必要がある場合、IGMPv3ルーターはIGMPv1またはIGMPv2モードで動作するように構成する必要があります。
7.3. Version 1、2、3ホストの混在
同じネットワーク上にIGMPv1、IGMPv2、IGMPv3ホストの混在を持つことが可能です。
- QuerierがIGMPv3の場合、IGMPv3 Queriesを送信します。
- IGMPv3ホストはIGMPv3 Reportsで応答します。
- IGMPv2ホストはIGMPv2 Reportsで応答します。
- IGMPv1ホストはIGMPv1 Reportsで応答します。
IGMPv3ルーターはこれらすべてのレポートタイプを処理する必要があります。IGMPv1またはIGMPv2メンバーを持つグループの場合、古いホストはソースフィルターを指定できないため、ルーターはグループを空のソースリストを持つEXCLUDEモード(つまり、"このグループのすべてを送信してください")として効果的に扱う必要があります。