ネットワークインタフェース

IPv6 マルチキャストデータグラムの送信

マルチキャストデータグラムを送信するには、sendto(3SOCKET) 呼び出しで宛先アドレスとして ff00::0/8 の範囲の IP マルチキャストアドレスを指定します。

デフォルトでは、IP マルチキャストデータグラムはホップ制限 1 で送信されます。この場合、単一のサブネットワーク外にデータグラムが転送されることはありません。ソケットオプション IPV6_MULTICAST_HOPS を指定すると、後続のマルチキャストデータグラムのホップ制限を 0 から 255 の範囲の任意の値に設定してマルチキャストの配信範囲を制御できます。

    uint_l;
    setsockopt(sock, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &hops,sizeof(hops))

ホップ制限 0 のマルチキャストデータグラムはどのサブネットにも伝送されませんが、送信ホストが宛先グループに属しており、送信側ソケットでマルチキャストループバックが無効になっていない場合は、ローカルに配信できます (次を参照)。最初の配信先となるサブネットに 1 つ以上のマルチキャストルーターが接続されている場合は、1 を超えるホップ制限を持つデータグラムを複数のサブネットに配信できます。IPv4 マルチキャストアドレスと異なり、IPv6 マルチキャストアドレスには、アドレスの最初の部分にコード化された明示的な配信範囲情報が含まれます。定義されている配信範囲を次に示します (X は未指定)。

ffX1::0/16

ノード - ローカルな配信範囲 - 同じノードに制限される

ffX2::0/16

リンク - ローカルな配信範囲

ffX5::0/16

サイト - ローカルな配信範囲

ffX8::0/16

組織 - ローカルな配信範囲

ffXe::0/16

全世界的な配信範囲

アプリケーションは、マルチキャストアドレスの配信範囲とは個別に、異なるホップ制限値を使用できます。たとえば、アプリケーションは、ホップ制限シーケンス 0、1、2、4、8、16、32 を使用し、ホップ制限 0 から開始して応答が受信されるまでより大きなホップ制限のマルチキャスト照会を送信することにより、ネットワークリソースの「拡張リング検索」を実行する場合があります。

ホストにマルチキャスト機能を持つ複数のインタフェースがある場合でも、各マルチキャスト伝送は単一のネットワークインタフェースから送信されます (ホストがマルチキャストルーターでもあり、ホップ制限 が 1 を超える場合には、発信インタフェース以外のインタフェースにマルチキャストを転送できる)。一定のソケットからの後続の伝送については、ソケットオプションを使用してデフォルトを無効にできます。

    uint_t ifindex;

    ifindex = if_nametoindex )"hme3");
    setsockopt(sock, IPPROTO_IPV6, IPV6_MULTICAST_IF, &ifindex, sizeof(ifindex))
ifindex は、希望する発信インタフェースのインタフェースインデックスです。デフォルトインタフェースに戻すには、値 0 を指定します。

(発信インタフェース上で) 送信ホスト自体が属しているグループにマルチキャストデータグラムが送信されると、ローカル配信の IP 層によってデータグラムのコピーがデフォルトでループバックされます。後続のデータグラムがループバックされるかどうかにかかわらず、別のソケットオプションが送信側に明示的な制御を与えます。

    uint_t loop;
    setsockopt(sock, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &loop, sizeof(loop))  
loop の値は、ループバックを無効にする場合は 0、ループバックを有効にする場合は 1 です。単一のホストにインスタンスを 1 つしか持たないアプリケーション (ルーターやメールデーモンなど) では、このオプションを使用するとアプリケーション自体の伝送を受信するオーバーヘッドが排除されるため、パフォーマンスが向上します。このオプションは、単一のホストに複数のインスタンスを持つアプリケーション (会議システムプログラムなど) や送信側が宛先グループに属さないアプリケーション (時間照会プログラムなど) に通常は使用しないでください。

送信ホストが別のインタフェースの宛先グループに属している場合、1 以上のホップ制限で送信されたマルチキャストデータグラムは、他方のインタフェース上の送信ホストに配信できます。このような配信には、ループバック制御オプションは何の効果もありません。