Cisco IOS マルチキャスト PIM sparse mode Switch Overの動作確認

スポンサーリンク

PIM Sparse modeはRPと呼ばれる待ち合わせ場所を経由する通信になります。しかし、いつもRPを経由すると遠回りになってしまうので、一定速度以上の通信はRPを経由しなくなるSwitch Overという機能が備わっています。

コマンド一覧

このシナリオで重要なコマンド一覧は以下の通りです。

Router(config)# ip pim spt-threshold { <threshold> | infinity } [ group-list <std_acl> ]

構成図

これ以降の動作確認は、以下の環境で行います。R2をRP Candidator かつ BSR Routerとして設定します。

 [ip address]
                     e0/0     e0/1
                    .2+--------+.2
 192.168.12.0/24┌----+   R2   +----┐192.168.23.0/24
                │    +--------+    │
                │                  │
              .1│e0/0          e0/1│.3
            +---+----+          +---+----+          +--------+
            |   R1   +----------+   R3   +----------+ Host 3 |
            +--------+.1      .3+--------+.3    .103+--------+
                    e0/2      e0/2      e0/3       e0/3
                    192.168.13.0/24     192.168.3.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]
                      BSR Router
                      RP Candidator
                     e0/0     e0/1
                    .2+--------+.2
 192.168.12.0/24┌----+   R2   +----┐192.168.23.0/24
                │    +--------+    │
                │                  │
              .1│e0/0          e0/1│.3
            +---+----+          +---+----+          +--------+
            |   R1   +----------+   R3   +----------+ Host 3 |
            +--------+.1      .3+--------+.3    .103+--------+
                    e0/2      e0/2      e0/3       e0/3
                    192.168.13.0/24     192.168.3.0/24

 [R1]
no ip domain lookup
!
ip multicast-routing 
!
interface Loopback0
 ip pim sparse-mode
!
interface Ethernet0/0
 ip pim sparse-mode
!
interface Ethernet0/2
 ip pim sparse-mode
!
ip pim autorp listener

 [R2]
no ip domain lookup
!
ip multicast-routing 
!
interface Loopback0
 ip pim sparse-mode
!
interface Ethernet0/0
 ip pim sparse-mode
!
interface Ethernet0/1
 ip pim sparse-mode
!
ip pim autorp listener
ip pim send-rp-announce Loopback0 scope 1
ip pim send-rp-discovery Loopback0 scope 2

 [R3]
no ip domain lookup
!
ip multicast-routing 
!
interface Loopback0
 ip pim sparse-mode
!
interface Ethernet0/1
 ip pim sparse-mode
!
interface Ethernet0/2
 ip pim sparse-mode
!
interface Ethernet0/3
 ip pim sparse-mode
!
ip pim autorp listener

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

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
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/2
 ip address 192.168.13.1 255.255.255.0
 ip pim sparse-mode
 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
 ip address 192.168.23.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
!
!
ip pim autorp listener
ip pim send-rp-announce Loopback0 scope 1
ip pim send-rp-discovery Loopback0 scope 2
!
!
!
!
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.23.3 255.255.255.0
 ip pim sparse-mode
 half-duplex
!
interface Ethernet0/2
 ip address 192.168.13.3 255.255.255.0
 ip pim sparse-mode
 half-duplex
!
interface Ethernet0/3
 ip address 192.168.3.3 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
!
!
ip pim autorp listener
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
Host3
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname Host3
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
ip multicast-routing 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Ethernet0/0
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/1
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 ip address 192.168.3.103 255.255.255.0
 ip igmp join-group 239.3.3.3
 half-duplex
!
!
ip http server
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 192.168.3.3
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end

switch over 無効化

仕様説明

sparse modeのマルチキャスト通信がRPを経由するのは、いつも最短ルートになるとは限らず無駄に帯域を消費してしまう事があります。その無駄を軽減する機能がsiwtch overです。switch overとはライスホップルータに設定する機能で、通信帯域がある閾値を超過するとマルチキャストソースとマルチキャストレシーバをつなぐツリーを作成します。

