Cisco IOS マルチキャスト PIM sparse mode 送信元ツリー(Source Tree)の設定方法

スポンサーリンク

PIM Sparse modeはRPと呼ばれる待ち合わせ場所が存在します。RPとは共有ツリーと送信元ツリーがぶつかる場所です。ここでは、送信元, RP間の通信経路である送信元ツリーについて考察します。

概要

source tree 概要

以下の構成を例に挙げて、souce tree形成の概要を説明します。Host 1がマルチキャストレソースで、R3がRPです。

                                                                 RP
 +--------+          +--------+          +--------+          +--------+
 | Host 1 +----------+   R1   +----------+   R2   +----------+   R3  | 
 +--------+          +--------+          +--------+          +--------+
           --------->          ------------------------------>
        multicast packet               register message

この時点でsource treeは存在しないため、source treeに基づく転送はできません。そこで、ファーストホップルータ(R1)は受信したパケットを宛先アドレスをRP(R3)とするユニキャストでカプセル化して転送します。このカプセル化されたパケットは、PIM register messageと呼ばれRPにマルチキャストソースが現れた旨を伝える役割もあります。

PIM register messageをキャプチャした結果は以下の通りです。カプセル外側の宛先アドレスがユニキャストで、カプセル内側の宛先アドレスがマルチキャストである事が分かります。

Ethernet II, Src: cc:01:0c:70:00:01 (cc:01:0c:70:00:01), Dst: cc:03:14:9c:00:01 (cc:03:14:9c:00:01)
Internet Protocol Version 4, Src: 192.168.13.1 (192.168.13.1), Dst: 10.5.5.5 (10.5.5.5)
Protocol Independent Multicast
    0010 .... = Version: 2
    .... 0001 = Type: Register (1)
    Reserved byte(s): 00
    Checksum: 0xdeff [correct]
    PIM options
        Flags: 0x00000000
            0... .... .... .... .... .... .... .... = Not border
            .0.. .... .... .... .... .... .... .... = Not Null-Register
        Internet Protocol Version 4, Src: 192.168.12.112 (192.168.12.112), Dst: 239.1.1.1 (239.1.1.1)
        Internet Control Message Protocol
                                                                 RP
 +--------+          +--------+          +--------+          +--------+
 | Host 1 +----------+   R1   +----------+   R2   +----------+   R3  | 
 +--------+          +--------+          +--------+          +--------+
                              <---------          <---------
                              (S, G) join         (S, G) join

RPであるR3はマルチキャストソースに向けてPIM (S, G) joinを転送します。このメッセージによってsource treeが形成されます。

PIM (S, G) joinをキャプチャした結果は以下の通りです。マルチキャストソースとマルチキャストグループのそれぞれのアドレスが含まれている事が読み取れます。

Ethernet II, Src: cc:04:14:9c:00:01 (cc:04:14:9c:00:01), Dst: IPv4mcast_00:00:0d (01:00:5e:00:00:0d)
Internet Protocol Version 4, Src: 192.168.24.4 (192.168.24.4), Dst: 224.0.0.13 (224.0.0.13)
Protocol Independent Multicast
    0010 .... = Version: 2
    .... 0011 = Type: Join/Prune (3)
    Reserved byte(s): 00
    Checksum: 0x3f25 [correct]
    PIM options
        Upstream-neighbor: 192.168.24.2
        Reserved byte(s): 00
        Num Groups: 1
        Holdtime: 210s 
        Group 0: 239.1.1.1/32
            Num Joins: 1
                IP address: 192.168.12.112/32 (S)
            Num Prunes: 0
                                                                 RP
 +--------+          +--------+          +--------+          +--------+
 | Host 1 +----------+   R1   +----------+   R2   +----------+   R3  | 
 +--------+          +--------+          +--------+          +--------+
                              <------------------------------
                                       register stop

source treeが完成すると、mulicast packetはsource treeに基づいて転送されます。従って、もはやregiter messageによるカプセル化は不要になります。RP(R3)はファーストホップルータ(R1)にregiter stopを送り、カプセル化が不要である旨を伝えます。

register stopをキャプチャした結果は以下の通りです。RPからファーストホップルータまでユニキャストで転送されます。

