概要
マルチキャストとは,ひとつの宛先アドレスを指定するだけで,「マルチキャスト・グループ」 とよばれるグループに属する複数の相手すべてと同時に通信をおこなう機構である. IPv4 においてはマルチキャスト・グループは IGMP (Internet Group Management Protocol) [RFC 2236] という専用のプロトコルによって管理される. それに対して IPv6 においては,ICMPv6 (Internet Control Message Protocol for IPv6) という汎用的なプロトコルによって管理される. ICMPv6 のこの機能をマルチキャスト・リスナー発見 (MLD, Multicast Listener Discovery) という.
マルチキャストにおいては,通信経路の分岐点においてルータがひとつのパケットを複数の経路にコピーすることによって,そのパケットを複数のコンピュータに効率的にとどけることができる. IPv4 においてはマルチキャストは付加的な機構だったが,IPv6 においてはネットワークに接続する際にも使用される基本的な概念となっている.
メンバー管理
MLD を使用することによってつぎのようなグループ・メンバー管理が可能になる.
- グループ・メンバシップは動的であり,ホストはいつでもグループに参加したり,グループから離れたりすることができる.
- マルチキャスト・グループへの参加は,グループ・メンバシップのメッセージの送信によって行われる. IPv6 においてはマルチキャスト・リスナ探索 (MLD) メッセージは,リンクまたはサブネットと呼ばれるネットワーク・セグメント上のグループ・メンバシップを識別するために使われる.
- グループの大きさに制限はなく,メンバは複数のネットワーク・セグメントにまたがって存在することができる (ネットワーク間のルータがマルチキャスト・トラフィックとグループ・メンバシップ情報の伝達をサポートしている場合).
- 対応するグループに所属していないホストでも,グループのアドレスにトラフィックを送信できる.
マルチキャスト・リスナ発見とその版
マルチキャスト・リスナ発見 (MLD) はネットワーク・セグメント上でマルチキャストをサポートする IPv6 ルータとマルチキャスト・グループのメンバの間でメンバシップの状態情報を交換するために使用される. ホストがマルチキャストグループのメンバであるかどうかはメンバである個別のホストによって報告され,メンバシップの状態はマルチキャスト・ルータによって定期的にポーリングされる. MLD の最初の版 (v1) は、RFC 2710 (Multicast Listener Discovery (MLD) for IPv6) において定義されている. 2004 年には MLD バージョン 2 (MLDv2) が定義された [RFC 3810]. MLDv2 においては Source Specific Multicast (SSM) に対応するように MLDv1 が拡張されているが,MLDv1 と互換性がある.
MLDv1
次のリストは MLDv1 におけるメッセージ・タイプの一覧である.
- マルチキャスト・リスナ照会 (Multicast Listener Query)
- マルチキャスト・ルータがグループ・メンバに対してネットワーク・セグメントをポーリングするために送信する.
質問は
- 一般 (すべてのグループにグループ・メンバシップを要求する場合)
- 固有 (特定のグループにグループ・メンバシップを要求する場合)
- マルチキャスト・リスナ報告 (Multicast Listener Report)
- ホストがマルチキャスト・グループに参加したときにはホストが送信し,MLD マルチキャスト・リスナ照会への応答にはルータが送信する.
- マルチキャスト・リスナ終了 (Multicast Listener Done)
- ネットワーク・セグメント上でホスト・グループの最後のメンバとかんがえられるホストがそのグループを離れる場合に送信する.
MLD メッセージは ICMPv6 メッセージとして送信される.
MLDv2
MLDv2 は IPv4 におけるマルチキャスト・メンバー管理プロトコルである IGMPv3 [RFC 3376] をもとにして規定された [RFC 3810]. MLDv2 には,特定のマルチキャスト・アドレスにあてたパケットのなかでも特定の送信元アドレスから (または特定の送信元アドレスをのぞくアドレスから) 送信されたパケットだけを受信することを指定することができる情報源フィルタリング (source filtering) という機能が追加されている. ソース・フィルタリングにもとづくマルチキャストは情報源特定マルチキャスト (source specific multicast) とよばれる.
MLDv2 にはつぎの 2 種類 (type) のメッセージがある.
- 130: マルチキャスト・リスナー照会 (Multicast Listener Query)
- 143: マルチキャスト・リスナー報告第 2 版 (Version 2 Multicast Listener Report [RFC 3810])
MLDv1 との互換性のため,MLDv2 においては従来 (version 1) のマルチキャスト・リスナー報告 (type 131) およびマルチキャスト・リスナー終了 (type 132) もサポートされている.
MLDv2 の照会メッセージおよび終了メッセージには,MLD ヘッダを拡張して送信元数,送信元アドレスなどの情報が追加されている. また,照会メッセージを受信したノードは現状レコードをふくむ.
送信元リストに変更があれば,ノードは変更があったインタフェースから送信元リスト変更レコード (Source List Change Record) をふくんだ報告を送信する.
マルチキャスト・リスナー報告第 2 版においては,パケットを宛先 IP アドレス FF02::16 にあてて送信する. すべての MLDv2 対応のマルチキャスト・ルータはこのアドレスでパケット受信を待機する.
参考文献
- [Hag 07] Silvia Hagen, “IPv6Essentials, Second Edition”, O'Reilly, 2007. (邦訳: 市原 英也 監訳, “IPv6 エッセンシャルズ 第 2 版”, オライリー・ジャパン, 2007).
- [Mic 05] “マルチキャスト リスナ探索 (MLD)”, Microsoft, 2005.