Cisco IOS マルチキャスト BSRの設定方法

スポンサーリンク

マルチキャストのRPを設定する方法の1つであるBSRの設定例を示します。このページでは単純なBSRの設定だけでなく、Auto RPの冗長化やマルチキャスト境界の設定についてまとめます。

RP Candidator 冗長化

基本設定

RP Candidatorの設定コマンドは以下の通りです。Auto RPでは無条件でIPアドレスが大きいルータがRPとして選出されてしまいますが、BSRにおけるRP Candidatorは優先度を定義する事ができます。priorityが小さいルータがRPとして選出されます。(後述のSBRに関して、priorityが大きいルータがBSR Routerとして選出される事には注意が必要です。)

Router(config)# ip pim rp-candidate <interface> group-list <std_acl> interval <sec> priority <priority>

動作確認

以下の構成で動作確認を行います。

RP candidator       RP candidator        BSR Router          BSR Router
 +--------+          +--------+          +--------+          +--------+
 |   R1   +----------+   R2   +----------+   R3   +----------+   R4  | 
 +--------+.1      .2+--------+.2      .3+--------+.3      .4+--------+
         e0/0      e0/0      e0/2      e0/2      e0/3      e0/3
         192.168.12.0/24     192.168.23.0/24     192.168.34.0/24
 [R1]
ip pim rp-candidate Loopback0 interval 30

 [R2]
ip pim rp-candidate Loopback0 interval 30

 [R3]
ip pim bsr-candidate Loopback0

 [R4]
ip pim bsr-candidate Loopback0

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

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-dense-mode
!
interface Ethernet0/0
 ip address 192.168.12.1 255.255.255.0
 ip pim sparse-dense-mode
 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
!
!
router eigrp 10
 network 0.0.0.0
 no auto-summary
!
ip http server
ip forward-protocol nd
!
!
ip pim rp-candidate Loopback0 interval 30
!
!
!
!
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-dense-mode
!
interface Ethernet0/0
 ip address 192.168.12.2 255.255.255.0
 ip pim sparse-dense-mode
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.23.2 255.255.255.0
 ip pim sparse-dense-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 rp-candidate Loopback0 interval 30
!
!
!
!
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-dense-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-dense-mode
 half-duplex
!
interface Ethernet0/2
 ip address 192.168.34.3 255.255.255.0
 ip pim sparse-dense-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 bsr-candidate Loopback0 0
!
!
!
!
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-dense-mode
!
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.34.4 255.255.255.0
 ip pim sparse-dense-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 bsr-candidate Loopback0 0
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end

RP 確認

priorityなどを意識しない場合は、以下のような状態になります。

R3#show ip pim rp mapping
PIM Group-to-RP Mappings
This system is the Bootstrap Router (v2)

Group(s) 224.0.0.0/4
  RP 10.1.1.1 (?), v2
    Info source: 192.168.12.1 (?), via bootstrap, priority 0, holdtime 75
         Uptime: 00:00:06, expires: 00:01:07
  RP 10.2.2.2 (?), v2
    Info source: 192.168.23.2 (?), via bootstrap, priority 0, holdtime 75
         Uptime: 00:00:05, expires: 00:01:07
R3#

実際にどのルータがRPとして使用されているかは、show ip pim rp-hashコマンドにマルチキャストグループアドレスを指定する事で調べる事ができます。RPはpriority, hash value, IPアドレスの順で比較され、この場合は10.1.1.1がRPになっている事が読み取れます。

 [R3]
R3#show ip pim rp-hash 239.1.1.1
  RP 10.1.1.1 (?), v2
    Info source: 192.168.12.1 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:15:02, expires: 00:02:07
  PIMv2 Hash Value (mask 0.0.0.0)
    RP 10.1.1.1, via bootstrap, priority 0, hash value 1758541073
    RP 10.2.2.2, via bootstrap, priority 0, hash value 1121946968
R3#

RPの制御

Auto RPは無条件でIPアドレスが大きいルータがRPとして選出されましたが、BSRはpriorityによる制御が可能です。動作確認のため、RPがR1からR2に切り替わるようpriorityを調節します。

 [R1]
ip pim rp-candidate Loopback 0 priority 20

 [R2]
ip pim rp-candidate Loopback 0 priority 10

RPがR1からR2に変わった事が読み取れます。

 [R3]
R3#show ip pim rp-hash 239.1.1.1
  RP 10.2.2.2 (?), v2
    Info source: 192.168.23.2 (?), via bootstrap, priority 10, holdtime 150
         Uptime: 00:19:26, expires: 00:02:17
  PIMv2 Hash Value (mask 0.0.0.0)
    RP 10.2.2.2, via bootstrap, priority 10, hash value 1121946968
    RP 10.1.1.1, via bootstrap, priority 20, hash value 1758541073
R3#

BSR Router 冗長化

基本設定

