マルチキャストアドレスの基礎

マルチキャストアドレスの基礎

マルチキャストの概要

マルチキャストは1対多の通信を行うための方式です.マルチキャストでは特定のグループへ向けてのみパケットを届けるため通信を効率化できます.通常の通信は送信と受信が1対1のユニキャストと呼ばれる方式で行われます.そのほか,ARPリクエストなどでネットワーク内の全ての端末へ向けて転送するブロードキャストがあります.

クライアントPCの動作 

通常,クライアントPCは受け取るイーサネットフレームが以下のMACアドレスである場合,受信処理を行います.

  • NICに割り当てられたMACアドレス
  • ブロードキャストMACアドレス(FF:FF:FF:FF:FF:FF)

加えて,マルチキャスト通信を行うアプリケーションをインストールした場合には,そのアプリケーションが利用するマルチキャストグループに対応したマルチキャストアドレスが自動的に割り当てられます.

  • 参加したマルチキャストグループに対応するMACアドレス(01:00:5E:XX:XX:XX)

マルチキャストグループに参加していないクライアントPCにマルチキャストフレームが到達しても,クライアントPCでは受信処理をしません.そのため,適切なノードのみがマルチキャストトラフィックを受信できます.あるクライアントが複数のマルチキャストグループに属することも可能で,割り当てられたマルチキャストIPアドレスの分だけ,マルチキャストMACアドレスが割り当てられます.

L3マルチキャストアドレス 

マルチキャストアドレスを利用する際に使われる宛先アドレスにはクラスDと呼ばれるアドレス帯を利用します.先頭のアドレスが”1110″となっており,224.0.0.0~235.255.255.255のアドレスが範囲になります.この範囲のアドレスを利用してデータを送信すると,中継するネットワーク機器はマルチキャスト通信とみなします.マルチキャストのアドレスにはサブネットの概念はなく,全てがユニキャストアドレスと同じくホストアドレスとして扱われます.以下はマルチキャストとして予約済みのアドレス一覧です.

Addressdescriotion
224.0.0.0/24予約済みリンクローカルアドレス
224.0.1.0~238.255.255.255グローバルスコープアドレス
232.0.0.0/8SSMアドレス
233.0.0.0/8GLOPアドレス
239.0.0.0/8限定スコープアドレス

L2マルチキャストアドレス 

L2のマルチキャストアドレスはマルチキャストグループアドレスのうち,IPマルチキャストMACアドレスは先頭から25ビットが”0000 0001 0000 0000 0101 1110 0″という値として固定されています.残りの下位23ビットがIPマルチキャストMACアドレスとして使用されます.

マルチキャストIPアドレスの下位23ビットと,IPマルチキャストMACアドレスの下位23は同一のものが使用されるため,マルチキャストIPアドレスの下位28ビットアドレスと完全な一意の対応付けができません.そのため,不要なグループのパケットがレシーバに到達しないように設計するように気をつけなければいけません.

マルチキャストルーティング 

通常のユニキャストルーティングでは,送信先とネクストホップが対になったルーティングテーブルを参照して転送先を決定します.対して,マルチキャストルーティングでは,マルチキャストルーティングテーブルという専用のテーブルを元に転送処理を行います.送信元ツリー(SPT)や共有ツリーなどからなるマルチキャストデータ専用のテーブルです.

マルチキャストデータ専用テーブルには,マルチキャストアドレス(マルチキャストグループ)とアップストリームインタフェース,ダウンストリームインタフェースのリストが含まれます.

送信元ツリー 

送信元ツリーはマルチキャストツリートラフィックののソースがルートとなり,レシーバまでの最短経路ツリーを作成する(SPT:Shortest Path Tree).具体的にはS.G(S:SourceAddress, G:MulticastGroup)というアドレステーブルが生成されます.送信元ツリーを使用すると,送信元までの最短経路が選択できるというメリットがある反面,S.Gテーブルの肥大に伴ってルータの負荷が上がるというデメリットがあります.

共有ツリー 

ネットワーク上のあるポイントからの共有ツリーを生成します.これをRP(Rendezvous Point)と呼ぶ.共有ツリーで使用されるグループアドレスは(*.S)と表し,これはIGMPにより生成されます.
共有ツリーは保持するツリーの数がグループごとに1つになるメリットがありますが,必ずRPを経由する必要があるため,場合によっては最短ではない経路を通る可能性があります.

