PIM-DM(デンスモード)
・PIM-DMを使って,マルチキャスト・ルーティングを実践する
・マルチキャスト・ルーティングが実現するまでの流れを確認する
ネットワーク構成(画像を別ウインドウで表示)
RouterAのコンフィグ
!
version 12.2
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname RouterA
!
!
ip multicast-routing ←マルチキャスト・ルーティングを有効にする
!
interface Loopback0
 ip address 172.16.255.1 255.255.255.255
!
interface FastEthernet0/0
 ip address 192.168.1.2 255.255.255.0
 ip pim dense-mode ←このインタフェースでPIM-DMを有効にする
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 192.168.2.1 255.255.255.0
 ip pim dense-mode ←このインタフェースでPIM-DMを有効にする
 duplex auto
 speed auto
!
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
!
!
line con 0
line aux 0
line vty 0 4
!
end

RouterBのコンフィグ
!
version 12.2
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname RouterB
!
!
ip multicast-routing ←マルチキャスト・ルーティングを有効にする
!
interface Loopback0
 ip address 172.16.255.2 255.255.255.255
!
interface FastEthernet0/0
 ip address 192.168.2.2 255.255.255.0
 ip pim dense-mode ←このインタフェースでPIM-DMを有効にする
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 192.168.3.1 255.255.255.0
 ip pim dense-mode ←このインタフェースでPIM-DMを有効にする
 duplex auto
 speed auto
!
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
!
!
line con 0
line aux 0
line vty 0 4
!
end

RouterCのコンフィグ
!
version 12.2
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname RouterC
!
!
ip multicast-routing ←マルチキャスト・ルーティングを有効にする
!
interface Loopback0
 ip address 172.16.255.3 255.255.255.255
!
interface FastEthernet0/0
 ip address 192.168.3.2 255.255.255.0
 ip pim dense-mode ←このインタフェースでPIM-DMを有効にする
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 192.168.4.1 255.255.255.0
 ip pim dense-mode ←このインタフェースでPIM-DMを有効にする
 duplex auto
 speed auto
!
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
!
!
line con 0
line aux 0
line vty 0 4
!
end

確認
マルチキャストは,IPネットワークで動画配信のような「放送」を実現する技術です。
マルチキャスト・ルーティングは,通常のIPネットワークを使ったルーティングとは,ちょっと概念が違います。
ここでは,フリーのマルチキャスト配信ツール「VLC」を使って,動画配信をしてみましょう。

●マルチキャストとは?
テレビの放送では,放送局から特定の周波数の電波を出して,それを家庭のテレビが受信します。
マルチキャストは,これと同じことをIPネットワークで実現するためのしくみです。
サーバーが特定のあて先(マルチキャスト・アドレス)のパケットを出して,それを端末が受信します。
ただし,IPネットワークの場合,パケットを全端末に送ったのでは,IPネットワークがパンクしていまいます。
そこで,受信端末がある所にだけパケットを配信するしくみが必要になってきます。
それが,マルチキャスト・ルーティングです。

マルチキャスト通信では,IGMPとPIMという二つのプロトコルを使います。
IGMPは,端末がルーターに対して受信要求や受信停止を伝えるためのプロトコルです。
PIMは,ルーター同士がマルチキャスト・パケットの配信経路を決めるためのプロトコルです。
IGMP,PIM,マルチキャスト・アドレスなど,マルチキャスト技術の概要は,シスコのWebページが参考になります。
ここでは,よく出てくる用語の意味だけをまとめておきます。

【マルチキャストで使われる用語】
・IGMP…レシーバがルーターにマルチキャスト通信の参加や離脱を伝えるプロトコル
・PIM…ルーター同士でマルチキャスト・パケットの配信経路を決めるプロトコル
・マルチキャスト・アドレス…224.0.0.0〜239.255.255.255のクラスDのアドレス