Ethernet II, Src: cc:03:14:9c:00:01 (cc:03:14:9c:00:01), Dst: cc:01:0c:70:00:01 (cc:01:0c:70:00:01)
Internet Protocol Version 4, Src: 10.5.5.5 (10.5.5.5), Dst: 192.168.13.1 (192.168.13.1)
Protocol Independent Multicast
    0010 .... = Version: 2
    .... 0010 = Type: Register-stop (2)
    Reserved byte(s): 00
    Checksum: 0x1ec4 [correct]
    PIM options
        Group: 239.1.1.1/32
        Source: 192.168.12.112

souce tree

基本設定

OSPFと同様に、PIM neighborにはDRという概念があります。DRには以下の役割がありますが、register messageを送信する役割はsource treeを理解するために非常に重要です。

  • IGMPv1における、Membership Queryの送信
    (IGMPv2はquerierの概念がありますので、DRがqueryを送信するとは限りません)
  • PIM sparse modeにおける、register messageの送信

DRとしての優先度は以下のコマンドで定義できます。OSPFと同様にpriorityが大きいルータがDRとして選出され、一方、priorityを0にしたルータはDRとして絶対に選ばれないようになります。

Router(config-if)# ip pim dr-priority <value>

動作確認

以下の構成で、R5をRPとして設定します。PIMは全てのI/Fで有効にするシンプルな構成ですが、OSPF, EIGRPの複数のルーティングドメインが存在する事に注意して下さい(再配送設定なし)。

 [ip address]
                             192.168.13.0/24     192.168.35.0/24
                   e0/0      e0/1      e0/1      e0/2
                   .1+--------+.1      .3+--------+.3          e0/2
         e0/0  ┌----+   R1   +----------+   R3   +----------┐.5
 +--------+.112│    +--------+          +--------+      +---+----+
 | Host12 +----┤                                        |   R5  | 
 +--------+    │    +--------+          +--------+      +---+----+
               └----+   R2   +----------+   R4   +----------┘.5
                   .2+--------+.2      .4+--------+.4          e0/3
                   e0/0      e0/1      e0/1      e0/3
         192.168.12.0/24     192.168.24.0/24     192.168.45.0/24

                    R1 Loopback0        R3 Loopback0    
                    10.1.1.1/32         10.3.3.3/32     R5 Loopback0
                    R2 Loopback0        R4 Loopback0    10.5.5.5/32
                    10.2.2.2/32         10.4.4.4/32


 [multicast domain]
                             192.168.13.0/24     192.168.35.0/24
                   e0/0      e0/1      e0/1      e0/2
                   .1+--------+.1      .3+--------+.3          e0/2
               ┌----+   R1   +----------+   R3   +----------┐.5
               │    +--------+          +--------+      +---+----+
             --┤                                        |   R5  | 
               │    +--------+          +--------+      +---+----+
               └----+   R2   +----------+   R4   +----------┘.5
                   .2+--------+.2      .4+--------+.4          e0/3
                   e0/0      e0/1      e0/1      e0/3
         192.168.12.0/24     192.168.24.0/24     192.168.45.0/24

 [ospf domain]
         192.168.12.0/24     192.168.13.0/24     192.168.35.0/24
                   e0/0      e0/1      e0/1      e0/2
                   .1+--------+.1      .3+--------+.3          e0/2
                 ----+   R1   +----------+   R3   +----------┐.5
                     +--------+          +--------+      +---+----+
                                                         |   R5  | 
                                                         +--------+

 [eigrp domain]
                                                         +--------+
                                                         |   R5  | 
                     +--------+          +--------+      +---+----+
                 ----+   R2   +----------+   R4   +----------┘.5
                   .2+--------+.2      .4+--------+.4          e0/3
                   e0/0      e0/1      e0/1      e0/3
        192.168.12.0/24      192.168.24.0/24     192.168.45.0/24

 [R5]
interface Loopback0
 ip pim sparse-mode
 ip igmp join-group 239.1.1.1
 ip igmp join-group 239.2.2.2
!
ip pim bsr-candidate Loopback0 0
ip pim rp-candidate Loopback0

設定全文は下記ファイルです。ルーティングなどの詳細設定は下記を参照ください。

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
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
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.255
 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 ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
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
 ip address 192.168.24.2 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
!
!
!
!
!
!
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.35.3 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
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R4
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R4
!
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.4.4.4 255.255.255.255
 ip pim sparse-mode
