Auto-RP
・Auto-RP機能を使って,自動でRP(ランデブー・ポイント)を設定する
・ルーターが自動でRPを設定していることを確認する
ネットワーク構成(画像を別ウインドウで表示)
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
 ip pim sparse-dense-mode ←RPマッピングエージェントとなるLo0でPIM-SDMを有効にする
!
interface FastEthernet0/0
 ip address 192.168.1.2 255.255.255.0
 ip pim sparse-dense-mode ←このインタフェースでPIM-SDMを有効にする
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 192.168.2.1 255.255.255.0
 ip pim sparse-dense-mode ←このインタフェースでPIM-SDMを有効にする
 duplex auto
 speed auto
!
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
!
ip pim send-rp-discovery Loopback0 scope 9 ←Lo0をRPマッピングエージェントにする
!
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
 ip pim sparse-dense-mode ←RP候補となるLo0でPIM-SDMを有効にする
!
interface FastEthernet0/0
 ip address 192.168.2.2 255.255.255.0
 ip pim sparse-dense-mode ←このインタフェースでPIM-SDMを有効にする
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 192.168.3.1 255.255.255.0
 ip pim sparse-dense-mode ←このインタフェースでPIM-SDMを有効にする
 duplex auto
 speed auto
!
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
!
ip pim send-rp-announce Loopback0 scope 9 ←Lo0をRP候補にする
!
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 sparse-dense-mode ←このインタフェースでPIM-SDMを有効にする
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 192.168.4.1 255.255.255.0
 ip pim sparse-dense-mode ←このインタフェースでPIM-SDMを有効にする
 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
確認
PIM-SMを使う際の設定に欠かせないのがRP(ランデブー・ポイント)の設定です。
ただ,ルーターの台数が多くなってきたりすると,この設定が手間になります。
そこで,手動で設定する方法だけでなく,自動でRPを設定する「Auto-RP」という機能があります。

●Auto-RPとは?
Auto-RPは,PIM-SMにおいて,RPを自動で設定する方法です。
マルチキャスト・ネットワーク内のルーターのどれかに,以下の二つの役割を持たせます。

■RP候補
「自分がRPになりたい」というメッセージ(PIMのRP announce)をRPマッピング・エージェントに対して送るルーター。224.0.1.39というあて先に対して,PIM-SDM(スパース・デンスモード)のインターフェースからPIM-DMを使って転送される

■マッピング・エージェント
RP候補のRP announceメッセージを受け取って,ネットワーク内のルーターに通知(RP discovery)するルーター。224.0.1.40というあて先に対して,PIM-SDM(スパース・デンスモード)のインターフェースからPIM-DMを使って転送される

PIMのSDM(スパース・デンスモード)は,ネットワーク内にRPがあるときはSM(スパースモード)で動作し,RPがないときはDM(デンスモード)で動作するモードです。
Auto-RPでは,RPを決めるためにDMのしくみを使い,RPが決まったらSMでデータを配信する,という方法をとります。
そのためAuto-RPでは,Loopbackインタフェースを含む各インタフェースを必ずSDMにしておきます。


●設定の確認
Auto-RPの設定を確認してみましょう。

まず,RouterBをRP候補にする設定です。
ip pim send-rp-announceコマンドを入力して,Loopback0インタフェースをRP候補にしましょう。
RouterB(config)#ip pim send-rp-announce loopback 0 scope 9
Must first configure PIM mode on the interface: Loopback0
エラー・メッセージが出ました。
「最初にLoopback0インタフェースでPIMをオンにしなければならない」とあります。
このようにAuto-RPでは,LoopbackインタフェースでもPIMを有効にしておく必要があります。
では,Loopback0インタフェースでPIM-SDMを有効にした後に,コマンドを入れます。
RouterB(config)#interface loopback 0
RouterB(config-if)#ip pim sparse-dense-mode
RouterB(config-if)#exit
RouterB(config)#ip pim send-rp-announce loopback 0 scope 9
無事にコマンドが入りました。
ちなみにパラメータの「scope 9」というのは,アナウンス・メッセージのTTL値です。

次に,RouterAをマッピング・エージェントにする設定を見てみましょう。
ip pim send-rp-discoveryコマンドを入力して,Loopback0インタフェースをマッピング・エージェントにします。
RouterA(config)#ip pim send-rp-discovery loopback 0 scope 9
Non IP or PIM interface ignored in accepted command.
こちらもエラー・メッセージが出ました。
「PIMインタフェースでないので,コマンドは無視されました」というメッセージです。
これは,RP候補の設定と同じく,マッピング・エージェントのインタフェースでもPIM-SDMが有効である必要があるからです。
こちらも,Loopback0インタフェースでPIM-SDMを有効にした後に,コマンドを入れます。
RouterA(config)#interface loopback 0
RouterA(config-if)#ip pim sparse-dense-mode
RouterA(config-if)#exit
RouterA(config)#ip pim send-rp-discovery loopback 0 scope 9
無事に入りました。
これで設定は完了です。