・ソース…マルチキャスト・パケットを配信するサーバー
・レシーバ…マルチキャスト・パケットを受信する端末
・ファーストホップ・ルーター…ソースにつながるルーター(このシナリオではRouterA)
・ラストホップ・ルーター…端末につながるルーター(このシナリオではRouterC)

・ディストリビューション・ツリー…IGMPとPIMによって作ったマルチキャスト・パケットの配信経路
・マルチキャスト・ルーティングテーブル…マルチキャスト・パケットを転送するための専用のルーティング・テーブル
・マルチキャスト・グループ…マルチキャスト・アドレスの特定の一つ
・(S,G)エントリ…マルチキャスト・ルーティングにおいて,ソース(S)とグループ(G)が特定されているエントリ
・(*,G)エントリ…マルチキャスト・ルーティングにおいて,グループ(G)のみが特定されているエントリ


●マルチキャスト・パケットの送信・受信ツール
マルチキャスト・パケットを配信するには,マルチキャスト・データを配信するためのツールが必要です。
ここでは,フリーのマルチキャスト配信ツール「VLC」を使って,動画配信を試してみます。
VLCのインストールと利用方法については,以下を参考にしてみてください。
(参考)VLCのインストールと利用方法


●PIM-DM(デンスモード)
PIMには大きく,PIM-DM(デンスモード)とPIM-SM(スパースモード)という二つの方式があります。
大雑把に言うと,
PIM-DMは,「いったんすべての端末に配信して,その後,必要ないと報告のあったところを止める」という方法です。
PIM-SMは,「配信拠点のルーターを決めておいて,端末はそこに配信要求を出して受信する」という方法です。
ここでは,PIM-DMを実践してみます。


●設定の確認
PIM-DMを設定するときのポイントは,以下の二つです。

【PIM-DMの設定】
1.ip multicast-routingコマンドで,マルチキャスト・ルーティングを有効にする
2.各インタフェースでip pim dense-modeコマンドを入れ,PIM-DMを有効にする

例えば,RouterCの設定は以下になります。
RouterC(config)#ip multicast-routing
RouterC(config)#interface fastEthernet 0/0
RouterC(config-if)#ip pim dense-mode
RouterC(config)#interface fastEthernet 0/1
RouterC(config-if)#ip pim dense-mode ←自動的にIGMPも有効になる
RouterAとRouterBの設定も基本的には同じです。
設定は簡単ですね。
ちなみに,PIMを有効にすると自動的にIGMPも有効になります。
この状態で,サーバーからマルチキャスト・パケットを配信し,レシーバで受信すれば,レシーバで動画が再生されるはずです。


●設定後の状態確認
サーバーでマルチキャスト・パケットを配信していなく,かつ,レシーバで受信要求を出していない,初期状態を確認してみましょう。
RouterCのマルチキャスト・ルーティングテーブルをshow ip mrouteで見てみます。
RouterC#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report
Outgoing interface flags: H - Hardware switched
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 224.0.1.40), 15:00:09/00:00:00, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/0, Forward/Dense, 15:00:09/00:00:00
(*,G)エントリが一つだけできています。
224.0.1.40は,シスコのAuto-RP機能で使うアドレスで,このエントリはデフォルトで作成されるようになっています。
今回は,239.255.1.1をあて先とするマルチキャスト・パケットが対象です。
239.255.1.1あてのエントリは,まだ登録されていないことがわかります。

また,(*,239.255.255.250)のエントリができているケースがあります。
これは,Windowsパソコンがユニバーサル・プラグアンドプレイ(UPnP)で使うマルチキャスト・アドレスです。
ご利用のパソコンでUPnPを利用していないなら,オフにしてかまいません。
(参考)
WindowsXPの起動時に、「239.255.255.250」へのパケットが送信される場合(DELLのサポートホームページ)
http://support2.jp.dell.com/jp/jp/mwfaq/faq.asp?faqno=190329