!
interface Ethernet0/0
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.24.4 255.255.255.0
 ip pim sparse-mode
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 ip address 192.168.45.4 255.255.255.0
 ip pim sparse-mode
 half-duplex
!
!
router eigrp 10
 network 0.0.0.0
 no auto-summary
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R5
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R5
!
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.5.5.5 255.255.255.255
 ip pim sparse-mode
 ip igmp join-group 239.1.1.1
 ip igmp join-group 239.2.2.2
!
interface Ethernet0/0
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/1
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/2
 ip address 192.168.35.5 255.255.255.0
 ip pim sparse-mode
 half-duplex
!
interface Ethernet0/3
 ip address 192.168.45.5 255.255.255.0
 ip pim sparse-mode
 half-duplex
!
!
router eigrp 10
 network 10.5.5.5 0.0.0.0
 network 192.168.45.5 0.0.0.0
 no auto-summary
!
router ospf 1
 log-adjacency-changes
 network 10.5.5.5 0.0.0.0 area 0
 network 192.168.35.5 0.0.0.0 area 0
!
ip http server
ip forward-protocol nd
!
!
ip pim bsr-candidate Loopback0 0
ip pim rp-candidate Loopback0
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end

DR 確認

DRはregister messageを送信する役割を担っています。この構成図の場合、Host12からのマルチキャストパケットはR1, R2の両方が受信しますが、register messageを送信するのはDRであるルータのみです。

DRは以下のコマンドで確認する事ができます。DRの欄に192.168.12.2と記載されている事から、R2がDRとして選ばれた事が分かります。

R1#show ip pim interface

Address          Interface                Ver/   Nbr    Query  DR     DR
                                          Mode   Count  Intvl  Prior
10.1.1.1         Loopback0                v2/S   0      30     1      10.1.1.1
192.168.12.1     Ethernet0/0              v2/S   1      30     1      192.168.12.2
192.168.13.1     Ethernet0/1              v2/S   1      30     1      192.168.13.3
R1#

R1に以下のコマンドを入力し、DRが変更できる事を確認します。

 [R1]
interface Ethernet0/0
 ip pim dr-priority 10

R1#show ip pim interface

Address          Interface                Ver/   Nbr    Query  DR     DR
                                          Mode   Count  Intvl  Prior
10.1.1.1         Loopback0                v2/S   0      30     1      10.1.1.1
192.168.12.1     Ethernet0/0              v2/S   1      30     10     192.168.12.1
192.168.13.1     Ethernet0/1              v2/S   1      30     1      192.168.13.3
R1#

source treeの形成

Host12からR5へのpingを送信し、source treeを作成します。なお、2発目のpingに対して二重の応答があるのは、register messageによるカプセル化されたパケットと、source treeに基づく転送が行われたパケットが2重で届いてしまったためです。

Host12#ping 239.1.1.1 repeat 3

Type escape sequence to abort.
Sending 3, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:

Reply to request 0 from 192.168.35.5, 132 ms
Reply to request 1 from 192.168.35.5, 56 ms
Reply to request 1 from 192.168.45.5, 56 ms
Reply to request 2 from 192.168.45.5, 56 ms
Host12#

source tree形成の流れについて確認しましょう。Host12からのマルチキャストパケットは、R1, R2が受け取ります。R1, R2のうち、DRであるR1はRPに向かってregister messageを送信します。

register messageは以下デバッグコマンドにより確認可能です。