●動作の確認
うまく動作しているなら,各ルーターはRouterBをRPとして設定しているはずです。
確認してみましょう。

RouterCのRPを確認してみましょう。
最初に,show ip pim autorpコマンドを使って,Auto-RP機能が有効になっているか見てみます。
RouterC#show ip pim autorp
AutoRP Global Information:
  AutoRP is enabled.
「Auto RP is enabled.」と表示され,AutoRPが有効になっていることがわかります。
では,RPを確認してみましょう。
RouterC#show ip pim rp mapping
PIM Group-to-RP Mappings

Group(s) 224.0.0.0/4
  RP 172.16.255.2 (?), v2v1
    Info source: 172.16.255.1 (?), elected via Auto-RP
         Uptime: 00:02:54, expires: 00:02:06
「RP 172.16.255.2」とあり,RouterBのLoopback0のアドレスをRPとして認識していることがわかります。
情報元(Info source)は,マッピング・エージェントである172.16.255.1(RouterA)になっているのも確認できます。

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

(*, 224.0.1.39), 00:00:58/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/Sparse-Dense, 00:00:58/00:00:00

(172.16.255.2, 224.0.1.39), 00:00:58/00:02:01, flags: PT
  Incoming interface: FastEthernet0/0, RPF nbr 192.168.3.1
  Outgoing interface list: Null

(*, 224.0.1.40), 00:01:03/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/Sparse-Dense, 00:01:03/00:00:00

(172.16.255.1, 224.0.1.40), 00:00:05/00:02:54, flags: PCLT
  Incoming interface: FastEthernet0/0, RPF nbr 192.168.3.1
  Outgoing interface list: Null
赤字のエントリが,172.16.255.2(RouterB)が出したRP announceメッセージのエントリです。
青字のエントリが,172.16.255.1(RouterA)が出したRP discoveryメッセージのエントリです。
この二つの情報が,PIM-DMのしくみを使って,ネットワーク内の全ルーターに行き渡り,その結果,RouterCにRPのアドレスが登録されたわけです。


≪サーバーが配信したマルチキャスト・パケットを端末で受信させてみる≫
この状態で,配信サーバーからマルチキャスト・パケットを配信し,受信端末に受信させてみましょう。
受信端末の画面に動画が再生されるはずです。
このときの,マルチキャスト・ルーティング・テーブルを見てみましょう。
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:09:43/00:02:59, RP 172.16.255.2, flags: SJC
  Incoming interface: FastEthernet0/0, RPF nbr 192.168.3.1
  Outgoing interface list:
    FastEthernet0/1, Forward/Sparse-Dense, 00:06:43/00:02:36

(192.168.1.1, 239.255.1.1), 00:09:42/00:02:59, flags: CJT
  Incoming interface: FastEthernet0/0, RPF nbr 192.168.3.1
  Outgoing interface list:
    FastEthernet0/1, Forward/Sparse-Dense, 00:06:43/00:02:36

(*, 224.0.1.39), 00:21:39/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/Sparse-Dense, 00:21:40/00:00:00

(172.16.255.2, 224.0.1.39), 00:01:41/00:01:18, flags: PT
  Incoming interface: FastEthernet0/0, RPF nbr 192.168.3.1
  Outgoing interface list: Null

(*, 224.0.1.40), 1d16h/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/Sparse-Dense, 1d16h/00:00:00

(172.16.255.1, 224.0.1.40), 00:17:41/00:02:14, flags: PCLT
  Incoming interface: FastEthernet0/0, RPF nbr 192.168.3.1
  Outgoing interface list: Null
239.255.1.1グループのエントリができました(上の赤字)。
RPのアドレスは,172.16.255.2となっており,RouterBをRPとして認識しているのがわかります。
以降は,通常のPIM-SMの動作になります。


●debugで動作を細かく確認
debugコマンドを使って,Auto-RPのやりとりを確認してみましょう。

