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

ルータはマルチキャストルーティングを有効にすることで、マルチキャストパケットを転送することができます。ですが、スイッチのようにフラッディングするわけではありません。ディストリビューションツリーにしたがって、マルチキャストパケットをルーティングします。そのため、マルチキャストルーティングを行うには、ディストリビューションツリーが重要なポイントになります。

ディストリビューションツリーによって、マルチキャストルータはどの方向(インタフェース)の先にどんなマルチキャストグループのレシーバが存在して
いるかを認識します。
そして、受信したマルチキャストパケットをレシーバがいるインタフェースに転送します。このとき、レシーバが存在するインタフェースが複数あれば、その数分だけマルチキャストパケットをコピーします。以上のようなマルチキャストルーティングで、重要な役割を果たすディストリビューションツリーを作成したり、維持したりするためのプロトコルがマルチキャストルーティングプロトコルです。

ディストリビューションツリー作成の概要

ディストリビューションツリーの作成はマルチキャストルーティングプロトコルだけでなく、その他のプロトコルや実際のマルチキャストのデータも関連して行われます。ディストリビューションツリーはあらかじめ作成されるわけではありません。レシーバの出現やソースからのマルチキャストパケットの送信に伴って動的に作成されていきます。その概要をまず解説します。

あるホストがマルチキャストレシーバとして、マルチキャストパケットを受信しようとするとき、ラストホップルータへ通知します。ルータに対して、レシーバが自らの存在とマルチキャストグループへの参加を通知するわけです。このときに利用するプロトコルがIGMP(Internet Group Management Protocol)です。

ラストホップルータはIGMPによって、自身のインタフェース上にレシーバが存在することを把握すると、マルチキャストネットワーク上のほかのルータに通知します。この動作は、マルチキャストルーティングプロトコルで行います。こうして、マルチキャストネットワークのルータは、順次、レシーバが存在するインタフェースを認識することができ、ディストリビューションツリーが完成します。

マルチキャストソースからマルチキャストパケットが送信されると、ルータはディストリビューションツリーにしたがって、レシーバが存在するインタフェースにルーティングを行い、レシーバまでマルチキャストパケットが届きます。

以上の動作は、マルチキャストルーティングプロトコルの種類によって異なりますが、ディストリビューションツリーの作成の以下によって行われています。

  • IGMP:ラストホップルータとマルチキャストレシーバ間
  • マルチキャストルーティングプロトコル:マルチキャストネットワーク内のルータ間
  • マルチキャストソースからのデータ送信:マルチキャストソースは特別なプロトコルを使わず、単にマルチキャストパケットを送信

図 ディストリビューションツリーの作成
図 ディストリビューションツリーの作成

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

ディストリビューションツリーには、次の2つの種類があります。

  • 送信元ツリー(Source Tree)
  • 共有ツリー(Shared Tree)

送信元ツリー(Source Tree)

マルチキャストソースごとに個別のディストリビューションツリーを作成します。ディストリビューションツリーは、マルチキャストソースのアドレスとグループアドレスで識別されます。Shortest Path Tree(SPT)とも言います。

共有ツリー(Shared Tree)

複数のマルチキャストソースで共通したディストリビューションツリーを作成します。マルチキャストグループアドレスでツリーを識別します。RP Treeとも呼ばれます。

2つのディストリビューションツリーは、マルチキャストルーティングプロトコルの動作モードによって使い分け、および組み合わせを行います。マルチキャストルーティングプロトコルのDenseモードでは、送信元ツリーのディストリビューションツリーを作成します。マルチキャストルーティングプロトコルのSparseモードでは送信元ツリーと共有ツリーを組み合わせたディストリビューションツリーを作成します。

マルチキャストルーティングプロトコルのモード

マルチキャストルーティングプロトコルには、以下の2つの動作モードがあります。

  • Denseモード
  • Sparseモード

それぞれ、想定しているネットワーク環境、作成するディストリビューションツリー、マルチキャストパケットをルーティングする際の動作が異なります。

Desnseモード

Denseモードの「Dense」は日本語で稠密と訳されます。Denseモードは稠密モードとも言います。稠密とは、密度が濃いという意味で、Desnseモードはレシーバが狭い範囲に集中している環境を想定しています。狭い範囲とは、つまりLAN環境です。マルチキャストソースからマルチキャストレシーバが1つの拠点のLANに接続されていて豊富な帯域幅を利用できる環境を想定しています。

Denseモードのマルチキャストパケットのルーティングは、Flood & Pruneモデルと呼ばれています。これは、まずレシーバが存在する可能性があるインタフェースすべてにマルチキャストパケットをルーティング(フラッディング)します。その後、レシーバが存在しないインタフェースへルーティングしないようにします。「とりあえずフラッディングして、あとで不要なところはフラッディングをやめる」という大雑把な考え方でマルチキャストパケットのルーティングを行います。

Denseモードでは、送信元ツリーのディストリビューションツリーを作成します。PIM-DM、DVMRP、MOSPFなどがDenseモードのマルチキャストルーティングプロトコルです。

Sparseモード