BSR routerの設定コマンドは以下の通りです。BSRが複数台存在する環境では、<priority>でBSRの優先度を定義する事ができます。

Router(config)# ip pim bsr-candidate <interface> <hash_mask> <priority>

BSR 確認

BSR Routerの冗長化は、BSR Routerを複数台に対して設定する事によって可能です。 BSR Router同士での優劣は存在し、priorityを意識しない場合はIPアドレスが大きいルータがBSR Routerとして選出されます。どのルータがBSR Routerとして選出されたかは以下のコマンドで確認する事ができます。この場合は、R4(10.4.4.4)がBSRとして選出された事が読み取れます。

 [R3]
R3#show ip pim bsr-router
PIMv2 Bootstrap information
  BSR address: 10.4.4.4 (?)
  Uptime:      00:00:40, BSR Priority: 0, Hash mask length: 0
  Expires:     00:01:37
This system is a candidate BSR
  Candidate BSR address: 10.3.3.3, priority: 0, hash mask length: 0
R3#

 [R4]
R4#show ip pim bsr-router
PIMv2 Bootstrap information
This system is the Bootstrap Router (BSR)
  BSR address: 10.4.4.4 (?)
  Uptime:      00:00:53, BSR Priority: 0, Hash mask length: 0
  Next bootstrap message in 00:00:06
R4#

BSR Routerの制御

BSR Routerが送信するメッセージには、IPアドレス, priority, ハッシュマスク長などが含まれます。これらの情報を基に、以下の基準でBSR Routerを選出します。

  • priorityが大きいルータがBSR Routerとして選出されます。
  • 上記が等しい場合は、IPアドレスが大きいルータがBSR Routerとして選出されます

R3のBSR Routerとしてのpriorityを変更し、BSR Routerが切り替わる事を確認します。

 [R3]
ip pim bsr-candidate Loopback0 0 10

 [R4]
ip pim bsr-candidate Loopback0 0 0


R3#show ip pim bsr-router
PIMv2 Bootstrap information
This system is the Bootstrap Router (BSR)
  BSR address: 10.3.3.3 (?)
  Uptime:      00:00:24, BSR Priority: 10, Hash mask length: 0
  Next bootstrap message in 00:00:36
R3#

RP 負荷分散

基本設定

Auto RPにおけるRPは複雑なACLを定義しないと負荷分散できませんでしたが、BSRにおけるRPはハッシュマスク長を操作するだけで負荷分散ができます。負荷分散の実装方法を覚えるために、まずは、以下のRP選出方法について理解しましょう。

  • priorityが小さいルータがRPとして選出されます
  • 上記が等しい場合は、ハッシュ値が大きいルータがRPとして選出されます
  • 上記が等しい場合は、RPのIPアドレスが大きいルータがRPとして選出されます

以下BSR router設定コマンドのによってハッシュマスク長を制御する事ができます。

Router(config)# ip pim bsr-candidate <interface> <hash_mask> <priority>

ハッシュ値の計算

負荷分散するために先ほど投入したRPのpriority設定を元に戻します。

 [R1]
ip pim rp-candidate Loopback 0 priority 0

 [R2]
ip pim rp-candidate Loopback 0 priority 0

ハッシュ値の算出方法について理解しましょう。ハッシュ値は以下の式によって与えられます。マルチキャストグループアドレスとハッシュマスクの論理積を計算し、その値とRP IPアドレスのハッシュがRPの算出に使用するハッシュ値になります。

hash_valur = Hash ( group_addr &amp; hash_mask, rp_addr )

デフォルトの状態ではハッシュマスク長が0です。hash_maskは0が32bit続いた数値になります。この場合のハッシュ値は以下のようになり、マルチキャストグループアドレスに関わらず一定の値になり、必ず同じRPが使用され続ける事になってしまいます。

hash_valur = Hash ( group_addr &amp; 0, rp_addr )
           = Hash ( 0, rp_addr )

ハッシュマスク長が0である場合のRPを確認します。マルチキャストグループアドレスに関わらずhash valueがいつも同じ値になっており、いつもR1がRPとして選出されている事が分かります。

 [R3]
R3#show ip pim rp-hash 239.1.1.1
  RP 10.1.1.1 (?), v2
    Info source: 192.168.12.1 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:23:28, expires: 00:02:03
  PIMv2 Hash Value (mask 0.0.0.0)
    RP 10.1.1.1, via bootstrap, priority 0, hash value 1758541073
    RP 10.2.2.2, via bootstrap, priority 0, hash value 1121946968
R3#
R3#
R3#
R3#show ip pim rp-hash 239.1.1.2
  RP 10.1.1.1 (?), v2
    Info source: 192.168.12.1 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:23:34, expires: 00:01:58
  PIMv2 Hash Value (mask 0.0.0.0)
    RP 10.1.1.1, via bootstrap, priority 0, hash value 1758541073
    RP 10.2.2.2, via bootstrap, priority 0, hash value 1121946968