PIMのネイバーを見てみましょう。
show ip pim neighborコマンドを使います。
RouterC#show ip pim neighbor
PIM Neighbor Table
Neighbor          Interface                Uptime/Expires    Ver   DR
Address                                                            Prio/Mode
192.168.3.1       FastEthernet0/0          16:50:44/00:01:44 v2    1 / S
192.168.3.1(RouterBのFa0/1)がネイバーになっているのがわかります。

RouterCは,端末のグループ参加要求をIGMPで受け取るラストホップ・ルーターです。
IGMPの様子も確認しておきましょう。
show ip igmp groupsコマンドを使います。
RouterC#show ip igmp groups
IGMP Connected Group Membership
Group Address    Interface                Uptime    Expires   Last Reporter
224.0.1.40       FastEthernet0/0          6d11h     00:02:29  192.168.3.2
Auto-RP用に自動でできる224.0.1.40がエントリされているのがわかります。
他のグループはエントリされていません。

以上が,レシーバがIGMPで参加要求を出していなく,ソースがマルチキャスト・パケットを配信していない,初期状態です。
RouterAもRouterBも,239.255.1.1のエントリは出来ていません。


●PIM-DMの動作の流れ
PIM-DMにおけるマルチキャスト配信の流れは,以下のようになります。

PIM-DMのポイントは,いったん全リンクにマルチキャスト・パケットをフラッディングして,その後PIMのPruneメッセージを使って受信中のレシーバがいないことを上位ルーターに知らせていきます。
受信要求は,PIMのGraftメッセージを使って上位ルーターに伝えることで,受信端末までの配信ツリーを作ります。
このようPIM-DMは,「いったん全部に送るから,必要なかったら教えてね」という動作が特徴です。


●PIM-SMの動作確認
≪サーバーがマルチキャスト・パケットを配信したとき≫
では,実際にマルチキャスト・パケットを配信しながら,上の図にある動作を確認していきましょう。
すべてのルーターで,マルチキャスト・ルーティングとPIMのデバッグをオンにしておきます。
RouterA#debug ip mrouting
IP routing debugging is on
RouterA#debug ip pim
PIM debugging is on
これで準備OKです。
ではまず,配信サーバーからマルチキャスト・パケットを出してみましょう。
VLCで適当な動画ファイルを239.255.1.1あてに配信します(VLCの設定方法はこちら)。

RouterCの動作を見てみます。
RouterC#
1w1d: PIM: Send v2 Hello on FastEthernet0/1
1w1d: PIM: Send v2 Hello on FastEthernet0/0
1w1d: MRT: Create (*, 239.255.1.1), RPF Null, PC 0x80727774 ←(1)
1w1d: MRT: Add/Update FastEthernet0/0/239.255.1.1 to the olist of (*, 239.255.1.
1), Forward state
1w1d: MRT: Create (192.168.1.1/32, 239.255.1.1), RPF FastEthernet0/0/192.168.3.1
, PC 0x80727AC0 ←(2)
1w1d: PIM: Send v2 Prune on FastEthernet0/0 to 192.168.3.1 for (192.168.1.1/32,
239.255.1.1) ←(3)
1w1d: PIM: Received v2 Join/Prune on FastEthernet0/0 from 192.168.3.2
1w1d: PIM: Received v2 Hello on FastEthernet0/0 from 192.168.3.1
1w1d: PIM: Hello packet has unknown option 20, ignored
1w1d: MRT: Update (*, 224.0.1.40), RPF Null, PC 0x80718A1C
(1) サーバーからのマルチキャスト・パケットを受け,(*,239.255.1.1)エントリを作成。これは(2)の準備
(2) (192.168.1.1,239.255.1.1)エントリを作成
  ここまで上図@の動作
(3) 自分のは以下に受信端末はいないので,192.168.3.1(RouterB)にPruneメッセージを送信
  これは,上図Aの動作

このときのRouterCのマルチキャスト・ルーティングテーブルは以下です。
RouterC#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report
Outgoing interface flags: H - Hardware switched
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.255.1.1), 00:17:23/00:02:59, RP 0.0.0.0, flags: D
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/0, Forward/Dense, 00:17:23/00:00:00

