Multicast Bidirectional PIM (Bidir-PIM)を設定してみた
Multicast Bidir-PIM を勉強しなおしたので、Virl を使用して検証してみました。
構成
RT1 から RT4 で Bidir-PIM を設定し、Multicast を転送できるようにしました。通信の確認用に Client として L3 switch を接続しています。
Multicast 以外の設定
Client が接続している RT の Interface には IP .254 を設定し、Client 側では .1 を設定しています。Client の Default GW は接続している RTを指定しています。
Client1#show ip int brief gi 0/1 Interface IP-Address OK? Method Status Protocol GigabitEthernet0/1 172.16.1.1 YES manual up up Client1# Client1#show ip route S* 0.0.0.0/0 [1/0] via 172.16.1.254 172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks C 172.16.1.0/24 is directly connected, GigabitEthernet0/1 L 17
各 RT は OSPF でルートを学習しているので、すべての Device 間で IP の疎通ができる状態になっています。
RT1#show ip route Gateway of last resort is not set 10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks C 10.0.0.20/30 is directly connected, GigabitEthernet2 L 10.0.0.21/32 is directly connected, GigabitEthernet2 C 10.0.0.24/30 is directly connected, GigabitEthernet3 L 10.0.0.25/32 is directly connected, GigabitEthernet3 O 10.0.0.28/30 [110/2] via 10.0.0.22, 00:53:06, GigabitEthernet2 O 10.0.0.32/30 [110/2] via 10.0.0.26, 00:53:06, GigabitEthernet3 172.16.0.0/16 is variably subnetted, 5 subnets, 2 masks C 172.16.1.0/24 is directly connected, GigabitEthernet4 L 172.16.1.254/32 is directly connected, GigabitEthernet4 O 172.16.2.0/24 [110/2] via 10.0.0.22, 00:42:35, GigabitEthernet2 O 172.16.3.0/24 [110/2] via 10.0.0.26, 00:42:35, GigabitEthernet3 O 172.16.4.0/24 [110/3] via 10.0.0.26, 00:42:34, GigabitEthernet3 [110/3] via 10.0.0.22, 00:42:34, GigabitEthernet2 192.168.0.0/32 is subnetted, 4 subnets C 192.168.0.1 is directly connected, Loopback0 O 192.168.0.2 [110/2] via 10.0.0.22, 00:53:35, GigabitEthernet2 O 192.168.0.3 [110/2] via 10.0.0.26, 00:53:32, GigabitEthernet3 O 192.168.0.4 [110/3] via 10.0.0.26, 00:53:01, GigabitEthernet3 [110/3] via 10.0.0.22, 00:53:01, GigabitEthernet2 RT1# RT1# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 192.168.0.3 1 FULL/DR 00:00:39 10.0.0.26 GigabitEthernet3 192.168.0.2 1 FULL/DR 00:00:35 10.0.0.22 GigabitEthernet2 RT1#
Bidir-PIM の設定
すべての RT で同じ設定を投入しています。
Multicast と Bidir-PIM の有効化
デフォルトでは無効なので、有効にする必要があります。
ip multicast-routing distributed ip pim bidir-enable
Randezvous Point (RP) の設定
今回は 225.0.0.0/24 と 225.0.1.0/24 の Multicast 転送に対して、別々の RP を static で設定しました。RPの対応は以下のようにしました。
- 225.0.0.0/24 : RT1 Lo0 192.168.0.1
- 225.0.1.0/24 : RT2 Lo0 192.168.0.2
Multicast アドレスを指定するための access-list (ACL) を作成します。
access-list 1 permit 225.0.0.0 0.0.0.255 access-list 2 permit 225.0.1.0 0.0.0.255
作成した ACL を使用して、RP を設定します。
ip pim rp-address 192.168.0.1 1 bidir ip pim rp-address 192.168.0.2 2 bidir
インターフェースで pim sparse-mode の有効化
Multicast を送受信するインターフェースで pim sparse-mode を有効にします。
RT1#show run ... interface Loopback0 description Loopback ip address 192.168.0.1 255.255.255.255 ip pim sparse-mode interface GigabitEthernet2 description to RT2 ip address 10.0.0.21 255.255.255.252 ip pim sparse-mode ip ospf cost 1 ! interface GigabitEthernet3 description to RT3 ip address 10.0.0.25 255.255.255.252 ip pim sparse-mode ip ospf cost 1 ! interface GigabitEthernet4 description to Client1 ip address 172.16.1.254 255.255.255.0 ip pim sparse-mode !
これで RT の設定は完了です。
RT のルーティングテーブルを確認
Multicast の通信を行う前に、RT のルーティングテーブルを確認します。この時点では、Multicast が流れていないので (*,G) エントリーは RP を設定した 225.0.0.0/24 と 225.0.1.0/24 しかありません。Bidir-Upstream に RP に一番近いインターフェースが出現します。
※ 224.0.1.40 は Cisco 機器で Auto RP を設定するために使用さるアドレスで、Multicast を有効にすると自動的にルーティングテーブルに乗ってきます。今回は Static RP で設定しているため、以後省略します。
RT1#show ip mroute (*,225.0.1.0/24), 01:09:26/-, RP 192.168.0.2, flags: B Bidir-Upstream: GigabitEthernet2, RPF nbr: 10.0.0.22 Incoming interface list: GigabitEthernet4, Accepting/Sparse GigabitEthernet3, Accepting/Sparse Loopback0, Accepting/Sparse GigabitEthernet2, Accepting/Sparse (*,225.0.0.0/24), 01:09:26/-, RP 192.168.0.1, flags: B Bidir-Upstream: Loopback0, RPF nbr: 192.168.0.1 Incoming interface list: GigabitEthernet4, Accepting/Sparse GigabitEthernet3, Accepting/Sparse GigabitEthernet2, Accepting/Sparse Loopback0, Accepting/Sparse (*, 224.0.1.40), 01:09:26/00:02:35, RP 0.0.0.0, flags: DPL Incoming interface: Null, RPF nbr 0.0.0.0 Outgoing interface list: Null RT1#
Multicast の通信確認 (Client3 から Client2 )
Client2 で 225.0.0.1 の IGMP グループに join します。
Client2#show run int gi 0/1 interface GigabitEthernet0/1 description to RT2 no switchport ip address 172.16.2.1 255.255.255.0 ip igmp join-group 225.0.0.1 end
IGMP Join メッセージが 225.0.0.1 の RP である RT1 に送信され、RT1 のルーティングテーブルに (*,225.0.0.1) のエントリが出現します。
RT1#show ip mroute 225.0.0.1 (*, 225.0.0.1), 00:05:40/00:02:46, RP 192.168.0.1, flags: B Bidir-Upstream: Null, RPF nbr 0.0.0.0 Outgoing interface list: GigabitEthernet2, Forward/Sparse, 00:05:40/00:02:46 RT1#
このとき、IGMP Join メッセージが通る経路は RT2 -> RT1 となるので、RT2 にも (*,225.0.0.1) エントリが作成されます。また、IGMP Join メッセージは RT3 と RT4 を経由しないので、この2台のデバイス上ではエントリが作成されません。
RT2#show ip mroute 225.0.0.1 (*, 225.0.0.1), 00:08:02/00:02:38, RP 192.168.0.1, flags: BC Bidir-Upstream: GigabitEthernet2, RPF nbr 10.0.0.21 Outgoing interface list: GigabitEthernet4, Forward/Sparse, 00:08:02/00:02:38 GigabitEthernet2, Bidir-Upstream/Sparse, 00:08:02/stopped RT2# RT3#show ip mroute 225.0.0.1 Group 225.0.0.1 not found RT3# RT4#show ip mroute 225.0.0.1 Group 225.0.0.1 not found RT4#
Client3 から 225.0.0.1 に対して ping を送信すると成功することが確認できます。
Client3#ping 225.0.0.1 Type escape sequence to abort. Sending 1, 100-byte ICMP Echos to 225.0.0.1, timeout is 2 seconds: Reply to request 0 from 172.16.2.1, 6 ms Client3#
このときの通信経路は RT3 -> RT1 -> RT2 となるので、ルーティングテーブルを見ながら確認していきます。
RT3 は Gi3 から 225.0.0.1 宛てのパケットを受信すると、Bidir-Upstream: GigabitEthernet2 を使用して RP 向けてパケットを転送します。
RT3#show ip mroute (*,225.0.1.0/24), 01:39:03/-, RP 192.168.0.2, flags: B Bidir-Upstream: GigabitEthernet3, RPF nbr: 10.0.0.34 Incoming interface list: GigabitEthernet4, Accepting/Sparse Loopback0, Accepting/Sparse GigabitEthernet3, Accepting/Sparse (*,225.0.0.0/24), 01:39:03/-, RP 192.168.0.1, flags: B !このエントリが使用される Bidir-Upstream: GigabitEthernet2, RPF nbr: 10.0.0.25 Incoming interface list: GigabitEthernet4, Accepting/Sparse GigabitEthernet3, Accepting/Sparse Loopback0, Accepting/Sparse GigabitEthernet2, Accepting/Sparse RT3#
RP である RT1 は、Gi 0/2 からパケットを転送します。
RT1#show ip mroute (*,225.0.1.0/24), 01:43:16/-, RP 192.168.0.2, flags: B Bidir-Upstream: GigabitEthernet2, RPF nbr: 10.0.0.22 Incoming interface list: GigabitEthernet4, Accepting/Sparse GigabitEthernet3, Accepting/Sparse Loopback0, Accepting/Sparse GigabitEthernet2, Accepting/Sparse (*,225.0.0.0/24), 01:43:16/-, RP 192.168.0.1, flags: B Bidir-Upstream: Loopback0, RPF nbr: 192.168.0.1 Incoming interface list: GigabitEthernet4, Accepting/Sparse GigabitEthernet3, Accepting/Sparse GigabitEthernet2, Accepting/Sparse Loopback0, Accepting/Sparse (*, 225.0.0.1), 00:22:59/00:03:07, RP 192.168.0.1, flags: B !このエントリが使用される Bidir-Upstream: Null, RPF nbr 0.0.0.0 Outgoing interface list: GigabitEthernet2, Forward/Sparse, 00:22:59/00:03:07 RT1#
最後に、RT2 は Gi2 で受信したパケットを Gi4 から Client2 に対して転送します。
RT2#show ip mroute (*,225.0.1.0/24), 01:48:12/-, RP 192.168.0.2, flags: B Bidir-Upstream: Loopback0, RPF nbr: 192.168.0.2 Incoming interface list: GigabitEthernet4, Accepting/Sparse GigabitEthernet3, Accepting/Sparse GigabitEthernet2, Accepting/Sparse Loopback0, Accepting/Sparse (*,225.0.0.0/24), 01:48:12/-, RP 192.168.0.1, flags: B Bidir-Upstream: GigabitEthernet2, RPF nbr: 10.0.0.21 Incoming interface list: GigabitEthernet4, Accepting/Sparse GigabitEthernet3, Accepting/Sparse Loopback0, Accepting/Sparse GigabitEthernet2, Accepting/Sparse (*, 225.0.0.1), 00:27:55/00:02:50, RP 192.168.0.1, flags: BC !このエントリが使用される Bidir-Upstream: GigabitEthernet2, RPF nbr 10.0.0.21 Outgoing interface list: GigabitEthernet4, Forward/Sparse, 00:27:55/00:02:50 GigabitEthernet2, Bidir-Upstream/Sparse, 00:27:55/stopped
Client2 から Client3 への通信(ICMP echo reply) は Multicast ではなく Unicast になります。