目次
ディストリビューションツリーとは
ルータはマルチキャストルーティングを有効にすることで、マルチキャストパケットを転送することができます。ですが、スイッチのようにフラッディングするわけではありません。ディストリビューションツリーにしたがって、マルチキャストパケットをルーティングします。そのため、マルチキャストルーティングを行うには、ディストリビューションツリーが重要なポイントになります。
ディストリビューションツリーによって、マルチキャストルータはどの方向(インタフェース)の先にどんなマルチキャストグループのレシーバが存在して
いるかを認識します。そして、受信したマルチキャストパケットをレシーバがいるインタフェースに転送します。このとき、レシーバが存在するインタフェースが複数あれば、その数分だけマルチキャストパケットをコピーします。以上のようなマルチキャストルーティングで、重要な役割を果たすディストリビューションツリーを作成したり、維持したりするためのプロトコルがマルチキャストルーティングプロトコルです。
ディストリビューションツリー作成の概要
ディストリビューションツリーの作成はマルチキャストルーティングプロトコルだけでなく、その他のプロトコルや実際のマルチキャストのデータも関連して行われます。ディストリビューションツリーはあらかじめ作成されるわけではありません。レシーバの出現やソースからのマルチキャストパケットの送信に伴って動的に作成されていきます。その概要をまず解説します。
あるホストがマルチキャストレシーバとして、マルチキャストパケットを受信しようとするとき、ラストホップルータへ通知します。ルータに対して、レシーバが自らの存在とマルチキャストグループへの参加を通知するわけです。このときに利用するプロトコルが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マルチキャストの仕組み
- ユニキャスト/ブロードキャスト/マルチキャストの振り返り
- IPマルチキャストの用途 ~同じデータの同報~
- マルチキャストグループへの参加 ~マルチキャストデータを受信できるようにする~
- マルチキャストアドレス ~レイヤ3とレイヤ2のマルチキャストアドレス~
- IGMPの概要 ~マルチキャストグループへの参加を通知~
- IGMPの仕組み
- IGMPの設定と確認コマンド
- IGMPスヌーピング
- マルチキャストルーティングの概要
- ディストリビューションツリー
- RPFチェック
- PIM-DMの仕組み
- PIM-DMの設定と確認コマンド
- PIM-SMの仕組み ~ディストリビューションツリー作成~
- PIM-SMの仕組み ~ディストリビューションツリー作成例~
- PIM-SMの設定と確認コマンド
- PIM-SM ダイナミックなRPの設定 ~Auto RP/BSRの概要~
- PIM-SM AutoRPの設定例
- PIM-SM BSRの設定例
- Bidirectional PIMの設定と確認コマンド
- PIM SSMの設定と確認コマンド
- PIM-SMの設定演習 [スタティックRP]
- PIM-SMの設定演習 [Auto RP]
- PIM-SMの設定演習 [BSR]
- PIM-SMの設定演習 [Bidirectional PIM]
- PIM-SMの設定演習 [SSM]
- PIM-SMの設定演習 [トラブルシュート]
- Anycast RP ~RPの負荷分散~
- Anycast RPの設定と確認コマンド
- Anycast RPの設定例
- マルチキャストパケットの転送経路の制御 ~ip mrouteコマンド~
- ip multicast rate-limitコマンド ~マルチキャストパケットのレート制限~
- ip multicast rate-limitコマンドの設定例
- IGMPレポートの制限
- PIM-SM 設定ミスの切り分けと修正 Part1
- PIM-SM 設定ミスの切り分けと修正 Part2
- PIM-SM 設定ミスの切り分けと修正 Part3