(192.168.1.1, 239.255.1.1), 00:01:28/00:01:31, flags: PT
  Incoming interface: FastEthernet0/0, RPF nbr 192.168.3.1
  Outgoing interface list: Null

(*, 224.0.1.40), 15:38:42/00:00:00, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/0, Forward/Dense, 15:38:42/00:00:00
(*,239.255.1.1)エントリと,(192.168.1.1,239.255.1.1)エントリの二つが出来ています。
受信したパケットから,配信ソース(192.168.1.1)とグループ(239.255.1.1)はわかっています。
そこで,(S,G)エントリである,(192.168.1.1,239.255.1.1)エントリを作ります(上から2番目のエントリ)。
ただし,(192.168.1.1,239.255.1.1)エントリの出力ポートを表す「Outgoing interface list」は「Null」になっています。
これは,この時点では,出力先がわからないからです。

ちなみに,(S,G)エントリを作る際には,必ず(*,G)エントリが作られる決まりになっています。
一緒に(*,239.255.1.1)エントリができたのはそのためです。

続いて,RouterBの動作を見てみましょう。
RouterB#
1w1d: PIM: Received v2 Hello on FastEthernet0/1 from 192.168.3.2
1w1d: MRT: Create (*, 239.255.1.1), RPF Null, PC 0x80731C78 ←(1)
1w1d: MRT: Add/Update FastEthernet0/0/239.255.1.1 to the olist of (*, 239.255.1.
1), Forward state
1w1d: MRT: Add/Update FastEthernet0/1/239.255.1.1 to the olist of (*, 239.255.1.
1), Forward state
1w1d: MRT: Create (192.168.1.1/32, 239.255.1.1), RPF FastEthernet0/0/192.168.2.1
, PC 0x80731FA4 ←(2)
1w1d: MRT: Add/Update FastEthernet0/1/239.255.1.1 to the olist of (192.168.1.1,
239.255.1.1), Forward state
1w1d: PIM: Received v2 Join/Prune on FastEthernet0/1 from 192.168.3.2, to us ←(3)
1w1d: PIM: Prune-list: (192.168.1.1/32, 239.255.1.1)
1w1d: PIM: Schedule to prune FastEthernet0/1 for (192.168.1.1/32, 239.255.1.1)
1w1d: PIM: Send periodic v2 Hello on FastEthernet0/1
1w1d: PIM: Prune FastEthernet0/1/239.255.1.1 from (192.168.1.1/32, 239.255.1.1) ←(4)
1w1d: PIM: Send v2 Prune on FastEthernet0/0 to 192.168.2.1 for (192.168.1.1/32,
239.255.1.1) ←(5)
1w1d: PIM: Received v2 Join/Prune on FastEthernet0/0 from 192.168.2.2
1w1d: PIM: Received v2 Hello on FastEthernet0/0 from 192.168.2.1
1w1d: MRT: Update (*, 224.0.1.40), RPF Null, PC 0x807230EC
(1) ソースが発信したマルチキャスト・パケットを受け取り,まず(*,239.255.1.1)エントリを作っています。これは(2)の準備
(2) (1)を受けて,(192.168.1.1,239.255.1.1)エントリを作成
  ここまでが,上図@の動作です
(3) 192.168.3.2(RouterC)からPruneメッセージを受信
(4) Pruneメッセージを受けとって,(192.168.1.1,239.255.1.1)の通信のFa0/1への配信をカット
(5) 192.168.2.1(RouterA)にPruneメッセージを送信
  これらは,上図Aの動作です

この状態の,RouterBのマルチキャスト・ルーティング・テーブルも見てみます。
RouterB#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report
Outgoing interface flags: H - Hardware switched
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.255.1.1), 00:45:02/00:02:59, RP 0.0.0.0, flags: D
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Dense, 00:45:02/00:00:00
    FastEthernet0/0, Forward/Dense, 00:45:02/00:00:00