Sparseモードの「Sparse」は「希薄」と訳されます。Sparseモードは希薄モードともいいます。レシーバの分布がまばらであるようなネットワーク環境を想定しています。つまり、1つの拠点のLANだけでなく、WANを介してたくさんの拠点のLANにまたがったネットワーク環境でのマルチキャストルーティングを行うのがSparseモードです。

多くの拠点をまたがる構成では、WAN回線においてLANほどたくさんの帯域を利用できません。そのため、Denseモードのようにとりあえずフラッディングするという動作を行うとマルチキャスト以外の通信への影響が大きくなります。そこで、SparseモードはExplicit Joinモデルという考え方で、ルータはレシーバが存在する場所をきちんと把握して、レシーバが存在しているインタフェースにのみマルチキャストパケットをルーティングします。
Sparseモードでは、送信元ツリーと共有ツリーを組み合わせたディストリビューションツリーを作成します。ツリーの境になるルータをRP(Rendezvous Point)といいます。

PIM-SM、CBTがSparseモードのマルチキャストルーティングプロトコルです。

以上の2つの動作モードがありますが、DenseモードのフラッディングはLAN環境においても悪影響を及ぼすことが多いので、一般的にはマルチキャストルーティングプロトコルとしてSparseモードのプロトコルを利用します。

主なDenseモード、Sparseモードの特徴をまとめると次の表になります。

モード想定している環境ルーティング方法ツリープロトコル
Denseレシーバが密集Flood & Prune送信元ツリーDVMRP/MOSPF/PIM-DM
SparseレシーバがまばらExplicit Join送信元ツリー+共有ツリーPIM-SM/CBT
表 マルチキャストルーティングプロトコルの特徴

Ciscoルータでは、基本的にPIM-DMもしくはPIM-SMをサポートしています。SparseモードであるPIM-SMがマルチキャストルーティングプロトコルで一般的に利用されるプロトコルです。

Ciscoルータでのディストリビューションツリーの表記

Ciscoルータでディストリビューションツリーがどのように表されるかを見ましょう。前述のようにディストリビューションツリーには次の2つの種類があ
ります。

  • 送信元ツリー
  • 共有ツリー

上記のツリーごとにCiscoルータでのディストリビューションツリーのエントリの表記がことなります。送信元ツリーは(S,G)という形で表記されます。そ
して、共有ツリーは(*,G)という形で表記されます。

送信元ツリーの「S」はSource、つまりマルチキャストソースのIPアドレスです。共有ツリーではこの部分が「*」になっています。複数のマルチキャストソースで共通のツリーが共有ツリーだからです。そして、「G」はGroup、つまりマルチキャストグループアドレスを示しています。具体的な送信元ツリーは、たとえば、(192.168.1.1,239.1.1.1)などのようになります。共有ツリーは(*,239.1.1.1)という具合です。

(*,G)は、共有ツリーとしての意味以外に(S,G)のツリーのテンプレートとしての意味もあります。

(*,G)、(S,G)で表すディストリビューションツリーには共通した情報が含まれています。それは、次の2つです。

  • IIF(Incoming Interface)
  • OIL(Outgoing Interface List)

IIFは、その名前のとおり、マルチキャストパケットの入力インタフェースです。IIFに記述されているインタフェースがRPFインタフェースです。IIFのインタフェース以外で受信したマルチキャストパケットは、RPFチェックで失敗し破棄されます。また、IIFの方向のマルチキャストルーティングプロトコルのルータがRPFネイバーの部分に入ります。


RPFチェックについては、以下の記事をご覧ください。


OILも名前のとおり、マルチキャストパケットを出力するインタフェースのリストです。マルチキャストパケットを出力するインタフェースということは、ルータがOILの先にマルチキャストレシーバが存在している(かもしれない)と認識していることになります。RPFチェックに成功したマルチキャストパケットをOILのインタフェースに出力します。なお、原則としてIIFのインタフェースがOILに含まれることはありません。つまり、マルチキャストパケットのルーティングでは、原則としてマルチキャストパケットを受信したインタフェースから出力することはありません。


フレームリレー/ATMのハブ&スポークトポロジでは、OILにIIFも含めるように設定することがあります。

ディストリビューションツリーの以上のような情報をもう少しわかりやすく考えましょう。送信元ツリーは、

  • 特定のマルチキャストソースから送信されたマルチキャストパケット(S,G)を
  • どのインタフェースで受信(IIF)して
  • どのインタフェースに出力(OIF)すべきか

ということを表しています。

そして共有ツリーは、

  • マルチキャストソースのIPアドレスは特に意識せずマルチキャストパケット(*,G)を
  • どのインタフェースで受信(IIF)して
  • どのインタフェースに出力(OIL)すべきか

ということを表しています。

Ciscoルータでディストリビューションツリーを確認するためには、show ip mrouteコマンドを使います。下記はshow ip mrouteコマンドの例です。

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

ユニキャストルーティングテーブルを確認するshow ip routeとよく似たshow ip mrouteコマンドで確認します。そのため、ディストリビューションツ
リーはマルチキャストルーティングテーブルと呼ぶこともよくあります。

IPマルチキャストの仕組み