以下のコマンドでswitch overする閾値を設定します。閾値としてinfinityを設定すると必ずswitch overしないようになり、閾値として0を設定すると必ずswitch overするようになります(デフォルトの閾値は0であり、デフォルトの挙動は必ずswitch overします)。また、にはグループアドレスを指定する事ができ、グループアドレス毎に異なるswitch overの設定を施す事も可能です。

Router(config)# ip pim spt-threshold { <threshold> | infinity } [ group-list <std_acl> ]

switch over 無効化設定

switch overの挙動を理解するために、まずはswitch overを無効化した状態について考察します。R3に以下の設定を投入しswitch overを無効化します。

 [R3]
ip access-list standard SPT
 10 permit host 239.3.3.3
!
ip pim spt-threshold infinity group-list SPT

マルチキャストルーティングテーブル確認

R1 Loopback0からHost3への疎通を確認します。

 [Host3]
interface Ethernet0/3
 ip igmp join-group 239.3.3.3

 [R1]
R1#ping 239.3.3.3 source Loopback 0 repeat 2

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

Reply to request 0 from 192.168.3.103, 96 ms
Reply to request 1 from 192.168.3.103, 8 ms
Reply to request 1 from 192.168.3.103, 32 ms
R1#

マルチキャストルーティングテーブルを確認すると以下の通りです。R1, R2で送信元ツリーが、R2, R3で共有ツリーが作成された事が読み取れます。

 [R1]
R1#show ip mroute 239.3.3.3

 <omitted>

(*, 239.3.3.3), 00:01:12/stopped, RP 10.2.2.2, flags: SPF
  Incoming interface: Ethernet0/0, RPF nbr 192.168.12.2
  Outgoing interface list: Null

(10.1.1.1, 239.3.3.3), 00:01:12/00:02:25, flags: FT
  Incoming interface: Loopback0, RPF nbr 0.0.0.0
  Outgoing interface list:
    Ethernet0/0, Forward/Sparse, 00:01:12/00:03:16

R1#

 [R2]
R2#show ip mroute 239.3.3.3

 <omitted>

(*, 239.3.3.3), 00:00:46/stopped, RP 10.2.2.2, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Ethernet0/1, Forward/Sparse, 00:00:46/00:02:43

(10.1.1.1, 239.3.3.3), 00:00:41/00:02:23, flags: JT
  Incoming interface: Ethernet0/0, RPF nbr 192.168.12.1
  Outgoing interface list:
    Ethernet0/1, Forward/Sparse, 00:00:41/00:02:18

R2#

 [R3]
R3#show ip mroute 239.3.3.3

 <omitted>

(*, 239.3.3.3), 00:00:49/00:02:19, RP 10.2.2.2, flags: SC
  Incoming interface: Ethernet0/1, RPF nbr 192.168.23.2
  Outgoing interface list:
    Ethernet0/3, Forward/Sparse, 00:00:49/00:02:10

R3#

swtich over 有効化

switch over 有効化設定

先ほど無効化したswitch overを再び有効化します。

 [R3]
no ip pim spt-threshold infinity group-list SPT

マルチキャストルーティングテーブル確認

R1 Loopback0からHost3への疎通を確認します。

 [Host3]
interface Ethernet0/3
 ip igmp join-group 239.3.3.3

 [R1]
R1#ping 239.3.3.3 source Loopback 0 repeat 2

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

Reply to request 0 from 192.168.3.103, 108 ms
Reply to request 0 from 192.168.3.103, 108 ms
Reply to request 1 from 192.168.3.103, 72 ms
Reply to request 1 from 192.168.3.103, 72 ms
R1#

マルチキャストルーティングテーブルを確認すると以下の通りです。R1 (10.1.1.1, 239.3.3.3)に着目するとOutgoing interfaceがe0/0からe0/2に変わり、R3には(10.1.1.1, 239.3.3.3)という新しいエントリが作成された事が分かります。この2つのエントリは、switch overによって作成された、R1からHost3へのRPを経由しないルートです。

 [R1]
