Cisco IOS マルチキャスト PIM Bidirectional Modeの設定方法

スポンサーリンク

通常、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

設定全文は下記ファイルです。詳細設定は下記を参照ください。

R1
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
no ip domain lookup
!
!
ip multicast-routing 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.1.1.1 255.255.255.0
 ip pim sparse-mode
!
interface Ethernet0/0
 ip address 192.168.12.1 255.255.255.0
 ip pim sparse-mode
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.13.1 255.255.255.0
 ip pim sparse-mode
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router eigrp 10
 network 0.0.0.0
 no auto-summary
!
ip http server
ip forward-protocol nd
!
!
ip pim autorp listener
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R2
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
no ip domain lookup
!
!
ip multicast-routing 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.255
 ip pim sparse-mode
!
interface Ethernet0/0
 ip address 192.168.12.2 255.255.255.0
 ip pim sparse-mode
 half-duplex
!
interface Ethernet0/1
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/2
 ip address 192.168.23.2 255.255.255.0
 ip pim sparse-mode
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
!
ip http server
ip forward-protocol nd
!
!
ip pim autorp listener
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R3
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R3
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
no ip domain lookup
!
!
ip multicast-routing 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.3.3.3 255.255.255.255
 ip pim sparse-mode
!
interface Ethernet0/0
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.13.3 255.255.255.0
 ip pim sparse-mode
 half-duplex
!
interface Ethernet0/2
 ip address 192.168.23.3 255.255.255.0
 ip pim sparse-mode
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
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 http server
ip forward-protocol nd
!
!
ip pim autorp listener
ip pim send-rp-announce Loopback0 scope 1 interval 30
ip pim send-rp-discovery Loopback0 scope 2 interval 30
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
Host12
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname Host12
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Ethernet0/0
 ip address 192.168.12.112 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
ip http server
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 192.168.12.2
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end

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#
タイトルとURLをコピーしました