R1#debug ip pim
PIM debugging is on
R1#
*Mar  1 00:42:05.503: PIM(0): Check RP 10.5.5.5 into the (*, 239.1.1.1) entry
*Mar  1 00:42:05.511: PIM(0): Send v2 Register to 10.5.5.5 for 192.168.12.112, group 239.1.1.1
*Mar  1 00:42:08.575: PIM(0): Send v2 Null Register to 10.5.5.5
*Mar  1 00:42:08.623: PIM(0): Received v2 Register-Stop on Ethernet0/1 from 10.5.5.5
*Mar  1 00:42:08.627: PIM(0):   for source 0.0.0.0, group 0.0.0.0
*Mar  1 00:42:16.511: PIM(0): Send v2 Register to 10.5.5.5 for 192.168.12.112, group 239.1.1.1
*Mar  1 00:42:16.579: PIM(0): Received v2 Register-Stop on Ethernet0/1 from 10.5.5.5
*Mar  1 00:42:16.579: PIM(0):   for source 192.168.12.112, group 239.1.1.1
*Mar  1 00:42:16.583: PIM(0): Clear Registering flag to 10.5.5.5 for (192.168.12.112/32, 239.1.1.1)
*Mar  1 00:42:20.383: PIM(0): Received v2 Bootstrap on Ethernet0/1 from 192.168.13.3
*Mar  1 00:42:20.387: PIM(0): Update (224.0.0.0/4, RP:10.5.5.5), PIMv2
*Mar  1 00:42:20.399: PIM(0): Received v2 Bootstrap on Loopback0 from 10.1.1.1
*Mar  1 00:42:20.423: PIM(0): Received v2 Bootstrap on Ethernet0/0 from 192.168.12.2
R1#
                               register message
                          ------------------------------------>
                     +--------+          +--------+            
               ┌----+   R1   +----------+   R3   +----------┐
 +--------+    │    +--------+          +--------+      +---+----+
 | Host12 +----┤                                        |   R5  | 
 +--------+    │    +--------+          +--------+      +---+----+
               └----+   R2   +----------+   R4   +----------┘
                     +--------+          +--------+

register messageによって、マルチキャストソースの存在を知ったRPは、PIM (S, G) join を送信し、source treeの形成を試みます。この時、PIM (S, G) joinはルーティングテーブルに基づいて、上流(RP)から下流(マルチキャストソース)へ転送されます。

この構成の場合、OSPFよりもEIGRPの方が優先されるので、R5, R4, R2というルートで(S, G) joinが転送されます。

(S, G) joinは以下デバッグコマンドにより確認可能です。

R4#debug ip pim
PIM debugging is on
R4#
*Mar  1 00:41:59.439: PIM(0): Received v2 Join/Prune on Ethernet0/3 from 192.168.45.5, to us
*Mar  1 00:41:59.443: PIM(0): Join-list: (192.168.12.112/32, 239.1.1.1), S-bit set
*Mar  1 00:41:59.451: PIM(0): Check RP 10.5.5.5 into the (*, 239.1.1.1) entry
*Mar  1 00:41:59.455: PIM(0): Add Ethernet0/3/192.168.45.5 to (192.168.12.112, 239.1.1.1), Forward state, by PIM SG Join
*Mar  1 00:41:59.459: PIM(0): Insert (192.168.12.112,239.1.1.1) join in nbr 192.168.24.2's queue
*Mar  1 00:41:59.463: PIM(0): Building Join/Prune packet for nbr 192.168.24.2
*Mar  1 00:41:59.467: PIM(0): Adding v2 (192.168.12.112/32, 239.1.1.1), S-bit Join
*Mar  1 00:41:59.471: PIM(0): Send v2 join/prune to 192.168.24.2 (Ethernet0/1)
*Mar  1 00:42:14.147: PIM(0): Received v2 Bootstrap on Ethernet0/3 from 192.168.45.5
*Mar  1 00:42:14.151: PIM(0): Update (224.0.0.0/4, RP:10.5.5.5), PIMv2
*Mar  1 00:42:14.163: PIM(0): Received v2 Bootstrap on Loopback0 from 10.4.4.4
*Mar  1 00:42:58.475: PIM(0): Insert (192.168.12.112,239.1.1.1) join in nbr 192.168.24.2's queue
*Mar  1 00:42:58.479: PIM(0): Building Periodic (*,G) Join / (S,G,RP-bit) Prune message for 239.1.1.1
*Mar  1 00:42:58.483: PIM(0): Building Join/Prune packet for nbr 192.168.24.2
*Mar  1 00:42:58.487: PIM(0): Adding v2 (192.168.12.112/32, 239.1.1.1), S-bit Join
*Mar  1 00:42:58.491: PIM(0): Send v2 join/prune to 192.168.24.2 (Ethernet0/1)
*Mar  1 00:42:58.731: PIM(0): Received v2 Join/Prune on Ethernet0/3 from 192.168.45.5, to us
*Mar  1 00:42:58.731: PIM(0): Join-list: (192.168.12.112/32, 239.1.1.1), S-bit set
*Mar  1 00:42:58.731: PIM(0): Update Ethernet0/3/192.168.45.5 to (192.168.12.112, 239.1.1.1), Forward state, by PIM SG Join
R4#
                     +--------+          +--------+            
               ┌----+   R1   +----------+   R3   +----------┐
 +--------+    │    +--------+          +--------+      +---+----+
 | Host12 +----┤                                        |   R5  | 
 +--------+    │    +--------+          +--------+      +---+----+
               └----+   R2   +----------+   R4   +----------┘
                     +--------+          +--------+
                          <----------------   <----------------
                           (S, G) join          (S, G) join