R3#
R3#
R3#
R3#show ip pim rp-hash 239.1.1.3
  RP 10.1.1.1 (?), v2
    Info source: 192.168.12.1 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:23:48, expires: 00:01:44
  PIMv2 Hash Value (mask 0.0.0.0)
    RP 10.1.1.1, via bootstrap, priority 0, hash value 1758541073
    RP 10.2.2.2, via bootstrap, priority 0, hash value 1121946968
R3#
R3#
R3#
R3#show ip pim rp-hash 239.1.1.4
  RP 10.1.1.1 (?), v2
    Info source: 192.168.12.1 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:23:53, expires: 00:01:38
  PIMv2 Hash Value (mask 0.0.0.0)
    RP 10.1.1.1, via bootstrap, priority 0, hash value 1758541073
    RP 10.2.2.2, via bootstrap, priority 0, hash value 1121946968
R3#

なお、ハッシュ値の計算を抜きにして、結論のみの丸暗記をするならば以下の通りになります。

ハッシュ長 動作
0 ハッシュ値は固定値
1 マルチキャストグループアドレスの上位1bitを元にハッシュ値を算出
2 マルチキャストグループアドレスの上位2bitを元にハッシュ値を算出
3 マルチキャストグループアドレスの上位3bitを元にハッシュ値を算出
4 マルチキャストグループアドレスの上位4bitを元にハッシュ値を算出
28 マルチキャストグループアドレスの下位4bitを無視してハッシュ値を算出
29 マルチキャストグループアドレスの下位3bitを無視してハッシュ値を算出
30 マルチキャストグループアドレスの下位2bitを無視してハッシュ値を算出
31 マルチキャストグループアドレスの下位1bitを無視してハッシュ値を算出
32 マルチキャストグループアドレスを元にハッシュ値を算出

設定例

RPがマルチキャストグループに基づいて負荷分散されるよう、ハッシュマスク長を32bitに変更します。

 [R3]
ip pim bsr-candidate Loopback0 32 10

 [R4]
ip pim bsr-candidate Loopback0 32 0

マルチキャストグループアドレスに応じて、RPが負荷分散される事を確認します。また、マルチキャストグループアドレス毎にhash valueが異なる値になる事も確認します。

 [R3]
R3#show ip pim rp-hash 239.1.1.1
  RP 10.1.1.1 (?), v2
    Info source: 192.168.12.1 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:24:52, expires: 00:01:39
  PIMv2 Hash Value (mask 255.255.255.255)
    RP 10.1.1.1, via bootstrap, priority 0, hash value 2039282516
    RP 10.2.2.2, via bootstrap, priority 0, hash value 1496490765
R3#
R3#
R3#
R3#show ip pim rp-hash 239.1.1.2
  RP 10.2.2.2 (?), v2
    Info source: 192.168.23.2 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:24:53, expires: 00:01:46
  PIMv2 Hash Value (mask 255.255.255.255)
    RP 10.1.1.1, via bootstrap, priority 0, hash value 773444323
    RP 10.2.2.2, via bootstrap, priority 0, hash value 1742028150
R3#
R3#
R3#
R3#show ip pim rp-hash 239.1.1.3
  RP 10.2.2.2 (?), v2
    Info source: 192.168.23.2 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:24:58, expires: 00:01:41
  PIMv2 Hash Value (mask 255.255.255.255)
    RP 10.1.1.1, via bootstrap, priority 0, hash value 675875366
    RP 10.2.2.2, via bootstrap, priority 0, hash value 1159120275
R3#
R3#
R3#
R3#show ip pim rp-hash 239.1.1.4
  RP 10.2.2.2 (?), v2
    Info source: 192.168.23.2 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:25:04, expires: 00:01:36
  PIMv2 Hash Value (mask 255.255.255.255)
    RP 10.1.1.1, via bootstrap, priority 0, hash value 861865909
    RP 10.2.2.2, via bootstrap, priority 0, hash value 1949543420
R3#

BSR bourder

基本設定

Auto RPにおけるマルチキャスト境界の設定方法は、TTL, rp-announce-filter, Multicast Boundaryなど非常に複雑でした。しかし、BSRにおけるマルチキャスト境界の考え方は非常にシンプルです。

以下のコマンドを入力する事でBSRに関するメッセージの送受信を禁止し、マルチキャスト境界を設ける事ができます。

Router(config-if)# ip pim bsr-border

設定例

R3, R4の間でマルチキャスト境界を設けます。

 [R3]
interface Ethernet0/2
 ip pim bsr-border

R4がRPに関する情報を一切認識しなくなった事が分かります。

 [R4]
R4#show ip pim rp mapping
PIM Group-to-RP Mappings
This system is the Bootstrap Router (v2)

R4#
タイトルとURLをコピーしました