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

4.1. IP モジュールインタフェースの拡張

上位層プロトコルに対する IP モジュールインタフェースは、プロトコルが特定のチャネルに送信されたすべてのデータグラムの受信を要求できるように拡張される。

Subscribe ( socket, source-address, group-address, interface )

Unsubscribe ( socket, source-address, group-address, interface )

ここで:

「socket」(ソケット) は第 2 節で定義されているとおりである。

また、[IGMPv3] の記述を引用すると:

「interface」(インタフェース) はネットワークインタフェースのローカル識別子であり、(source-address,group-address) ペアによって識別されるチャネルの受信を有効化または無効化すべきネットワークインタフェースを示す。特別な値を用いて「デフォルト」インタフェースを示すことができる。複数のインタフェースで同一のチャネルを受信したい場合は、インタフェースごとに Subscribe を 1 回ずつ呼び出す必要がある。

上記のインタフェースは、厳密には抽象的な機能インタフェースである ― その機能は実装依存の方法で提供される。たとえば、[MSFAPI] マルチキャストソースフィルタリングアプリケーションプログラミングインタフェースをサポートするホスト上では、Subscribe および Unsubscribe インタフェースはその API によってサポートされ得る。ホストが SSM アドレス範囲を認識するように設定されている場合 (設定機構が手動であれプロトコルによるものであれ)、アプリケーションが SSM 宛先アドレスに送信されるマルチキャストの受信をソース非特定の要求として開始したとき、ホストオペレーティングシステムはそのアプリケーションにエラーを返すべきである (SHOULD)。

これらの IP モジュールインタフェース (たとえば ASM のみをサポートするホスト) およびその下位プロトコルをサポートしないホストは、SSM チャネル上で送信されるトラフィックを確実に受信できるとは限らない。第 5.2 節で後述するように、ルーターは ASM ジョイン要求に応答して SSM 転送状態を設定したりデータグラムを転送したりはしない。

IP データグラム受信用インタフェースの広く普及した実装 (たとえば BSD Unix の recvfrom() システムコール) では、受信者がデータグラムの送信先アドレスを特定できない。そのような実装を持つホスト上では、複数のチャネルを購読しているソケットがデータグラムを受信する場合、そのデータグラムの宛先アドレスを推論することはできない。ホストオペレーティングシステムは、ホストがデータグラムの送信時に使用された送信元アドレスおよび宛先アドレスを特定できる方法を提供すべきである (SHOULD)。(例として、Linux オペレーティングシステムは recvmsg() システムコールの応答においてパケットの宛先アドレスを提供している。) この能力が备わるまでの間、アプリケーションは、データグラムが送信されたチャネルを識別するために上位層の機構を使用せざるを得ない場合がある。