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

マルチキャストの概要
マルチキャストは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のアドレスが範囲になります.この範囲のアドレスを利用してデータを送信すると,中継するネットワーク機器はマルチキャスト通信とみなします.マルチキャストのアドレスにはサブネットの概念はなく,全てがユニキャストアドレスと同じくホストアドレスとして扱われます.以下はマルチキャストとして予約済みのアドレス一覧です.
Address | descriotion |
---|---|
224.0.0.0/24 | 予約済みリンクローカルアドレス |
224.0.1.0~238.255.255.255 | グローバルスコープアドレス |
232.0.0.0/8 | SSMアドレス |
233.0.0.0/8 | GLOPアドレス |
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/24 と239.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.x
と224.128.0.x
は同一のMACアドレス01:005E:00:00:x
にマッピングされます.このように,マルチキャストIPアドレスとマルチキャストMACアドレスは32:1の対応となるため,アプリケーション側で重複が発生しないように割り当てが必要です.
マルチキャストトラフィックの転送
スイッチの場合
マルチキャストトラフィックはデフォルトではブロードキャストトラフィックと同様にフラッディングされます.そのため,同じセグメント上にSender(送信元サーバ)とReceiver(受信クライアント)がいる場合,受信クライアントがマルチキャストグループに参加してから送信元サーバがマルチキャストトラフィックを送信するだけでマルチキャストの通信が成立します.
ルーターの場合
ルーターでは,ブロードキャストトラフィックと同じくマルチキャストトラフィックは転送されません.多くの場合,マルチキャストのSenderとReceiverは異なるセグメントに属することが多いです.そのため,マルチキャストルーティングを有効化する必要があります.マルチキャストルーティングを有効化しなければいけないルーターは,SenderかReceiverが所属するセグメントに接するルーターだけでなく,途中の全てのルーターが対象です.
ディストリビューションツリー

ユニキャスト伝送の場合,送信元と宛先は1対1の関係にあります.対して,マルチキャスト伝送では1対Nの通信であることから,1つの送信元から複数の宛先に通信が行われます.マルチキャストは必要な宛先を持つルーターでコピーされ,送信元から宛先まで枝分かれしてツリー上に形成されていきます.このツリーをディストリビューションツリーといいます.ディストリビューションツリーはマルチキャストグループのメンバーが動的に参加・離脱するので,常に動的に形成されます.
ツリー作成の流れ
Receiverのマルチキャストグループへの参加
Receiverがマルチキャストパケットを受信するためにラストホップルーターにIGMPで存在を通知し,マルチキャストグループへ参加します.
マルチキャストルーティングプロトコルによるルータ間の通知
PIMなどのマルチキャストルーティングプロトコルを有効にしているルーター間で,PIMネイバーが確立され,IGMPによって認識しているReceiverの存在をPIMネイバーに通知します.
Senderからのマルチキャストパケットの送信
Senderからマルチキャストグループに向けてマルチキャストパケットが送信されます.
マルチキャストルーティングによりマルチキャストパケットを転送
Senderから受信したマルチキャストパケットは,マルチキャストルーティングによってパケット転送されます.転送すべきインタフェースが複数ある場合は必要な数だけコピーして送信します.

このように,ディストリビューションツリーではマルチキャストを受信すべきインタフェースと転送すべきインタフェースの情報が形成されます.ユニキャストのルーティングテーブルのように事前に作成した情報に基づいて転送されるのではなく,Receiverの参加やSenderのパケット送信などにより動的に作成されます.
ディストリビューションツリーの種類
Tree Type | Description |
---|---|
送信元ツリー | Senderごとに個別のディストリビューションツリーを作成 |
共有ツリー | 特定のルーター(RP)を中心に,複数のSenderで共通のディストリビューションツリーを作成 |
送信元ツリー(Source Tree)


送信元ツリーでは,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)

共有ツリーではRP(Rendezvous Point:ランデブーポイント)と呼ばれる特定のルータを中心に複数のSenderで共有するディストリビューションツリーを作成します.共有ツリーはRPを中心に形成されるただ一つのツリーです.
最初にSenderはマルチキャストパケットをRPに送信します.次に,RPから共有ツリーに従ってReceiverへと送信されます.SenderとRPの間にReceiverが存在する場合,RPを経由せずにReceiverへ直接送信します.
共有ツリーではRPの配置場所により,SenderとReceiverを結ぶパスが最短パスにならない場合があります.また,RPの配置場所がSenderから離れている場合,マルチキャストパケットの配送に遅延が発生する可能性があります.

一方,多くのSenderがいる場合やReceiverが散在している場合でも共通のディストリビューションツリーを作成できるため,リソースの消費を抑えることができます.共有ツリーでは送信元がanyとなることから(*, G)形式で表記されます.(e.g.(*, 239.1.1.5))
-
前の記事
ネットワークの高可用性機能 2019.05.03
-
次の記事
IGMP(Internet Group Management Protocol)とは 2019.05.04