R1#show ip mroute 239.3.3.3

 <omitted>

(*, 239.3.3.3), 00:02:22/stopped, RP 10.2.2.2, flags: SPF
  Incoming interface: Ethernet0/0, RPF nbr 192.168.12.2
  Outgoing interface list: Null

(10.1.1.1, 239.3.3.3), 00:02:22/00:02:23, flags: FT
  Incoming interface: Loopback0, RPF nbr 0.0.0.0
  Outgoing interface list:
    Ethernet0/2, Forward/Sparse, 00:01:06/00:03:22

R1#

 [R2]
R2#show ip mroute 239.3.3.3

 <omitted>

(*, 239.3.3.3), 00:09:19/stopped, RP 10.2.2.2, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Ethernet0/1, Forward/Sparse, 00:09:19/00:03:01

(10.1.1.1, 239.3.3.3), 00:00:16/00:02:43, flags: PJT
  Incoming interface: Ethernet0/0, RPF nbr 192.168.12.1
  Outgoing interface list: Null

R2#

 [R3]
R3#show ip mroute 239.3.3.3

 <omitted>

(*, 239.3.3.3), 00:03:01/stopped, RP 10.2.2.2, flags: SJC
  Incoming interface: Ethernet0/1, RPF nbr 192.168.23.2
  Outgoing interface list:
    Ethernet0/3, Forward/Sparse, 00:03:01/00:02:56

(10.1.1.1, 239.3.3.3), 00:01:40/00:02:57, flags: JT
  Incoming interface: Ethernet0/2, RPF nbr 192.168.13.1
  Outgoing interface list:
    Ethernet0/3, Forward/Sparse, 00:01:40/00:02:56

R3#

パケットキャプチャ

switch overとは、具体的にはマルチキャストソースからレシーバへのツリーの作成共有ツリーの削除を行います。

ラストホップルータは、ツリーを作成するためにマルチキャストソース方向に(S, G) joinを送信します。また、共有ツリーが不要な旨をRPに伝えるためにRP方向に(*, G) pruneを送信します。

 [ip address]
                     
                      +--------+
                ┌----+   R2   +----┐
                │    +--------+    │ ↑
                │                  │ │ (*, G) prune
              .1│                  │ │
            +---+----+          +---+----+          +--------+
            |   R1   +----------+   R3   +----------+ Host 3| 
            +--------+          +--------+          +--------+
                    <-------------
                      (S, G) join

この構成でR3からR1へ送信された(S. G) joinは以下の通りです。

Ethernet II, Src: cc:02:05:1c:00:01 (cc:02:05:1c:00:01), Dst: IPv4mcast_00:00:0d (01:00:5e:00:00:0d)
Internet Protocol Version 4, Src: 192.168.23.3 (192.168.23.3), 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: 0xfc35 [correct]
    PIM options
        Upstream-neighbor: 192.168.23.2
        Reserved byte(s): 00
        Num Groups: 1
        Holdtime: 210s 
        Group 0: 239.3.3.3/32
            Num Joins: 1
                IP address: 10.2.2.2/32 (SWR)
            Num Prunes: 0

この構成でR3からR2へ送信された(*. G) pruneは以下の通りです。

Ethernet II, Src: cc:02:06:dc:00:01 (cc:02:06:dc:00:01), Dst: IPv4mcast_00:00:0d (01:00:5e:00:00:0d)
Internet Protocol Version 4, Src: 192.168.23.3 (192.168.23.3), 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: 0xff37 [correct]
    PIM options
        Upstream-neighbor: 192.168.23.2
        Reserved byte(s): 00
        Num Groups: 1
        Holdtime: 210s 
        Group 0: 239.3.3.3/32
            Num Joins: 0
            Num Prunes: 1
                IP address: 10.1.1.1/32 (SR)
タイトルとURLをコピーしました