IPマルチキャスト

**IPマルチキャスト**は、Internet Protocol （IP） のデータグラムを特定の複数受信者に対して1回で送信するための方法である。IPマルチキャストはインターネットやLANにおいて、ストリーミング・アプリケーションによって利用されることがある。IPマルチキャストは、マルチキャストネットワーキングという一般的な概念の、IPに特化したバージョンと言える。マルチキャストはIPv4（クラスD）及びIPv6で特に予約されたマルチキャストアドレスブロックを用いる。IPv6では、IPv4で実装されていたブロードキャストアドレッシングをIPマルチキャストアドレッシングが置き換える。

## 歴史
IPマルチキャストは1986年に最初に標準化された。以降、その仕様はグループ管理と管理用アドレススコープを含めるために改訂された。

1992年にインターネットのごく一部のルータで世界初のマルチキャストバックボーンであるMBoneが機能し始め、暫くはマルチキャスト非対応ルータを越えてMBoneルータ同士をつなぐためのトンネリング技術を併用しながら運用された。その後は世界的にマルチキャスト対応ルータが普及したことでMBoneは役割を譲って廃止された。

21世紀、マルチキャストは様々なライブ配信やリモート会議で活用されている。

## 概要
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アドレッシングには4つの形態があり、それぞれに固有の特性がある。

* ユニキャスト: IPアドレスの最も一般的なもので、IPv4、IPv6ともに利用できる。ユニキャストでは送信者1に対し受信者1を前提としており、送信と受信の両方に用いることができる。通常は、ユニキャストアドレスは単一のデバイスまたはホストに関連づけられるが、完全に1対1対応となるわけではない。例えば、PC1台が固有のユニキャストアドレスを複数持ち、それぞれ固有の用途に用いることができる。同一のデータをn個のユニキャストアドレスに送信した場合、送信者はそれぞれの受信者に対して1度ずつ、n回データを送信しなければならない。

* ブロードキャスト: IPv4では、送信者は送信可能なすべての宛先に対して1度だけデータを送信し（全てのホストに「放送（ブロードキャスト）」し）、全ての受信者が送信されたデータのコピーを受け取ることが可能である。IPv4プロトコルではアドレス255.255.255.255がローカルブロードキャストに用いられる。これに加えて、ダイレクト（制限）ブロードキャストを行うこともできる。この場合、アドレスを作成するには、アドレスのネットワーク部はそのままでホスト部のビットを全て1にする。例えば192.0.2.0/24ネットワークに所属するデバイスにダイレクトブロードキャストを行う場合の宛先アドレスは192.0.2.255である。IPv6ではブロードキャストアドレスは実装されず、代わりに特に定義された「全ノードマルチキャストアドレス」へのマルチキャストが使われる。

* マルチキャスト: マルチキャストアドレスは、データの受信を希望する受信者のグループに関連づけられる。IPv4では、アドレス224.0.0.0から239.255.255.255 （クラスフルネットワークにおけるClass Dアドレス）がマルチキャストアドレスとして指定されている。 IPv6では、ff00::/8で始まるアドレスブロックをマルチキャストアプリケーションのために予約している。どの場合でも、送信者が単一のデータグラムを、送信者のユニキャストアドレスからマルチキャストグループアドレスに宛てて送信し、経由するルータがデータグラムの複製と、それに対応するマルチキャストグループに所属する全ての受信者への送信を担当する。

* エニーキャスト: エニーキャストは、1対多のルーティングトポロジである点がブロードキャストやマルチキャストと似ている。しかし、データストリームが全ての受信者に送信されるわけではなく、ルータがネットワークで「最も近い」と判断した相手にのみ送信される点が異なる。 エニーキャストはグローバルな負荷分散を図る上で便利であり、DNSの通信で広く使われる。

## プロトコルとアプリケーション
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パケットがマルチキャストアドレスに送信されることがある。

### IPマルチキャストプロトコル
* Internet Group Management Protocol （IGMP）
* Protocol Independent Multicast （PIM）
* Distance Vector Multicast Routing Protocol （DVMRP）
* マルチキャストOSPF （MOSPF）
* マルチキャストBGP （MBGP）
* Multicast Source Discovery Protocol （MSDP）
* Multicast Listener Discovery （MLD）
* GARP Multicast Registration Protocol （GMRP）
* マルチキャストDNS （mDNS）

## ルーティング
マルチキャストグループの受信者メンバーとなりたい（つまり、ある特定のマルチキャストアドレスに紐付いたデータを受信したい）それぞれのホスト―実際はホスト上のそれぞれのアプリケーション―は、マルチキャストグループに加入するため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機能を有するスイッチ（レイヤ3スイッチ）には、IGMPクエリーを送出するルータ（IGMPクエリア（querier））として動作できるものもある。ネットワーク上にマルチキャストルータとして動作可能なルータがない場合、IGMPスヌーピングが可能なスイッチを代用してIGMPメッセージを生成させ、マルチキャストトラフィックを受信することができる。

