■マルチキャストとは
マルチキャストとは主にマルチメディア関係のアプリでよく使われるパケットです。
実務を行なっていてもマルチキャスト案件というのは早々はなく私の場合、5年間実務を行い初めてマルチキャスト案件を対応しました。そのときの自分向けのメモ書きです。
私の場合、マルチキャストは224.x.x.xアドレスが使われる、ダイナミックルーティンで使用されている程度の知識しかありませんでしたので、まず個人的にマルチキャストの特徴だと思ったことを 列挙致します。
- 端末自体に割り振るアドレスではなく端末のアプリ上で指定し配信するアドレス
- UDPでのみ使用する ( TCPは一切使わない )
- マルチキャストを受ける側もそれ用のアプリを用意してアドレス指定しマルチキャストを受け取る
- 端末自身にユニキャストアドレスを設定した上でアプリ上でマルチキャストアドレスを指定する
- ルータ上ではユニキャストアドレスとマルチキャストアドレスの対応付けが行われる
- 主に映像配信などで使われている
- 配信する端末ごとにユニークなマルチキャストアドレス宛に配信する
- 同一セグメント上でマルチキャストをやりとりする場合はルータの設定は必要なし
- ユニキャストのように1対1で配信するものではなく1対Nの複数に対して同時に配信するパケット
■マルチキャストのIPアドレス
IPマルチキャストでは224.0.0.0~239.255.255.255の範囲にあるクラスDアドレスを使用します。マルチキャストIPアドレスは以下に示すように第一オクテットの最上位ビット ( MSB ) が2進数の1110であり、28ビットのグループアドレスがそれに続きます。
IPアドレスの下位28ビットは10進数表記で224.0.0.0~239.255.255.255の範囲にある1つのアドレスであるマルチキャストグループIDを識別します。IANAがIPマルチキャストアドレスの割当を管理しています。クラスDのアドレス範囲はグループアドレス、つまりIPマルチキャストトラフィックの宛先アドレスとしてのみ使われます。マルチキャストデータグラムの送信元アドレスは常にユニキャストの送信元アドレスです。
IPマルチキャストアドレスはいわばグループIDであり、そのグループIDのマルチキャストトラフィックの受信を希望しているIPホストの集合を識別します。以下は様々なIPマルチキャストアドレスを示しています。
説明 | 範囲 |
予約済みリンクローカルアドレス | 224.0.0.0~224.0.0.255 |
グローバルスコープアドレス | 224.0.1.0~238.255.255.255 |
送信元固有マルチキャストアドレス | 232.0.0.0~232.255.255.255 |
GLOPアドレス | 233.0.0.0~233.255.255.255 |
限定スコープアドレス | 239.0.0.0~239.255.255.255 |
・予約済みリンクローカルアドレス
IANAでは224.0.0.0~224.0.0.255のアドレスをローカルネットワークセグメント上でネットワークプロトコルが使用するアドレスとして予約しています。この範囲のアドレスを持つパケットは通常TTL ( Time To Live ) 値が1に設定されているためルータによって転送されることはありません。ネットワークプロトコルはこのアドレスを自動ルータ検出重要なルーティング情報の伝達に使用します。例えばOSPFはIPアドレス224.0.0.5と224.0.0.6を使ってリンクステート情報を交換します。
・グローバルスコープアドレス
企業はこのアドレスを使って組織間およびインターネット経由でデータをマルチキャストします。マルチキャストアプリケーションはこれらのアドレスの一部についてIANAを介して予約し使用します。例えばIANAはIPアドレス224.0.1.1をNTP用として予約しています。
・送信元固有マルチキャストアドレス
この範囲のアドレスはPIMプロトコルの拡張機能であるSSM ( Source-Specific Multicast ) 用に予約されています。SSMでは ( S , G ) と呼ばれる送信元アドレスとグループアドレスの両方に基づいて転送の意思決定をします。Sは送信元アドレスを表し、Gはマルチキャストグループアドレスを表します。この一意の ( S , G ) はSSM内部でチャネルと呼ばれています。SSMでは送信元アドレスを使うことによって個々のチャネルが一意性を持つためアドレス割り当ての問題が解消されます。SSMではホストが受信を希望するデータの送信元とそれに対応するグループ、および ( S , G ) 要求をルータに通知する方法を知っている必要があります。
・GLOPアドレス
これは既に予約済みのAS番号を持っている組織が静的に定義するアドレス用に予約されています。AS番号はアドレス範囲233.0.0.0~233.255.255.255の第二オクテットと第三オクテットに埋め込まれます。例えばAS62010を16進数で表記するとF23Aになります。F2と3Aを2つのオクテットに分離すると各オクテットは10進表記の242と58になります。これらの値に基づいて233.242.58.0/24がグローバルに予約されます。
・限定スコープアドレス
この範囲にあるアドレスは限定スコープアドレスまたは管理スコープアドレスと呼ばれており、ローカルグループまたは組織に限定するよう規定しています。企業、大学、その他の組織は限定スコープアドレスをローカルマルチキャストアプリケーションに利用します。ローカルマルチキャストアプリケーションではインターネットとの境界にあるエッジルータがイントラネットドメインの外にマルチキャストフレームを転送しません。通常はエッジルータでアクセスリストを設定しこのアドレス範囲にあるマルチキャストトラフィックがASまたはユーザ定義ドメインから外部へ出てインターネットへ流れないようにします。
■RPF ( Reverse Path Forwarding )
マルチキャスト対応ルータとマルチレイヤスイッチはIPマルチキャストトラフィックが利用するネットワーク上のパスを制御する配送ツリーを作成します。RPFは入力マルチキャストフレームを転送するか廃棄するかを決めるために入力インターフェイスをチェックするメカニズムです。RPFはマルチキャスト転送で重要な役割を果たす概念です。RPFチェックを行うことでマルチキャスト用配送ツリー上でループが発生しないことが保証されます。RPFを利用すればルータは配送ツリーにしたがってマルチキャストトラフィックを転送出来ます。
ユニキャストルーティングでは1つの送信元から1つの宛先ホストへ向かうパスに沿ってトラフィックがネットワーク上でルーティングされます。ユニキャストパケットを転送するルータはデフォルトで送信元アドレスを考慮しません。ルータは宛先アドレスと宛先経トラフィックを転送する方法だけを考えます。
マルチキャスト転送では1つのマルチキャストグループアドレスによって定義されるホストのグループに送信元がトラフィックを送信します。マルチキャストルータはマルチキャストパケットを受信するとどちらが上流 ( 送信元に向かう方向 ) で、どちらが下流 ( 受信ホストに向かう方向 ) かを判断します。ルータはRPFプロセスで上流にあると判断されたインターフェイスでパケットを受信した場合にのみマルチキャストパケットを転送します。宛先アドレスをチェックするのではなく送信元をチェックする仕組みで文字通りReverseなのです。
送信元ツリー上を流れるトラフィックに対しては以下のようにRPFチェックを実行します。
・ルータはユニキャストルーティングテーブルで送信元アドレスを検索しパケットが着信したインターフェイスが送信元へ戻るリバース経路にあるかどうかを判断します。
・パケットが着信したインターフェイスが送信元に戻る経路上にある場合はRPFチェックが成功し出力インターフェイスから転送します。
・RPFチェックが失敗した場合、ルータはパケットを廃棄しその廃棄をRPFの失敗による廃棄として記録します。
以下はRPFチェックが失敗した場合の例です。送信元IPアドレスがユニキャストルーティングテーブル上に存在しないためマルチキャストパケットは破棄されます。
以下はRPFチェックが成功した場合の例です。送信元IPアドレスがユニキャストルーティングテーブル上に存在するためマルチキャストパケットは転送されます。
■マルチキャスト転送ツリー
マルチキャスト対応ルータは全ての受信ホストにトラフィックを配送するためにIPマルチキャストトラフィックが利用するネットワーク上のパスを制御するマルチキャスト配送ツリーを作成します。配送ツリーには以下の2つのタイプがあります。
・送信元ツリー
・共有ツリー
■送信元ツリー
マルチキャスト配送ツリーの最も単純な形式はルートとなる送信元とそこから受信ホストに至るブランチがネットワーク上でツリーを形成する送信元ツリーです。このツリーはネットワーク上の最短パスを利用するためSPT ( Shortest Path Tree ) とも呼ばれます。以下の図では送信元であるホストAをルートとし2つの受信ホストBとCに接続されたグループ224.1.1.1のSPTを表しています。
上の図をSPTを ( S , G ) 形式で表記すると ( 192.168.1.1 , 224.1.1.1 ) になります。 ( S , G ) 表記は各グループにパケットを送信する送信元毎に作成されます。。例えばホストBもグループ224.1.1.1にトラフィックを送信しておりホストAとホストCがそのトラフィックの受信ホストである場合は ( 192.168.2.2 , 224.1.1.1 ) と表記される別の ( S , G ) SPTが存在します。
■共有ツリー
送信元がルートとなる送信元ツリーと異なり共有ツリーではネットワーク上の選択された場所に1つの共通のルートが配置されます。この共有ルートはRP ( Rendezvous Point , ランデブーポイント ) と呼ばれています。下記の図はルータ1をルートとするグループ224.1.1.1の共有単方向ツリーを示しています。送信元トラフィックは送信元ツリー上のRPに向かって送信されます。その後、トラフィックは共有ツリーに沿ってRPから全ての受信ホストに配送されます。但し、受信ホストが送信元とRPの間にある場合はマルチキャストトラフィックが受信ホストに直接配送されます。
マルチキャストグループの全ての送信元が共通の共有ツリーを使用するためツリーはワイルドカードを表す ( * , G ) という形式で表記されます。この表記の「*」は全ての送信元を表し「G」はマルチキャストグループを表します。したがって下の図の共有ツリーは ( * , 224.1.1.1 ) と表記されます。
■送信元ツリーと共有ツリーの比較
送信元ツリーの利点は送信元と受信ホストを結ぶ最適パスが形成されることです。この利点があるためマルチキャストトラフィックを転送するときのネットワーク遅延が最小限に抑えられます。但し、ルータが各送信元のパス情報を保持するため最適化には余分なオーバーヘッドが必要です。何千ものグループを抱えるネットワークではこれがすぐにリソースを圧迫しますので設計者はマルチキャストルーティングテーブルのサイズが大きくなったときのメモリ消費量などを考慮にいれる必要があります。
共有ツリーの利点は各ルータが保持する必要のある情報が最小限で済むことです。この利点があるため共有ツリーでしか使わないネットワークでは全体のメモリ要件と複雑さが軽減されます。共有ツリーの欠点は環境によっては送信元と受信ホストを結ぶパスが最適でなくなりパケット配送の遅延が増大する可能性があることです。共有ツリーでは一部のリンクが過剰に使用され一部のリンクが全く使用されないといったことがありえるので設計者はRPの配置を慎重に検討スべきです。