リバースパスフォワーディング(RPF) 

ネットワーク機器がマルチキャストパケットを転送するとき,パケットのソースアドレスをチェックして自身のユニキャストルーティングテーブルを確認し,そのソースへの最適な経路かを持つインタフェースから受信している場合は転送処理を行い,そうでない場合は破棄されます.この動作をリバースパスフォワーディングと呼びます.このメカニズムによりマルチキャストパケットの重複やループを防ぐことができます.

経路の最適化 

共有ツリーを使用する場合,初期のマルチキャストは必ずRPを経由しますが,より距離の短い経路がある場合は最適な経路に途中で変更されます.ソースと最短につながる送信元ツリーのジョイン(S.G)をユニキャストでソースに向けて送信し,同時にRPに向けてRPT Pruning(S.G)を送信し停止を求めます.

ファーストホップルーター・ラストホップルーター

ソースに接続されるルーターをファーストホップルータとー呼びます.また,レシーバに接続するルータをラストホップルータと呼びます.ラストホップルータではIGMPが動作している必要があります.

マルチキャストIPアドレス 

マルチキャストでは,クラスDのIPアドレスを使用する(クラスD:224.0.0.0 ~ 239.255.255.255).このアドレスは宛先IPアドレスとしてのみ使用されます.マルチキャスト通信はUDPを使用するため,通信品質を保障したい場合はQoSなどで制御する必要があります.

マルチキャストIPアドレスの構造 

マルチキャストIPアドレスでは,先頭の4ビットを1110として使用します.残りの28ビットはマルチキャストグループを識別するためのIDに使用します.マルチキャストを送信するスコープによって以下のように分類されます.

種類アドレス範囲説明
リンクローカル224.0.0.0 ~ 224.0.0.255同一セグメント上で使用されるアドレス.通常,TTLが1であるため,ルーターを超えない.
グローバルスコープ224.0.1.0 ~ 238.255.255.255組織間やインターネットで使用するアドレス.一部のアドレスをICANNで予約して使用する.
プライベートスコープ239.0.0.0 ~ 239.255.255.255組織内で使用するためのアドレス.239.0.0.0/24239.128.0.0/24は使用しないことが推奨される.

予約済みリンクローカルアドレス 

以下のアドレスは,ICANNによって予約された静的なマルチキャストアドレスです.

マルチキャストアドレス対象
224.0.0.1サブネット上の全てのマルチキャスト対応のホスト
224.0.0.2サブネット上の全てのマルチキャスト対応のルーター
224.0.0.5全てのOSPFルーター
224.0.0.6全てのOSPF DR/BDRルーター
224.0.0.9全てのRIPv2ルーター
224.0.0.10全てのEIGRPルーター
224.0.0.13全てのPIMルーター
224.0.0.18全てのVRRPルーター

マルチキャストMACアドレス 

マルチキャストMACアドレスは,マルチキャストIPアドレスより導出されます.マルチキャストMACアドレスは先頭の25ビットが00000001 00000000 01011110 0となるため,16進数で表記すると01:00:5Eとなります.残りの23ビットにマルチキャストIPアドレスの下位23ビットをそのままマッピングします.

マルチキャストIPアドレスの固定された先頭4ビットとマッピングされる23ビットを除いた5ビット分は,マルチキャストMACアドレスとの対応では判別できません.例えば,224.0.0.x224.128.0.xは同一のMACアドレス01:005E:00:00:xにマッピングされます.このように,マルチキャストIPアドレスとマルチキャストMACアドレスは32:1の対応となるため,アプリケーション側で重複が発生しないように割り当てが必要です.

マルチキャストトラフィックの転送 

スイッチの場合 

マルチキャストトラフィックはデフォルトではブロードキャストトラフィックと同様にフラッディングされます.そのため,同じセグメント上にSender(送信元サーバ)とReceiver(受信クライアント)がいる場合,受信クライアントがマルチキャストグループに参加してから送信元サーバがマルチキャストトラフィックを送信するだけでマルチキャストの通信が成立します.

