IPマルチキャスト
IPマルチキャストは、Internet Protocol （IP） のデータグラムを特定の複数受信者に対して1回で送信するための方法である。IPマルチキャストはインターネットやLANにおいて、ストリーミング・アプリケーションによって利用されることがある。IPマルチキャストは、マルチキャストネットワーキングという一般的な概念の、IPに特化したバージョンと言える。マルチキャストはIPv4（クラスD）及びIPv6で特に予約されたマルチキャストアドレスブロックを用いる。IPv6では、IPv4で実装されていたブロードキャストアドレッシングをIPマルチキャストアドレッシングが置き換える。
歴史
IPマルチキャストは1986年に最初に標準化された。以降、その仕様はグループ管理と管理用アドレススコープを含めるために改訂された。
概要
IPマルチキャストはIPネットワーク上で1対多数、および、多数対多数のリアルタイム通信を実現する方法である。 受信者が誰であるか、また受信者の数を事前に知る必要がないため、多数の受信者に宛てた通信に適している。また多数の受信者に転送する必要がある場合でも、源となる送信者（ソース）は1度だけパケットを送信すれば済むため、ネットワークを効率的に利用できる。ネットワーク上のノード（通常はネットワークスイッチとルーター）がパケットの複製を担当し、それぞれの受信者のネットワークへのリンクにメッセージを1度だけ送信する。マルチキャストアドレッシングを利用するもっとも一般的な低レベルプロトコルはUser Datagram Protocol （UDP）である。UDPはコネクション指向でない転送方法であるため信頼性が低く、メッセージが欠けたり順序が入れ替わったりすることがある。例えば Pragmatic General Multicast （PGM）のような、IPマルチキャストの上部に損失検知と再送機能を加えた、信頼性の高いマルチキャストプロトコルが開発されている。
IPマルチキャストの中心的な技術にはIPマルチキャストグループアドレス、マルチキャストディストリビューションツリー、受信者駆動型ツリー形成がある。
IPマルチキャストグループアドレス
送信者（ソース）と受信者は、マルチキャストメッセージの送受信のためにIPマルチキャスト グループアドレスを用いる。送信者は、グループアドレスをデータパケットの宛先IPアドレスとする。受信者は、「当該グループアドレス宛て」に送信されたパケットの受信を希望することを通知するため、グループアドレスを使う。例として、データがグループ 239.1.1.1に関連づけられているとき、送信者はパケットを239.1.1.1宛てに送信する。このパケットは送信者の所属するネットワークのデフォルトゲートウェイルーターに到達し、受信者がマルチキャストグループに加入するまで他のルーターへは到達しない。当該データの受信者はグループ 239.1.1.1に送信されたデータパケットの受信を希望することを近傍のルーターへ所定のプロトコルで通知し、受信者が239.1.1.1のアドレスを有するマルチキャストグループに加入するきっかけを作る。マルチキャストグループへの加入を通知するためのプロトコルは、典型的にはInternet Group Management Protocol （IGMP）が用いられる。
マルチキャストディストリビューションツリー
特定のIPマルチキャストグループに受信者が加入しようとすると、受信者が所属しているネットワークに関連しているルーターが有しているマルチキャストディストリビューションツリーが更新され、受信者がどのマルチキャストグループアドレスの受信を要求しているのかの情報、そして受信者の上流に位置しかつネットワークに面しているルーターが存在していることを示す情報、この2つの情報がルーター内部に追加される。この更新はルーター間で再帰的に行われ、最終的に各々のルーターが管轄するネットワーク内に流れるパケットの宛先がツリーの中に含まれるマルチキャストグループアドレスと一致した時、そのルーターは該当パケットを保持しているツリーにマッチしたネットワーク内へと中継する。この処理をルーターを挟んだネットワーク毎に再帰的に行うことで、送信者のパケットは受信者のもとに届く。ルーター間でツリーを更新するためのプロトコルとして最も広く用いられるのがProtocol Independent Multicast （PIM）である。 例えば、グループ 239.1.1.1 に送信された全てのデータパケットは239.1.1.1に加入した全ての受信者が受信する。PIMの実装にはいくつかのバリエーションがある: スパースモード（SM）, デンスモード（DM）, ソーススペシフィックモード（SSM）と双方向モード（Bidir,スパースデンスモード（SDM））である。これらのうち、PIMスパースモード（PIM-SM）は2006年現在で最も広く用いられている; SSMとBidirはPIM-SMよりも後に開発され、よりシンプルで拡張性が高く、より多く採用されつつある。
受信者駆動型ツリー形成
IPマルチキャストはグループの受信者を知っているアクティブなソースを必要としない。マルチキャストディストリビューションツリーの作成は受信者駆動型であり、受信者に近いネットワークノードが開始する。IPマルチキャストは受信者が多い場合に適している。インターネット活動委員会（現インターネットアーキテクチャ委員会）の1981年から1989年7月まで会長であったデービッド・ダナ・クラークはIPマルチキャストモデルについて「パケットをネットワークの一方の端から入れると、そのパケットをほしい者なら誰にでも届くようネットワークが協力する」と述べた。
IPマルチキャストはネットワークのマルチキャストディストリビューションツリー毎に状態情報を作成する。あるルータが1,000個のマルチキャストツリーに関係している場合、そのルータはマルチキャストルーティングと転送のためのエントリを1,000個持つ。しかしその一方で、マルチキャストルータはインターネット上の他のマルチキャストツリーに到達する方法を知っている必要はなく、下流に受信者のいるマルチキャストツリーについてだけ知っていればよい。このことがマルチキャストアドレスサービスの拡張性を高めている。コアインターネットルータが全てのマルチキャストディストリビューションツリーの状態情報を保持する必要に迫られることは稀である。下流にメンバーのいるツリーの状態情報だけを保持すればよい。これに比べユニキャストルータは、実際にはデフォルトのルートを使うだけだとしても、インターネット上の全てのユニキャストアドレスに到達する方法を知っていなければならない。 このため、ユニキャストルーティングでは経路集約が重要となる。コアルータの中には、インターネットルーティングテーブルを有するため、数万もの経路情報を保持しているものもある。
プロトコルとアプリケーション
IPマルチキャストは、企業、証券取引所、マルチメディアコンテンツの配信ネットワークなどで広く展開されている。企業でよく見られるIPマルチキャストの用途は、遠隔学習やテレビ会議などのIPTVアプリケーションである。
マルチキャストはユニキャストとは異なる伝送モードであるから、マルチキャストのために設計されたプロトコルのみが使用できる。
マルチキャストを利用する既存のアプリケーションプロトコルのほとんどはUser Datagram Protocol （UDP）上で動作する。多くのアプリケーションでは、マルチメディアコンテンツのフレームをマルチキャストで送出するためReal-time Transport Protocol （RTP）を利用する。マルチキャストによる配布をサポートするネットワークでは、帯域予約にResource Reservation Protocol （RSVP）が利用される場合がある。
LANでは、マルチキャストによる送信はIPv4ネットワークではIGMPが、IPv6ネットワークではMLDが制御する。ルーティングドメインの内側では、PIMかMOSPFが利用される。ルーティングドメインをまたがる場合は、MBGPのようなドメイン間マルチキャストルーティングプロトコルを利用する。
ユニキャスト向けのパケットを誤ってマルチキャストアドレスに送信すると多数のエラーを発生しうる。特に、サービス拒否攻撃では、到達するパケットの数を増やすための手段として、ICMPパケットがマルチキャストアドレスに送信されることがある。
ルーティング
マルチキャストグループの受信者メンバーとなりたい（つまり、ある特定のマルチキャストアドレスに紐付いたデータを受信したい）それぞれのホスト―実際はホスト上のそれぞれのアプリケーション―は、マルチキャストグループに加入するためInternet Group Management Protocol （IGMP）を利用しなければならない。同じネットワーク内であっても同様である。
ユニキャストルーティングでは、それぞれのルータは、受信したパケットの宛先をルーティングテーブルと照合し、より宛先に近づくためにどのインタフェースを利用すべきか判断する。このとき、ソースアドレスはルータと無関係である。
しかし、マルチキャストルーティングでは、データストリームの向きを決定するため、ソースアドレス（これは単なるユニキャストアドレスである）が利用される。マルチキャストトラフィックのソースが上流と見なされるのである。ルータはまずどの下流インタフェースがマルチキャストグループの宛先かを決定し、次いで適切なインタフェースに向けてパケットを送信する。Reverse path forwarding（RPF）という語は、マルチキャストルーティングにおいては「宛先に向ける」というよりは「ソースから遠ざかる」ようにパケットをルーティングする、という概念を説明するために用いられる。
レイヤ2転送
ユニキャストでは、特定のレイヤ2MACアドレスをEthernetパケットアドレスに設定すると、EthernetやIEEE 802.3サブネット上の特定の受信者にパケットを配送できる。 ブロードキャストパケットを作成するためには、ブロードキャスト用のMACアドレス（FF:FF:FF:FF:FF:FF）を利用する。このときアドレスの中のブロードキャスト/マルチキャストビットがセットされる。IANAはOUIとしてMACアドレス01:00:5eを保有しているので、マルチキャストパケットはEthernet MACアドレスの01:00:5e:00:00:00 - 01:00:5e:7f:ff:ffの範囲（これは利用可能なアドレス空間のうち23ビット分である）を利用して配送される。第1オクテット（01）にブロードキャスト/マルチキャストビットが含まれている。 28ビットのマルチキャストIPアドレスのうち下位の23ビットは、利用可能なEthernetアドレス空間のうちの23ビットにマップされる。これはパケットの配送に曖昧さがあるということである。 例えば、同一サブネット上にある2台のホストが、それぞれ別のマルチキャストグループに所属しているとする。マルチキャストグループの最初の5ビットだけが異なるとしよう。この場合、それぞれのマルチキャストグループに宛てたEthernetパケットは両方のホストに配送されてしまう。このため、ホスト上のネットワークソフトウェアは不必要なパケットを判別して捨てる必要がある。
IPv6マルチキャストアドレスでは、Ethernet MACアドレスは下位の4オクテットとMACアドレス33:33:00:00:00:00の論理和で求められる。IPv6アドレスFF02:DEAD:BEEF::1:3はEthernet MACアドレス33:33:00:01:00:03にマップされる。
レイヤ2スイッチがマルチキャストアドレスを解決できない場合、スイッチはマルチキャストグループに送信されたデータをLAN上の全てのメンバーにブロードキャストする。この時、ネットワークカードやOSが、自分へのものでないパケットをフィルタリングしなければならない。
IGMPトラフィックをlistenして、どのネットワークシステムがどのマルチキャストグループに所属するかを示す状態テーブル（state table）を維持するスイッチもある。このようなスイッチは、状態テーブルを利用してあるグループに宛てたトラフィックだけを転送できるので、受信するホスト（ポート）を限定できる。状態テーブルを作成するためIGMPスヌーピングが利用される。
レイヤ3機能を有するスイッチには、IGMPクエリーを送出するルータ（IGMPクエリア（querier））として動作できるものもある。ネットワーク上にマルチキャストルータとして動作可能なルータがない場合、IGMPスヌーピングが可能なスイッチを代用してIGMPメッセージを生成させ、マルチキャストトラフィックを受信することができる。
ワイヤレス（802.11）における考慮点
802.11ワイヤレスネットワークでは、マルチキャストトラフィックの取り扱いはDelivery Traffic Indication Message （DTIM）とビーコン間隔の設定により異なる。 あるベーシックサービスセットに属するすべてのステーションがパワーセーブモードに設定されていない場合、マルチキャストパケットは到着し次第すぐに送信される。一方、1以上のステーションがパワーセーブモードに設定されている場合、アクセスポイントは各々のDTIM間隔の後にマルチキャストトラフィックを配送する。このときベーシックレートセットで定義されたレートの中から、対応するレートを一つを選んで送信する。 現在入手できるワイヤレスアクセスポイントやルータの多くでは、間隔は102.4 ミリ秒 （DTIM=1 （ビーコン間隔））で、伝送レートは1 Mbpsか6 Mbpsのいずれかである（動作する周波数帯と保護モードが適用されるか否かによる）。結論として、ワイヤレスネットワークでマルチキャストを実装する際は、パフォーマンスが最適になるように、DTIMとビーコン間隔設定を調整すべきである。
歴史とマイルストーン
スティーブ・ディーリングがスタンフォード大学在学中にIPマルチキャストを開発し、この業績により彼はIEEE Internet Awardを受賞した。
w:Mboneは、サイト間のトンネリングを利用してマルチキャストを可能にするための実証実験であった。Mboneはすでに稼働していないが、広く一般のエンドユーザが利用可能なサービスとして、マルチキャストトラフィックをトンネリングする試みがあるようである。
商業展開
2005年から、BBCはイギリスのインターネットサービスプロバイダ（ISP）に対し、ISPのネットワークでマルチキャストアドレスが利用可能なサービスに適応するよう奨励し、高品質なBBCラジオをマルチキャストで提供している。他にもGCAPやEMAP、Virgin Radioのような商業ラジオネットワークがこれを支援している。
ドイツの公共放送局ARD、ZDF、Franco-GermanネットワークのArteは複数のネットワークでテレビ番組をマルチキャストしている。オーストリアのインターネットサービスプロバイダであるテレコム・オーストリアはDSLの加入者に対してテレビとラジオを受信できるセットトップボックスをマルチキャストアドレスを利用して提供している。ドイツでは、ドイツテレコムのブランドであるT-Homeで類似のサービスを提供している。