source treeが形成されると、register messageによるカプセル化が不要である旨を伝えるために、register stop messageがR5からR1へ転送されます。

register stop messageは以下デバッグコマンドにより確認可能です。

R1#debug ip pim
PIM debugging is on
R1#
*Mar  1 00:42:05.503: PIM(0): Check RP 10.5.5.5 into the (*, 239.1.1.1) entry
*Mar  1 00:42:05.511: PIM(0): Send v2 Register to 10.5.5.5 for 192.168.12.112, group 239.1.1.1
*Mar  1 00:42:08.575: PIM(0): Send v2 Null Register to 10.5.5.5
*Mar  1 00:42:08.623: PIM(0): Received v2 Register-Stop on Ethernet0/1 from 10.5.5.5
*Mar  1 00:42:08.627: PIM(0):   for source 0.0.0.0, group 0.0.0.0
*Mar  1 00:42:16.511: PIM(0): Send v2 Register to 10.5.5.5 for 192.168.12.112, group 239.1.1.1
*Mar  1 00:42:16.579: PIM(0): Received v2 Register-Stop on Ethernet0/1 from 10.5.5.5
*Mar  1 00:42:16.579: PIM(0):   for source 192.168.12.112, group 239.1.1.1
*Mar  1 00:42:16.583: PIM(0): Clear Registering flag to 10.5.5.5 for (192.168.12.112/32, 239.1.1.1)
*Mar  1 00:42:20.383: PIM(0): Received v2 Bootstrap on Ethernet0/1 from 192.168.13.3
*Mar  1 00:42:20.387: PIM(0): Update (224.0.0.0/4, RP:10.5.5.5), PIMv2
*Mar  1 00:42:20.399: PIM(0): Received v2 Bootstrap on Loopback0 from 10.1.1.1
*Mar  1 00:42:20.423: PIM(0): Received v2 Bootstrap on Ethernet0/0 from 192.168.12.2
R1#
                               register stop message
                          <-----------------------------------
                     +--------+          +--------+            
               ┌----+   R1   +----------+   R3   +----------┐
 +--------+    │    +--------+          +--------+      +---+----+
 | Host12 +----┤                                        |   R5  | 
 +--------+    │    +--------+          +--------+      +---+----+
               └----+   R2   +----------+   R4   +----------┘
                     +--------+          +--------+

ルーティングテーブルの確認

OSPF domain(R1, R3)のルーティングテーブルを確認します。EIGRPの方が優先されるので、これらのルータはパケットを転送しない事が読み取れます。(R1について(192.168.12.112, 239.1.1.1)エントリは存在するもののOutgoing Interface list: Nullと表示されていることからパケットを転送しない事が読み取れます)

 [R1]
R1#show ip mroute 192.168.12.112 239.1.1.1

 <omitted>

(192.168.12.112, 239.1.1.1), 00:00:21/00:02:51, flags: PFT
  Incoming interface: Ethernet0/0, RPF nbr 0.0.0.0, Registering
  Outgoing interface list: Null

R1#

 [R3]
R3#show ip mroute 192.168.12.112 239.1.1.1
Group 239.1.1.1 not found
R3#

EIGRP domain(R2, R4, R5)のルーティングテーブルを確認します。source treeに基づいてパケットが転送される事を確認します。

 [R2]
R2#show ip mroute 192.168.12.112 239.1.1.1

 <omitted>

(192.168.12.112, 239.1.1.1), 00:00:24/00:03:20, flags: T
  Incoming interface: Ethernet0/0, RPF nbr 0.0.0.0
  Outgoing interface list:
    Ethernet0/1, Forward/Sparse, 00:00:23/00:03:06

R2#

 [R4]
R4#show ip mroute 192.168.12.112 239.1.1.1

 <omitted>

(192.168.12.112, 239.1.1.1), 00:00:33/00:03:29, flags: T
  Incoming interface: Ethernet0/1, RPF nbr 192.168.24.2
  Outgoing interface list:
    Ethernet0/3, Forward/Sparse, 00:00:33/00:03:07