(192.168.1.1, 239.255.1.1), 00:00:30/00:02:34, flags: PT
  Incoming interface: FastEthernet0/0, RPF nbr 192.168.2.1
  Outgoing interface list:
    FastEthernet0/1, Prune/Dense, 00:00:25/00:02:34

(*, 224.0.1.40), 16:06:29/00:00:00, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Dense, 16:06:30/00:00:00
    FastEthernet0/0, Forward/Dense, 16:06:30/00:00:00
(192.168.1.1,239.255.1.1)エントリのステートが「Prune」になっています。
エントリは作ったけど,この先に受信端末がいなくて,配信ツリーの対象になっていないことを表しています。

RouterAではどうなっているでしょうか。
RouterA#
1w1d: MRT: Create (*, 239.255.1.1), RPF Null, PC 0x8072B380 ←(1)
1w1d: MRT: Add/Update FastEthernet0/1/239.255.1.1 to the olist of (*, 239.255.1.
1), Forward state
1w1d: MRT: Create (192.168.1.1/32, 239.255.1.1), RPF FastEthernet0/0/0.0.0.0, PC
 0x8072B6AC ←(2)
1w1d: MRT: Add/Update FastEthernet0/1/239.255.1.1 to the olist of (192.168.1.1,
239.255.1.1), Forward state
1w1d: PIM: Send v2 Hello on FastEthernet0/0
1w1d: PIM: Received v2 Join/Prune on FastEthernet0/1 from 192.168.2.2, to us ←(3)
1w1d: PIM: Prune-list: (192.168.1.1/32, 239.255.1.1)
1w1d: PIM: Schedule to prune FastEthernet0/1 for (192.168.1.1/32, 239.255.1.1)
1w1d: PIM: Send v2 Hello on FastEthernet0/1
1w1d: PIM: Prune FastEthernet0/1/239.255.1.1 from (192.168.1.1/32, 239.255.1.1) ←(4)
1w1d: PIM: Received v2 Hello on FastEthernet0/1 from 192.168.2.2
1w1d: PIM: Hello packet has unknown option 20, ignored
(1) ソースが発信したマルチキャスト・パケットを受け取り,(*,239.255.1.1)エントリを作っています。これは(2)の準備
(2) (1)を受けて,(192.168.1.1,239.255.1.1)エントリを作っています
  ここまでが,上図@の動作です
(3) 192.168.2.2(RouterB)からPruneメッセージを受け取っています
(4) Pruneメッセージを受けとって,(192.168.1.1,239.255.1.1)の通信のFa0/1への配信をカット
  ここまでが,上図Aの動作です

RouterAのマルチキャスト・ルーティング・テーブルも見てみましょう。
RouterA#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report
Outgoing interface flags: H - Hardware switched
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.255.1.1), 00:56:14/00:02:59, RP 0.0.0.0, flags: D
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Dense, 00:56:14/00:00:00

(192.168.1.1, 239.255.1.1), 00:02:13/00:00:56, flags: PT
  Incoming interface: FastEthernet0/0, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Prune/Dense, 00:02:03/00:00:56

(*, 224.0.1.40), 16:17:47/00:00:00, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Dense, 16:17:48/00:00:00
    FastEthernet0/0, Forward/Dense, 16:17:48/00:00:00
RouterB同様,(192.168.1.1,239.255.1.1)エントリのステートが「Prune」になっています。
結局,RouterAで受信した239.255.1.1のマルチキャスト・トラフィックは,RouterAでPruneされて配下へは配信されません。
上図Bの状態になっていることがわかります。


≪端末が受信要求を出したとき≫
次に,端末で239.255.1.1あてのマルチキャスト・パケットを受信してみましょう。
VLCで「再生」ボタンを押すと,IGMPの受信要求(Membership Reportメッセージ)を出します(VLCの設定方法はこちら)。
(「ip igmp join-group マルチキャスト・アドレス」コマンドを使って,シスコ・ルーターをレシーバにすることもできます。)