まずは,RP候補のRouterBです。
RouterB#debug ip pim auto-rp
PIM Auto-RP debugging is on
RouterB#
1w2d: Auto-RP: Build RP-Announce for 172.16.255.2, PIMv2/v1, ttl 9, ht 181
1w2d: Auto-RP:  Build announce entry for (224.0.0.0/4)
1w2d: Auto-RP: Send RP-Announce packet on FastEthernet0/0 ←(1)
1w2d: Auto-RP: Send RP-Announce packet on FastEthernet0/1
1w2d: Auto-RP: Send RP-Announce packet on Loopback0
1w2d: Auto-RP: Received RP-discovery, from 172.16.255.1, RP_cnt 1, ht 181 ←(2)
1w2d: Auto-RP: Update (224.0.0.0/4, RP:172.16.255.2), PIMv2 v1
1w2d: Auto-RP: Received RP-discovery, from 172.16.255.1, RP_cnt 1, ht 181
1w2d: Auto-RP: Update (224.0.0.0/4, RP:172.16.255.2), PIMv2 v1
(1) 自分がRP候補なので,RPannounceメッセージをすべてのインタフェース(Fa0/0,Fa0/1,lo0)に出しています。
(2) その後,172.26.255.1(RouterA)からRPdiscoveryメッセージが返ってきています。
  また,RPは,172.16.255.2(自分)であることもわかります。

次に,マッピング・エージェントであるRouterAを見てみます。
RouterA#debug ip pim auto-rp
PIM Auto-RP debugging is on
RouterA#
1w2d: Auto-RP: Received RP-announce, from 172.16.255.2, RP_cnt 1, ht 181 ←(1)
1w2d: Auto-RP: Update (224.0.0.0/4, RP:172.16.255.2), PIMv2 v1
1w2d: Auto-RP: Received RP-announce, from 172.16.255.2, RP_cnt 1, ht 181
1w2d: Auto-RP: Update (224.0.0.0/4, RP:172.16.255.2), PIMv2 v1
1w2d: Auto-RP: Received RP-announce, from 172.16.255.2, RP_cnt 1, ht 181
1w2d: Auto-RP: Update (224.0.0.0/4, RP:172.16.255.2), PIMv2 v1
1w2d: Auto-RP: Received RP-announce, from 172.16.255.2, RP_cnt 1, ht 181
1w2d: Auto-RP: Update (224.0.0.0/4, RP:172.16.255.2), PIMv2 v1
1w2d: Auto-RP: Build RP-Discovery packet
1w2d: Auto-RP:  Build mapping (224.0.0.0/4, RP:172.16.255.2), PIMv2 v1,
1w2d: Auto-RP: Send RP-discovery packet on FastEthernet0/0 (1 RP entries) ←(2)
1w2d: Auto-RP: Send RP-discovery packet on FastEthernet0/1 (1 RP entries)
1w2d: Auto-RP: Send RP-discovery packet on Loopback0 (1 RP entries)
1w2d: Auto-RP: Received RP-discovery, from ourselves (172.16.255.1), ignored
(1) 172.16.255.2(RouterB)から,「RPは自分だ」という内容のRPannounceを受け取っています。
(2) その後,RPdiscoveryメッセージをすべてのインタフェース(Fa0/0,Fa0/1,lo0)に出しています。
  このように,RouterAがマッピング・エージェントの役割を果たしているのがわかります。

最後に,RouterCを見てみましょう。
RouterC#debug ip pim auto-rp
PIM Auto-RP debugging is on
RouterC#
1w2d: Auto-RP: Received RP-discovery, from 172.16.255.1, RP_cnt 1, ht 181
1w2d: Auto-RP: Update (224.0.0.0/4, RP:172.16.255.2), PIMv2 v1
1w2d: Auto-RP: Received RP-discovery, from 172.16.255.1, RP_cnt 1, ht 181
1w2d: Auto-RP: Update (224.0.0.0/4, RP:172.16.255.2), PIMv2 v1
1w2d: Auto-RP: Received RP-discovery, from 172.16.255.1, RP_cnt 1, ht 181
1w2d: Auto-RP: Update (224.0.0.0/4, RP:172.16.255.2), PIMv2 v1
1w2d: Auto-RP: Received RP-discovery, from 172.16.255.1, RP_cnt 1, ht 181
1w2d: Auto-RP: Update (224.0.0.0/4, RP:172.16.255.2), PIMv2 v1
1w2d: Auto-RP: Received RP-discovery, from 172.16.255.1, RP_cnt 1, ht 181
1w2d: Auto-RP: Update (224.0.0.0/4, RP:172.16.255.2), PIMv2 v1
RPdiscoveryメッセージを172.16.255.1(RouterA)から受信しています。
RPのアドレスは,172.16.255.2(RouterB)になっているのも確認できます。

RPannounceとRPdiscoveryという二つのマルチキャスト・パケットを使って,マルチキャスト・ネットワーク内のルーターにRP情報を配信していることが確認できました。

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

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