R4#

 [R5]
R5#show ip mroute 192.168.12.112 239.1.1.1

 <omitted>

(192.168.12.112, 239.1.1.1), 00:00:35/00:02:55, flags: T
  Incoming interface: Ethernet0/3, RPF nbr 192.168.45.4
  Outgoing interface list:
    Loopback0, Forward/Sparse, 00:00:35/00:02:24

R5#

Accept Register

基本設定

source treeにはAccept Registerという機能が存在します。Accept Registerとは、RPが受け入れるregister messageを制限する機能のことです。

以下のコマンドで、register messageを制限する事ができます。拡張ACLまたはroute-mapを用いて定義しますが、送信元アドレスがマルチキャストソースに、宛先アドレスがマルチキャストグループに対応する事を留意して下さい。

Router(config)# ip pim accept-register { list <ext_acl> | route-map <map> }

グループアドレスに基づく制限

239.2.2.2に対するsource tree形成を拒否するように設定します。

 [R5]
ip access-list extended ACL_DENY_REGISTER
 10 deny ip any host 239.2.2.2
 99 permit ip any any
!
ip pim accept-register list ACL_DENY_REGISTER

Host12から239.2.2.2に対するping応答がない事を確認します。

 [Host12]
Host12#ping 239.1.1.1 repeat 3

Type escape sequence to abort.
Sending 3, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:

Reply to request 0 from 192.168.45.5, 132 ms
Reply to request 1 from 192.168.45.5, 56 ms
Reply to request 2 from 192.168.45.5, 64 ms
Host12#
Host12#
Host12#ping 239.2.2.2 repeat 3

Type escape sequence to abort.
Sending 3, 100-byte ICMP Echos to 239.2.2.2, timeout is 2 seconds:
...
Host12#

なお、Accept Registerによってregister messageを拒否した場合は、コンソール上に以下のようなメッセージが出力されます。

 [R5]
R5#
*Mar  1 00:04:13.739: %PIM-4-INVALID_SRC_REG: Received Register from 192.168.24.2 for (192.168.12.112, 239.2.2.2), not willing to be RP
R5#

マルチキャストソースに基づく制限

Host12(192.168.12.112)に対するsource tree作成を制限します。

 [R5]
no ip access-list extended ACL_DENY_REGISTER
ip access-list extended ACL_DENY_REGISTER
 10 deny ip any host 239.2.2.2
 20 deny ip host 192.168.12.112 any
 99 permit ip any any
!
no ip pim accept-register list ACL_DENY_REGISTER
ip pim accept-register list ACL_DENY_REGISTER

動作確認のため、一度、source treeを削除します。

 [R1, R2, R3, R4, R5]
clear ip mroute *

Host12からのpingは届きませんが、他のホストからはpingが可能である事を確認します。

 [Host12]
Host12#ping 239.1.1.1 repeat 3

Type escape sequence to abort.
Sending 3, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:
...
Host12#

 [R1]
R1#ping 239.1.1.1 source Ethernet 0/0 repeat 3

Type escape sequence to abort.
Sending 3, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.12.1

Reply to request 0 from 192.168.45.5, 112 ms
Reply to request 1 from 192.168.45.5, 84 ms
Reply to request 2 from 192.168.45.5, 96 ms
R1#

 [R5]
R5#
*Mar  1 00:08:38.227: %PIM-4-INVALID_SRC_REG: Received Register from 192.168.24.2 for (192.168.12.112, 239.1.1.1), not willing to be RP
R5#

Multicast Boundary

基本設定

Multicast BoundaryはPIM join messageやAuto RP messageを制限する事によってマルチキャストに境界を設ける技術です。

(*, G) join messageを制限するには、以下のコマンドを指定します。

Router(config-if) ip multicast boundary <std_acl>

(S, G) join messageを制限するには、以下のコマンドを指定します。なお、in, outはPIM messageが流れる方向ではなく、マルチキャストのデータパケットが流れる方向を指定します。

Router(config-if) ip multicast boundary <ext_acl> { in | out }

Auto RP messageを制限するには、以下のコマンドを指定します。<std_acl>にはグループアドレスを指定してます。なお、announce, discoveryの両方を制限する事が可能ですが、誤って、224.0.1.39, 224.0.1.40まで制限しないよう注意して下さい。

Router(config-if) ip multicast boundary <std_acl> filter-autorp