RouterCの動作を見てみましょう。
RouterC#
1w1d: MRT: Add/Update FastEthernet0/1/239.255.1.1 to the olist of (192.168.1.1,
239.255.1.1), Forward state
1w1d: PIM: Send v2 Hello on FastEthernet0/1
1w1d: PIM: Building Graft message for 239.255.1.1, FastEthernet0/1: no entries
1w1d: PIM: Building Graft message for 239.255.1.1, FastEthernet0/0:
     192.168.1.1/32
1w1d: PIM: Send v2 Graft to 192.168.3.1 (FastEthernet0/0) ←(1)
1w1d: PIM: Received v2 Graft-Ack on FastEthernet0/0 from 192.168.3.1 ←(2)
1w1d:      Group 239.255.1.1:
     192.168.1.1/32
1w1d: MRT: Update (*, 239.255.1.1), RPF Null, PC 0x80718A1C
1w1d: MRT: Update (*, 239.255.1.1), RPF Null, PC 0x80718A1C
1w1d: PIM: Send v2 Hello on FastEthernet0/0
(1) 192.168.3.1(RouterB)にGraftメッセージ(再接続要求)を送信
(2) 192.168.3.1(RouterB)から,Graftメッセージを受け取ったことを示すGraft-Ackメッセージを受信
  これらは,上図Cの動作です

このときのRouterCのマルチキャスト・ルーティング・テーブルは以下です。
RouterC#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report
Outgoing interface flags: H - Hardware switched
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.255.1.1), 01:30:18/00:02:59, RP 0.0.0.0, flags: DC
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Dense, 00:01:52/00:00:00
    FastEthernet0/0, Forward/Dense, 01:30:18/00:00:00

(192.168.1.1, 239.255.1.1), 00:04:36/00:02:59, flags: CT
  Incoming interface: FastEthernet0/0, RPF nbr 192.168.3.1
  Outgoing interface list:
    FastEthernet0/1, Forward/Dense, 00:01:52/00:00:00

(*, 224.0.1.40), 16:51:37/00:00:00, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/0, Forward/Dense, 16:51:38/00:00:00
(192.168.1.1,239.255.1.1)エントリのステートが,「Prune」から「Forward」に変わりました。
これで,上図Dの動作(マルチキャスト・パケットの配信)が可能になったわけです。


RouterBの動作も見てみましょう。
RouterB#
1w1d: PIM: Received v2 Graft on FastEthernet0/1 from 192.168.3.2 ←(1)
1w1d: PIM: Join-list: (192.168.1.1/32, 239.255.1.1)
1w1d: MRT: Add/Update FastEthernet0/1/239.255.1.1 to the olist of (192.168.1.1,
239.255.1.1), Forward state
1w1d: PIM: Add FastEthernet0/1/0.0.0.0 to (192.168.1.1/32, 239.255.1.1), Forward
 state
1w1d: PIM: Send v2 Graft-Ack on FastEthernet0/1 to 192.168.3.2 ←(2)
1w1d: PIM: Building Graft message for 239.255.1.1, FastEthernet0/1: no entries
1w1d: PIM: Building Graft message for 239.255.1.1, FastEthernet0/0:
     192.168.1.1/32
1w1d: PIM: Send v2 Graft to 192.168.2.1 (FastEthernet0/0) ←(3)
1w1d: PIM: Received v2 Graft-Ack on FastEthernet0/0 from 192.168.2.1 ←(4)
1w1d:      Group 239.255.1.1:
     192.168.1.1/32
