マルチキャストの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
設定全文は下記ファイルです。ルーティングなどの詳細設定は下記を参照ください。
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 & hash_mask, rp_addr )
デフォルトの状態ではハッシュマスク長が0です。hash_maskは0が32bit続いた数値になります。この場合のハッシュ値は以下のようになり、マルチキャストグループアドレスに関わらず一定の値になり、必ず同じRPが使用され続ける事になってしまいます。
hash_valur = Hash ( group_addr & 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#