(S, G)に基づく制限

R5からR4への(192.168.12.112, 239.1.1.1) join messageを拒否します。R4においてjoinの受信を禁止する設定を投入するので、outキーワードを指定したくなりますがinキーワードを指定して下さい。ここでのin, outはデータパケットが流れる方向を指定して下さい。

 [R4]
ip access-list extended BOUNDARY
 deny ip host 192.168.12.112 host 239.1.1.1
 permit ip any any
!
interface Ethernet0/1
 ip multicast boundary BOUNDARY in

239.1.1.1, 239.2.2.2に対するsource treeを作成するため、Host12からpingを送信します。(239.1.1.1に対するsource treeは作成されないにも関わらずping応答があるのは、register messageによって転送されるためです。)

 [Host12]
Host12#ping 239.1.1.1 repeat 2

Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:

Reply to request 0 from 192.168.35.5, 96 ms
Reply to request 1 from 192.168.35.5, 88 ms
Host12#
Host12#
Host12#
Host12#ping 239.2.2.2 repeat 2

Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 239.2.2.2, timeout is 2 seconds:

Reply to request 0 from 192.168.35.5, 156 ms
Reply to request 1 from 192.168.45.5, 68 ms
Host12#

239.1.1.1に対するsource treeは作成されていないようですが、238.1.1.1に対するsource treeは作成されている事が読み取れます。また、念のためACLによって拒否されている事を確認するためにも、ACLのカウンタも見ておきましょう。

 [R2]
R2#show ip mroute 192.168.12.112 239.1.1.1

 <omitted>

(192.168.12.112, 239.1.1.1), 00:00:59/00:02:16, flags: PT
  Incoming interface: Ethernet0/0, RPF nbr 0.0.0.0
  Outgoing interface list: Null

R2#show ip mroute 192.168.12.112 239.2.2.2

 <omitted>

(192.168.12.112, 239.2.2.2), 00:00:29/00:03:18, flags: T
  Incoming interface: Ethernet0/0, RPF nbr 0.0.0.0
  Outgoing interface list:
    Ethernet0/1, Forward/Sparse, 00:00:29/00:03:00

R2#

 [R4]
R4#show ip mroute 192.168.12.112 239.1.1.1
Group 239.1.1.1 not found
R4#
R4#show ip mroute 192.168.12.112 239.2.2.2

 <omitted>

(192.168.12.112, 239.2.2.2), 00:00:48/00:02:58, flags: T
  Incoming interface: Ethernet0/1, RPF nbr 192.168.24.2
  Outgoing interface list:
    Ethernet0/3, Forward/Sparse, 00:00:48/00:02:41

R4#
R4#
R4#show access-lists
Extended IP access list BOUNDARY
    10 deny ip host 192.168.12.112 host 239.1.1.1 (7 matches)
    99 permit ip any any (13 matches)
R4#

register message

話が横道にそれますが、239.1.1.1に対するping応答があるのはregister messageによる転送のお陰です。multicast boundaryを設定する事によってsource treeが作成されないため、RPはregister stop messageを送信しない動作になります。この様子は、以下デバッグ出力にregister stopがない事から読み取れます。

R1#debug ip pim
PIM debugging is on
R1#
*Mar  1 00:40:11.743: PIM(0): Check RP 10.5.5.5 into the (*, 239.1.1.1) entry
*Mar  1 00:40:11.751: PIM(0): Send v2 Register to 10.5.5.5 for 192.168.12.112, group 239.1.1.1
*Mar  1 00:40:20.267: PIM(0): Received v2 Bootstrap on Ethernet0/1 from 192.168.13.3
*Mar  1 00:40:20.271: PIM(0): Update (224.0.0.0/4, RP:10.5.5.5), PIMv2
*Mar  1 00:40:20.283: PIM(0): Received v2 Bootstrap on Loopback0 from 10.1.1.1
*Mar  1 00:40:20.323: PIM(0): Received v2 Bootstrap on Ethernet0/0 from 192.168.12.2
*Mar  1 00:40:22.767: PIM(0): Send v2 Register to 10.5.5.5 for 192.168.12.112, group 239.1.1.1
*Mar  1 00:40:36.847: PIM(0): Send v2 Register to 10.5.5.5 for 192.168.12.112, group 239.1.1.1
R1#
タイトルとURLをコピーしました