## 信頼性マルチキャスト
マルチキャストはその性質上、コネクション指向ではない。このため、TCPのように欠けたパケットを再送可能なプロトコルを使用するのは適切でない。オーディオ/ビデオストリーミングのようなアプリケーションで、たまにパケットをドロップしたとしても問題はないのである。しかし、重要なデータを配布する場合、再送要求のためのメカニズムが必要となってくる。

シスコシステムズが提案した再送スキームにPGMがある（もとはPretty Good Multicastingの略とされたが、商標上の理由でPragmatic General Multicastに改められた）。PGMはで文書化されている。このスキームでは、マルチキャストパケットはシーケンス番号を有する。パケットが欠けた場合、受信者は欠けたパケットを再びマルチキャストするよう要求できる。同一マルチキャストグループに所属する他のメンバーは、自分に必要なければ再送データを無視する。拡張バージョンであるPGM-CCは最も低い帯域幅の受信者に合わせてグループ全体の帯域を下げ、IPマルチキャストをより「TCPフレンドリ」にしようと試みている。

Internet Engineering Task Force （IETF）により文書化されたその他のスキームは以下の2つである:
*NACK-Oriented Reliable Multicast （NORM） : とで文書化されている。standard-track（標準化過程）のプロトコルである。
*File Delivery over Unidirectional Transport （FLUTE） : に文書化されている。experimental（実験）段階のプロトコルである。

これらプロトコルの実装例はプロプライエタリ、オープンソースそれぞれに存在する。Scalable Reliable Multicastのようなプロトコルも存在するが「何をもって『信頼性（がある）』とするのか」といった基本概念、エラー検知の手段、エラー回復に用いるメカニズム、エラー回復の拡張性に違いがある。
ACMのSIGCOMM Multicast Workshop（1996年8月27日）は信頼性マルチキャストプロトコルのリストを掲載し、この問題についていくつもの解決法を文書化した。

Internet Protocol Multicast Standards Initiative （IPMSI）のような独立グループは、提案中のSecure Multicast for Advanced Repeating of Television （SMART）のような真に拡張性に優れたセキュアな信頼性IPマルチキャストプロトコルが不足しており、このことがドメイン間ルーティングへのIPマルチキャストの採用を妨げている、と主張している。

マスメディアが、スポーツイベント（例えばスーパーボウルのような）やニュース速報を公共のインターネットに配信できないのは、AES水準のセキュリティと信頼性を有する拡張の容易なシステムが不足していることが原因である。

前述のPGMやSMARTのような信頼性IPマルチキャストプロトコルは未だ実験（experimental）段階である。NORMは標準化過程（standards-track）に昇格した（のstandards-track revisionはであり、のstandards-track revisionはである）。

## ワイヤレス（802.11）における考慮点
802.11ワイヤレスネットワークでは、マルチキャストトラフィックの取り扱いはDelivery Traffic Indication Message （DTIM）とビーコン間隔の設定により異なる。あるベーシックサービスセットに属するすべてのステーションがパワーセーブモードに設定されて**いない**場合、マルチキャストパケットは到着し次第すぐに送信される。一方、1以上のステーションがパワーセーブモードに設定されている場合、アクセスポイントは各々のDTIM間隔の後にマルチキャストトラフィックを配送する。このときベーシックレートセットで定義されたレートの中から、対応するレートを一つを選んで送信する。現在入手できるワイヤレスアクセスポイントやルータの多くでは、間隔は102.4&nbsp;ミリ秒 （DTIM=1 （ビーコン間隔））で、伝送レートは1&nbsp;Mbpsか6&nbsp;Mbpsのいずれかである（動作する周波数帯と保護モードが適用されるか否かによる）。結論として、ワイヤレスネットワークでマルチキャストを実装する際は、パフォーマンスが最適になるように、DTIMとビーコン間隔設定を調整すべきである。

## 利用例

有料テレビ放送事業者や学生を収容する大規模な施設を有する教育機関では、ハイスピードな映像などを片方向メディアストリーミングで多数の受信者に配信するためにIPマルチキャストを展開している例、音声とビデオ会議のために利用する例がある。しかしながらこれらの利用例は普及しているとは言いがたく、要求に応えるだけのネットワークの容量を有する教育研究機関だけに限られていると言ってよい。技術カンファレンスやミーティングでIPマルチキャストにより伝送されるものもある。つい最近まで、IETFミーティングのセッションはマルチキャストを用いて配信されていた。

この他に、学内や商業ネットワークにおいて、マルチキャストをファイル配布に用いる例がある。特にオペレーティングシステムのイメージファイルや更新プログラムをリモートホストに配信するために利用される。ユニキャストブートイメージと比較すると、マルチキャストブートイメージは占有するネットワーク帯域が有意に小さいという優れた利点がある。

金融業界におけるIPマルチキャストの利用例として、株価ティッカーのようなアプリケーション、常時接続通話（hoot-n-holler）システムなどがある。

