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情報を配信していることが確認できました。 |