マルチキャスト・リスナー発見

 IPv6では、ブロードキャストが廃止された代わりに全ノードが、マルチキャスト機能を持たなければなりません。このため、IPv4ではオプション実装だったマルチキャスト機能が必須となり、そのためのプロトコルIGMP(Internet Group Management Protocol)がICMPv6に取り込まれました。

 このプロトコルは、ネットワーク内にマルチキャスト・パケットを受信するノード(リスナー)が存在するかどうかをルーターが調べるために使います。マルチキャスト・パケットは複数ノードが受信するため、ネットワーク内にリスナーがいくつ存在しているかは問題ではなく、1つ以上存在しているかどうかが問題となります。

 問い合わせにはマルチキャスト・リスナー問い合わせメッセージを、応答にはマルチキャスト・リスナー応答メッセージを使います(図8)。

図8 マルチキャスト・パケットを受信するノードの有無を、ルーターが調べるために使う。リンク内の同種のマルチキャスト・アドレスに対応したホストのうち1つだけが応答し、他のホストは、応答を受信したら、自分では応答しないようにする。
図8 マルチキャスト・パケットを受信するノードの有無を、ルーターが調べるために使う。リンク内の同種のマルチキャスト・アドレスに対応したホストのうち1つだけが応答し、他のホストは、応答を受信したら、自分では応答しないようにする。
[画像のクリックで拡大表示]

 ルーターは、ネットワーク内のノードに対し、リスナーかどうか(マルチキャスト・アドレスあてのパケットを受信するかどうか)を問い合わせ、ノードは応答を返します。ただし複数ノードがリスナーでも、1つのノードが応答したら他のノードは応答を取りやめます。

 ルーターは、リスナーの有無を定期的にチェックします。ノード側がマルチキャスト・アドレスの受信を中止する際には、リンク内の全ルーターあて(FF02::2)のマルチキャスト・アドレスを使います。

 もう1つの問い合わせとして、リンク内の全ノードに対し、何らかのマルチキャスト・アドレスに対応しているかどうかを調べることもできます。これを「一般問い合わせ」と呼び、特定のマルチキャスト・アドレスを対象とする「マルチキャスト・アドレス問い合わせ」と区別します。

 あて先には、リンク内の全ノードあてマルチキャスト・アドレス(FF02::1)を使い、問い合わせメッセージ内のマルチキャスト・アドレスをゼロで埋めます。リンク内のノードが受信しているマルチキャスト・アドレスすべてについて応答を受け取れます。