このようにIPマルチキャストはこれらの領域で一定の成功を収めたが、平均的なエンドユーザが利用できるサービスとして広く展開されているとは言えない。広く展開されない大きな理由は少なくとも2つあり、互いに関連している。

特に双方向通信においては、マルチキャストトラフィックの転送のために、高度に複雑化されたプロトコルが必要である。また、広くマルチキャストネットワークを展開するための運用上の懸念はいくつもある。例えば広く展開された実装が複雑であること、そして実装の複雑化に伴うサービス拒否攻撃などのリスクである。 （*IP Multicast Applications: Challenges & Solutions*）はマルチキャスト展開における問題の概観を示している。

## 歴史とマイルストーン
スティーブ・ディーリングがスタンフォード大学在学中にIPマルチキャストを開発し、この業績により彼はIEEE Internet Awardを受賞した。

:w:Mboneは、サイト間のトンネリングを利用してマルチキャストを可能にするための実証実験であった。Mboneはすでに稼働していないが、広く一般のエンドユーザが利用可能なサービスとして、マルチキャストトラフィックをトンネリングする試みがあるようである。

## 商業展開
2005年から、BBCはイギリスのインターネットサービスプロバイダ（ISP）に対し、ISPのネットワークでマルチキャストアドレスが利用可能なサービスに適応するよう奨励し、高品質なBBCラジオをマルチキャストで提供している。他にもGCAPやEMAP、Virgin Radioのような商業ラジオネットワークがこれを支援している。

ドイツの公共放送局ARD、ZDF、フランス＝ドイツ・ネットワークのアルテは複数のネットワークでテレビ番組をマルチキャストしている。オーストリアのインターネット・サービスプロバイダであるテレコム・オーストリアはDSLの加入者に対してテレビとラジオを受信できるセットトップボックスをマルチキャストアドレスを利用して提供している。ドイツでは、ドイツテレコムのブランドであるT-Homeで類似のサービスを提供している。

## IPマルチキャストソフトウェア
* Media Tools Repository - MBoneのためのツール群。
* VideoLAN - マルチキャストビデオストリーミング用のアプリケーションで、自由ソフトウェア。
* Xorp -  マルチキャスト（IGMP, PIM）をサポートしたルーティングソフトウェア（自由ソフトウェア）。
* Smcroute - Linuxカーネル上でマルチキャストルートを構成するための簡易ツール。
* SSM-ping - マルチキャスト接続をテストするためのツール。
* IGMPv3 FreeBSDにおけるIGMPv3のホスト実装。
* [ftp://parcftp.xerox.com/pub/net-research/ipmulti/ XeroxのIPマルチキャストソフトウェア]
* Java Reliable Multicast Service
* PIM implementation - PIMプロトコルの実装の1つであったが、現在では古くなっている。
* qpimd - PIM Daemon for Quagga - Quagga Routing Suite用PIMモジュール。
* GateD - マルチキャストを含むルーティングプロトコルのUNIXにおける実装。
* PIM-DM code for GateD
* NORM - アメリカ海軍研究所のNack-Oriented Reliable Multicast。C++のオープンソース実装も含まれている。
* ecmh （Easy Cast du Multi Hub） - IPv6マルチキャストデーモン。 PIMを使わずにIPv6マルチキャストを利用できる。
* MRD6 - IPv6マルチキャストルーティングデーモン。
* UFTP - マルチキャストを利用したFTPで、暗号化UDPをベースにしている。
* GStreamer - マルチキャストビデオストリーミングをサポートするマルチメディアフレームワーク。自由ソフトウェア。

## 注釈


## 脚注

## 参考文献

* シスコシステムズ社によるIPマルチキャスト テクノロジーの概要
* IP マルチキャスト技術 Internet Week 99における藤井直人氏の講演レジュメ（PDF文書）。
* マルチキャスト実践講座～IP放送時代の必携テクニック～ Internet Week 2006における藤井直人氏の講演レジュメ。

## 関連項目
* Dense multicast
* Sparse multicast
* Source-specific multicast
* Core-based trees
* IGMP snooping
* Multicast address
* Multicast

## 外部リンク
以下のリンク先はすべて英語による。
* Multicast over TCP/IP HOWTO Linuxカーネルにおけるマルチキャストを解説している。最近のソフトウェアについての解説がない。
* IETFの信頼性マルチキャストトランスポート(RMT)ワーキンググループ
* IETFのマルチキャスト・エニーキャストワーキンググループ
* IETFのProtocol Independent Multicastワーキンググループ
* IETFのSource-Specific Multicastワーキンググループ
* IETFマルチキャストセキュリティワーキンググループ
* Sockets.comによるIPマルチキャストの解説
* IP-イーサネットマルチキャスト入門
* シスコシステムズ社による解説動画
* Overview of Reliable Multicast Protocols（ACM SIGCOMMマルチキャストワークショップ、1996年8月27日開催）
* A Reliable Multicast Framework for Light-weight Sessions and Application Level Framing（スケーラブルな信頼性マルチキャストを定義している）
* 
* An Analysis of Multicast Methods