1w1d: PIM: Received v2 Hello on FastEthernet0/1 from 192.168.3.2
1w1d: MRT: Update (*, 224.0.1.40), RPF Null, PC 0x807230EC
(1) 192.168.3.2(RouterC)からGraftメッセージを受信
(2) 192.168.3.2(RouterC)にGraft-Ackメッセージを送信
(3) 192.168.2.1(RouterA)にGraftメッセージを送信
(4) 192.168.2.1(RouterA)からGraft-Ackメッセージを受信
RouterCからのGraftメッセージを上位のRouterAに伝えているのがわかります。

RouterBのルーティング・テーブルは以下です。
RouterB#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report
Outgoing interface flags: H - Hardware switched
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.255.1.1), 01:30:04/00:02:59, RP 0.0.0.0, flags: D
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Dense, 01:30:04/00:00:00
    FastEthernet0/0, Forward/Dense, 01:30:04/00:00:00

(192.168.1.1, 239.255.1.1), 00:04:22/00:03:29, flags: T
  Incoming interface: FastEthernet0/0, RPF nbr 192.168.2.1
  Outgoing interface list:
    FastEthernet0/1, Forward/Dense, 00:01:38/00:00:00

(*, 224.0.1.40), 16:51:31/00:00:00, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Dense, 16:51:33/00:00:00
    FastEthernet0/0, Forward/Dense, 16:51:33/00:00:00
(192.168.1.1,239.255.1.1)エントリのステートが,「Prune」から「Forward」に変わりました。
これでRouterBも,上図Dの動作(マルチキャスト・パケットの配信)が可能になりました。


最後に,RouterAの動作を確認しましょう。
RouterA#
1w1d: MRT: Update (*, 224.0.1.40), RPF Null, PC 0x8071C874
1w1d: PIM: Received v2 Graft on FastEthernet0/1 from 192.168.2.2 ←(1)
1w1d: PIM: Join-list: (192.168.1.1/32, 239.255.1.1)
1w1d: MRT: Add/Update FastEthernet0/1/239.255.1.1 to the olist of (192.168.1.1,
239.255.1.1), Forward state
1w1d: PIM: Add FastEthernet0/1/0.0.0.0 to (192.168.1.1/32, 239.255.1.1), Forward
 state
1w1d: PIM: Send v2 Graft-Ack on FastEthernet0/1 to 192.168.2.2 ←(2)
1w1d: PIM: Building Graft message for 239.255.1.1, FastEthernet0/1: no entries
1w1d: MRT: Update (*, 224.0.1.40), RPF Null, PC 0x8071C874
(1) 192.168.2.2(RouterB)からGraftメッセージを受信
(2) 192.168.2.2(RouterB)にGraft-Ackメッセージを送信
RouterCが出したGraftメッセージが,最上位のRouterAまで届いたことがわかります。

RouterAのマルチキャスト・ルーティング・テーブルは以下になります。
RouterA#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report
Outgoing interface flags: H - Hardware switched
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.255.1.1), 01:29:42/00:02:59, RP 0.0.0.0, flags: D
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Dense, 01:29:42/00:00:00

(192.168.1.1, 239.255.1.1), 00:03:59/00:03:29, flags: T
  Incoming interface: FastEthernet0/0, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Dense, 00:01:14/00:00:00

(*, 224.0.1.40), 16:51:14/00:00:00, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Dense, 16:51:15/00:00:00
    FastEthernet0/0, Forward/Dense, 16:51:15/00:00:00
(192.168.1.1,239.255.1.1)エントリのステートが,「Prune」から「Forward」に変わりました。
これですべてのルーターで,上図Dの動作(マルチキャスト・パケットの配信)が可能になりました。


●IPマルチキャスト テクノロジーの概要
http://www.cisco.com/web/JP/product/hs/ios/multicast/tech/mcst_ovr.html
●マルチキャスト クイックスタート コンフィギュレーション ガイド
http://www.cisco.com/web/JP/product/hs/ios/multicast/tech/mqs_cg.html

マルチキャスト・ラボ
PIM-DM(デンス・モード)
PIM-SM(スパース・モード)
Auto-RP
Bootstrap Router

GREトンネルを使ってマルチキャストを流す