ルーターの場合 

ルーターでは,ブロードキャストトラフィックと同じくマルチキャストトラフィックは転送されません.多くの場合,マルチキャストのSenderとReceiverは異なるセグメントに属することが多いです.そのため,マルチキャストルーティングを有効化する必要があります.マルチキャストルーティングを有効化しなければいけないルーターは,SenderかReceiverが所属するセグメントに接するルーターだけでなく,途中の全てのルーターが対象です.

ディストリビューションツリー 

multicast_dr.png

ユニキャスト伝送の場合,送信元と宛先は1対1の関係にあります.対して,マルチキャスト伝送では1対Nの通信であることから,1つの送信元から複数の宛先に通信が行われます.マルチキャストは必要な宛先を持つルーターでコピーされ,送信元から宛先まで枝分かれしてツリー上に形成されていきます.このツリーをディストリビューションツリーといいます.ディストリビューションツリーはマルチキャストグループのメンバーが動的に参加・離脱するので,常に動的に形成されます.

ツリー作成の流れ 

Receiverのマルチキャストグループへの参加 

Receiverがマルチキャストパケットを受信するためにラストホップルーターにIGMPで存在を通知し,マルチキャストグループへ参加します.

マルチキャストルーティングプロトコルによるルータ間の通知 

PIMなどのマルチキャストルーティングプロトコルを有効にしているルーター間で,PIMネイバーが確立され,IGMPによって認識しているReceiverの存在をPIMネイバーに通知します.

Senderからのマルチキャストパケットの送信 

Senderからマルチキャストグループに向けてマルチキャストパケットが送信されます.

マルチキャストルーティングによりマルチキャストパケットを転送 

Senderから受信したマルチキャストパケットは,マルチキャストルーティングによってパケット転送されます.転送すべきインタフェースが複数ある場合は必要な数だけコピーして送信します.

multicast_dr_flow.png

このように,ディストリビューションツリーではマルチキャストを受信すべきインタフェースと転送すべきインタフェースの情報が形成されます.ユニキャストのルーティングテーブルのように事前に作成した情報に基づいて転送されるのではなく,Receiverの参加やSenderのパケット送信などにより動的に作成されます.

ディストリビューションツリーの種類 

Tree TypeDescription
送信元ツリーSenderごとに個別のディストリビューションツリーを作成
共有ツリー特定のルーター(RP)を中心に,複数のSenderで共通のディストリビューションツリーを作成

送信元ツリー(Source Tree) 

mcast_source-tree_1.png
mcast_source-tree_1.png

送信元ツリーでは,Senderごとに個別のディストリビューションツリーを作成するため,SenderとReceiverを結ぶ性的なパスが形成されます.よって,トラフィックの遅延を抑えることができます.

しかし,各Senderごとにツリーのパス情報を保持すると,Receiverが散在している場合はルータのリソース消費が問題となります.

送信元ツリーは最短パスを利用することからSPT(Shortest Path Tree)と言われます.送信元のSとマルチキャストグループのGをとってSPTを(S,G)形式で表記できます.(e.g.(192.168.1.1, 239.1.1.5))

共有ツリー(Shared Tree) 

mcast_shared-tree_1.png

共有ツリーではRP(Rendezvous Point:ランデブーポイント)と呼ばれる特定のルータを中心に複数のSenderで共有するディストリビューションツリーを作成します.共有ツリーはRPを中心に形成されるただ一つのツリーです.

最初にSenderはマルチキャストパケットをRPに送信します.次に,RPから共有ツリーに従ってReceiverへと送信されます.SenderとRPの間にReceiverが存在する場合,RPを経由せずにReceiverへ直接送信します.

共有ツリーではRPの配置場所により,SenderとReceiverを結ぶパスが最短パスにならない場合があります.また,RPの配置場所がSenderから離れている場合,マルチキャストパケットの配送に遅延が発生する可能性があります.

mcast_shared-tree_2.png

一方,多くのSenderがいる場合やReceiverが散在している場合でも共通のディストリビューションツリーを作成できるため,リソースの消費を抑えることができます.共有ツリーでは送信元がanyとなることから(*, G)形式で表記されます.(e.g.(*, 239.1.1.5))