通常、PIM sparse modeは共有ツリーと送信元ツリーで作成されます。しかし、sparse modeには、送信元からRPまでの間で共有ツリーを作成するbidirectional modeという特殊な設定も存在します。
概要
Bidirectional PIMとは特殊なsparse modeで、RPからマルチキャストレシーバまでのshared treeを作成するのはもちろんのこと、マルチキャストソースからRPまでもshared treeを作成します。
マルチキャストソースが多くなると(S, G)エントリの数が増え、CPU・メモリなどのリソースを枯渇させるだけでなく、マルチキャストルーティングが複雑になり運用負荷が増大してしまいます。このようなマルチキャストソースが多いMany to Manyの環境に適したPIMがBidirectional PIMです。
コマンド一覧
このシナリオで重要なコマンド一覧は以下の通りです。
Router(config)# ip pim bidir-pim enable Router(config)# ip pim rp-address <addr> [ <std_acl> ] bidir Router(config)# ip pim send-rp-announce <int> scope <ttl> bidir Router(config)# ip pim rp-candidate <int> bidir
構成図
これ以降の動作確認は、以下の環境で行います。R2をRP Candidator かつ BSR Routerとして設定します。
[ip address] 192.168.13.0/24 e0/0 e0/1 .1+--------+.1 e0/1 e0/0 ┌----+ R1 +----------┐.3 +--------+.112│ +--------+ +---+----+ | Host12 +----┤ | R3 | +--------+ │ +--------+ +---+----+ └----+ R2 +----------┘.3 .2+--------+.2 e0/2 e0/0 e0/2 e0/1 192.168.12.0/24 192.168.24.0/24 R1 Loopback0 R2 Loopback0 R3 Loopback0 10.1.1.1/32 10.2.2.2/32 10.3.3.3/32 [multicast domain] 192.168.13.0/24 e0/0 e0/1 .1+--------+.1 Mapping Agent e0/0 ┌----+ R1 +----------┐RP Candidator +--------+.112│ +--------+ +---+----+ | Host12 +----┤ | R3 | +--------+ │ +--------+ +---+----+ └----+ R2 +----------┘.3 .2+--------+.2 e0/2 e0/0 e0/2 e0/1 192.168.12.0/24 192.168.24.0/24 [eigrp domain] 192.168.12.0/24 192.168.13.0/24 e0/0 e0/1 .1+--------+.1 e0/1 ----+ R1 +----------┐.3 +--------+ +---+----+ | R3 | +--------+ [ospf domain] +--------+ | R3 | +--------+ +---+----+ ----+ R2 +----------┘.3 .2+--------+.2 e0/2 e0/0 e0/2 e0/1 192.168.12.0/24 192.168.24.0/24
[Host12] ip route 0.0.0.0 0.0.0.0 192.168.12.2 [R1] router eigrp 10 network 0.0.0.0 no auto-summary ! ip pim autorp listener [R2] router ospf 1 log-adjacency-changes network 0.0.0.0 255.255.255.255 area 0 ! ip pim autorp listener [R3] router eigrp 10 redistribute ospf 1 metric 1 1 1 1 1 network 10.3.3.3 0.0.0.0 network 192.168.13.3 0.0.0.0 no auto-summary ! router ospf 1 log-adjacency-changes redistribute eigrp 10 subnets network 10.3.3.3 0.0.0.0 area 0 network 192.168.23.3 0.0.0.0 area 0 ! ip pim autorp listener ip pim send-rp-announce Loopback0 scope 1 interval 30 ip pim send-rp-discovery Loopback0 scope 2 interval 30
設定全文は下記ファイルです。詳細設定は下記を参照ください。
PIM Bidirectional
仕様説明
PIM Bidirectionalを使用するためには、全ルータでPIM-Bidirを有効化します。PIM-Bidirを有効化するコマンドは以下の通りです。
Router(config)# ip pim bidir-enable
PIM Bidirectionalとして使用するRPを定義するには、通常のRPを設定するコマンドの末尾にbidirキーワードを追加して下さい。static RP, Auto RP, BSRそれぞれの設定方法は以下の通りです。
Router(config)# ip pim rp-address <addr> [ <std_acl> ] bidir Router(config)# ip pim send-rp-announce <int> scope <ttl> bidir Router(config)# ip pim rp-candidate <int> bidir
PIM Bidirectional 設定
[R1] ip pim bidir-enable [R2] ip pim bidir-enable [R3] ip pim bidir-enable ! ip pim send-rp-announce Loopback0 scope 1 interval 30 bidir ip pim send-rp-discovery Loopback0 scope 2 interval 30
BidirectionalとしてのRPが設定されているかどうか確認します。bidirectionalの場合は、show ip pim rp mappingコマンドで”bidir”と表記されています。
[R1] R1#show ip pim rp mapping PIM Group-to-RP Mappings Group(s) 224.0.0.0/4 RP 10.3.3.3 (?), v2v1, bidir Info source: 10.3.3.3 (?), elected via Auto-RP Uptime: 00:04:48, expires: 00:01:10 R1# [R2] R2#show ip pim rp mapping PIM Group-to-RP Mappings Group(s) 224.0.0.0/4 RP 10.3.3.3 (?), v2v1, bidir Info source: 10.3.3.3 (?), elected via Auto-RP Uptime: 00:04:04, expires: 00:01:24 R2# [R3] R3#show ip pim rp mapping PIM Group-to-RP Mappings This system is an RP (Auto-RP) This system is an RP-mapping agent (Loopback0) Group(s) 224.0.0.0/4 RP 10.3.3.3 (?), v2v1, bidir Info source: 10.3.3.3 (?), elected via Auto-RP Uptime: 00:04:45, expires: 00:01:08 R3#
DF (Designated Forwarder)
PIM Bidirectionalで重要な役割を果たすのがDF(Designated Forwarder)です。RPに近いinterfaceで、各リンク毎に選出されます。DF選定基準は以下の通りで、PIM dense modeにおけるAssert Winnerの考え方と同じです。
- RPに対するAD値が最も小さいルータをDFとして選出します。
- 上記が等しい場合は、RPに対するmetricが最も小さいルータをDFとして選出します。
- 上記が等しい場合は、IPアドレスが大きいルータをDFとして選出します。
例えば192.168.12.0/24のセグメントに着目すれば、見た目でRPに近いのはR1 e0/0とR2 e0/0ですが、EIGRPはOSPFよりもAD値が小さいのでR1 e0/0がDFとして選出されます。DFを図示すると以下のようになります。
[ip address] DF+--------+ ┌----+ R1 +----------┐DF +--------+ │ +--------+ +---+----+ | Host12 +----┤ | R3 | +--------+ │ +--------+ +---+----+ └----+ R2 +----------┘DF +--------+
DFを確認するには以下のコマンドを使用します。DF Winnerとなるinterfaceには*(アスタリスク)が付与されています。
[R1] R1#show ip pim interface df * implies this system is the DF Interface RP DF Winner Metric Uptime Loopback0 10.3.3.3 *10.1.1.1 409600 00:04:11 Ethernet0/0 10.3.3.3 *192.168.12.1 409600 00:04:11 Ethernet0/1 10.3.3.3 192.168.13.3 0 00:04:12 R1# [R2] R2#show ip pim interface df * implies this system is the DF Interface RP DF Winner Metric Uptime Loopback0 10.3.3.3 *10.2.2.2 11 00:04:31 Ethernet0/0 10.3.3.3 192.168.12.1 409600 00:04:31 Ethernet0/2 10.3.3.3 192.168.23.3 0 00:04:31 R2# [R3] R3#show ip pim interface df * implies this system is the DF Interface RP DF Winner Metric Uptime Loopback0 10.3.3.3 *10.3.3.3 0 00:04:31 Ethernet0/1 10.3.3.3 *192.168.13.3 0 00:04:31 Ethernet0/2 10.3.3.3 *192.168.23.3 0 00:04:31 R3#
共有ツリーの作成
動作確認のため、Host12 e0/0をマルチキャストグループに参加させます。
interface Ethernet0/0 ip igmp join-group 239.12.12.12
RPからマルチキャストレシーバまでのshared treeの作成は、通常のsparse modeと殆ど同じ動きで、(*, G) join をhop by hopでRPへ転送します。具体的には、DFとなるinterfaceでIGMP joinや(*, G) joinを受信するとRPへの(*, G) joinを送信する動作になります。
この環境では、Host1がDFとなるinterfaceでIGMP joinを受信したので、R1, R3にRPからマルチキャストレシーバまでのshared treeが作成されたはずです。shared treeが想定通りに作成された事をマルチキャストルーティングテーブルから確認します。
[R1] R1#show ip mroute 239.12.12.12 <omitted> (*, 239.12.12.12), 00:00:31/00:02:43, RP 10.3.3.3, flags: BC Bidir-Upstream: Ethernet0/1, RPF nbr 192.168.13.3 Outgoing interface list: Ethernet0/0, Forward/Sparse, 00:00:31/00:02:43 Ethernet0/1, Bidir-Upstream/Sparse, 00:00:31/00:00:00 R1# [R3] R3#show ip mroute 239.12.12.12 <omitted> (*, 239.12.12.12), 00:01:53/00:02:34, RP 10.3.3.3, flags: B Bidir-Upstream: Null, RPF nbr 0.0.0.0 Outgoing interface list: Ethernet0/1, Forward/Sparse, 00:01:53/00:02:34 R3#
パケットの転送
マルチキャストソースからRPまでのパケットの転送は、通常のsparse modeよりも簡単です。PIM BidirectionalではRPへのinterfaceからパケットを送信すると同時に(*, G)エントリを作成するだけです。R2 Loopback0からHost12 e0/0への疎通を確認します。
[R2] R2#ping 239.12.12.12 source Loopback 0 repeat 3 Type escape sequence to abort. Sending 3, 100-byte ICMP Echos to 239.12.12.12, timeout is 2 seconds: Packet sent with a source address of 10.2.2.2 . Reply to request 1 from 192.168.12.112, 8 ms Reply to request 1 from 192.168.12.112, 108 ms Reply to request 1 from 192.168.12.112, 8 ms Reply to request 2 from 192.168.12.112, 8 ms Reply to request 2 from 192.168.12.112, 128 ms Reply to request 2 from 192.168.12.112, 120 ms R2#
通常のsparase modeと異なり、source treeが作成されていない事を確認します。
[R2] R2#show ip mroute 239.12.12.12 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, Z - Multicast Tunnel, z - MDT-data group sender, Y - Joined MDT-data group, y - Sending to MDT-data group Outgoing interface flags: H - Hardware switched, A - Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.12.12.12), 00:09:05/00:02:36, RP 10.3.3.3, flags: BP Bidir-Upstream: Ethernet0/2, RPF nbr 192.168.23.3 Outgoing interface list: Ethernet0/2, Bidir-Upstream/Sparse, 00:09:05/00:00:00 R2#