BGPドメインをまたがったマルチキャスト通信で、RPを1つに設定するのはツリーが大きくなり過ぎてしまいます。そこで、各BGPドメインにRPを1つずつ設け、RP間をMSDPというプロトコルを用いて通信させると、管理しやすい構成になります。
コマンド一覧
このシナリオで重要なコマンド一覧は以下の通りです。
Router(config)# ip msdp peer <remote_addr> connect-source <src_int> remote-as <remote_as>
構成図 1
これ以降の動作確認は、以下の環境で行います。
[ip address] +--------+ +--------+ +--------+ +--------+ | R1 +--------+ R2 +--------+ R3 +--------+ R4 | +--------+.1 .2+--------+.2 .3+--------+.3 .4+--------+ e0/0 e0/1 e0/0 e0/1 e0/0 e0/1 192.168.12.0/24 192.168.23.0/24 192.168.34.0/24 R1 Loopback0 R2 Loopback0 R3 Loopback0 R4 Loopback0 10.1.1.1/32 10.2.2.2/32 10.3.3.3/32 10.4.4.4/32 [bgp domain] +--------+ +--------+ +--------+ +--------+ | R1 +--------+ R2 +--------+ R3 +--------+ R4 | +--------+ +--------+ +--------+ +--------+ AS 200 AS 200 AS 300 AS 300 [multicast domain] +--------+ +--------+ +--------+ +--------+ | R1 +--------+ R2 + + R3 +--------+ R4 | +--------+ +--------+ +--------+ +--------+ static RP BSR Router RP Candidator
[R1] ip multicast-routing ! interface Loopback0 ip pim sparse-mode ! interface Ethernet0/0 ip pim sparse-mode half-duplex ! router eigrp 10 network 0.0.0.0 no auto-summary ! router bgp 200 neighbor 10.2.2.2 remote-as 200 neighbor 10.2.2.2 update-source Loopback0 ! ip pim rp-address 10.2.2.2 [R2] ip multicast-routing ! interface Loopback0 ip pim sparse-mode ! interface Ethernet0/0 ip pim sparse-mode ! interface Ethernet0/1 ip pim sparse-mode ! router eigrp 10 network 0.0.0.0 no auto-summary ! router bgp 200 neighbor 10.1.1.1 remote-as 200 neighbor 10.1.1.1 update-source Loopback0 neighbor 10.3.3.3 remote-as 300 neighbor 10.3.3.3 ebgp-multihop 255 neighbor 10.3.3.3 update-source Loopback0 ! ip pim rp-address 10.2.2.2 [R3] ip multicast-routing ! interface Loopback0 ip pim sparse-mode ! interface Ethernet0/0 ip pim sparse-mode ! interface Ethernet0/1 ip pim bsr-border ip pim sparse-mode ! router eigrp 10 network 0.0.0.0 no auto-summary ! router bgp 300 neighbor 10.2.2.2 remote-as 200 neighbor 10.2.2.2 ebgp-multihop 255 neighbor 10.2.2.2 update-source Loopback0 neighbor 10.4.4.4 remote-as 300 neighbor 10.4.4.4 update-source Loopback0 ! ip pim bsr-candidate Loopback0 0 ip pim rp-candidate Loopback0 [R4] ip multicast-routing ! interface Loopback0 ip pim sparse-mode ! interface Ethernet0/1 ip pim sparse-mode ! router eigrp 10 network 0.0.0.0 no auto-summary ! router bgp 300 neighbor 10.3.3.3 remote-as 300 neighbor 10.3.3.3 update-source Loopback0
設定全文は下記ファイルです。詳細設定は下記を参照ください。
MSDP peer 1
仕様説明
以下のコマンドにより、MSDP peerを確立する事ができます。MSDP peerを確立すると、AS間のマルチキャスト転送が可能となります。
Router(config)# ip msdp peer <remote_addr> connect-source <src_int> remote-as <remote_as>
MSDP peer
R2, R3間でMSDP peerを確立します。
[R2] ip msdp peer 10.3.3.3 connect-source Loopback 0 remote-as 300 [R3] ip msdp peer 10.2.2.2 connect-source Loopback 0 remote-as 200
MSDP peerを確立すると、以下のメッセージがコンソール上に出力されます。また、MSDP peerがupしている事を確認するには以下コマンドを使用します。
[R2] R2# *Mar 1 00:04:54.447: %MSDP-5-PEER_UPDOWN: Session to peer 10.3.3.3 going up R2# R2# R2#show ip msdp peer MSDP Peer 10.3.3.3 (?), AS 300 (configured AS) Connection status: State: Up, Resets: 0, Connection source: Loopback0 (10.2.2.2) Uptime(Downtime): 00:00:48, Messages sent/received: 1/1 Output messages discarded: 0 Connection and counters cleared 00:01:48 ago SA Filtering: Input (S,G) filter: none, route-map: none Input RP filter: none, route-map: none Output (S,G) filter: none, route-map: none Output RP filter: none, route-map: none SA-Requests: Input filter: none Peer ttl threshold: 0 SAs learned from this peer: 0 Input queue size: 0, Output queue size: 0 Message counters: RPF Failure count: 0 SA Messages in/out: 0/0 SA Requests in: 0 SA Responses out: 0 Data Packets in/out: 0/0 R2#
疎通確認
R1からR4への疎通が可能である事を確認します。
[R4] interface Loopback0 ip igmp join-group 239.4.4.4 [R1] R1#ping 239.4.4.4 source Loopback 0 repeat 5 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 239.4.4.4, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 Reply to request 0 from 192.168.34.4, 164 ms Reply to request 1 from 192.168.34.4, 92 ms Reply to request 1 from 192.168.34.4, 92 ms Reply to request 2 from 192.168.34.4, 168 ms Reply to request 2 from 192.168.34.4, 168 ms Reply to request 3 from 192.168.34.4, 92 ms Reply to request 3 from 192.168.34.4, 136 ms Reply to request 4 from 192.168.34.4, 148 ms Reply to request 4 from 192.168.34.4, 148 ms R1#
パケット確認
仕様確認のため、R2, R3間のパケットを観察します。上記pingはMSDP Source Active messageでカプセル化され、ユニキャストでR2, R3間の転送がなされている事が分かります。
Ethernet II, Src: cc:01:13:c4:00:00 (cc:01:13:c4:00:00), Dst: cc:02:11:e4:00:01 (cc:02:11:e4:00:01) Internet Protocol Version 4, Src: 10.2.2.2 (10.2.2.2), Dst: 10.3.3.3 (10.3.3.3) Transmission Control Protocol, Src Port: 21364 (21364), Dst Port: msdp (639), Seq: 7, Ack: 7, Len: 120 Multicast Source Discovery Protocol Type: IPv4 Source-Active (1) Length: 120 Entry Count: 1 RP Address: 10.2.2.2 (10.2.2.2) (S,G) block: 10.1.1.1/32 -> 239.4.4.4 Reserved: 0x000020 Sprefix len: 32 Group Address: 239.4.4.4 (239.4.4.4) Source Address: 10.1.1.1 (10.1.1.1) Encapsulated IPv4 packet: 100 bytes Internet Protocol Version 4, Src: 10.1.1.1 (10.1.1.1), Dst: 239.4.4.4 (239.4.4.4) Internet Control Message Protocol
SA cache
MSDP Source Active messageを受信すると、ルータは(S, G)エントリをSA cacheに保存します。SA cacheは以下のコマンドで表示できます。
R3#show ip msdp sa-cache MSDP Source-Active Cache - 1 entries (10.1.1.1, 239.4.4.4), RP 10.2.2.2, BGP/AS 0, 00:00:49/00:05:57, Peer 10.2.2.2 R3#
SA cacheにエントリが載ると、RPF checkに適合するかどうかを調査します。適合した場合は、PIM (S, G) joinメッセージを送りRP間の転送を実現するツリーを作成します。なお、SA message受信後のPIM (S, G) join送信の様子は以下デバッグメッセージより確認する事ができます。
[R3] R3#debug ip msdp routes MSDP Routes debugging is on R3#debug ip pim PIM debugging is on R3# *Mar 1 00:03:44.135: MSDP(0): (10.1.1.1/32, 239.4.4.4), accepted *Mar 1 00:03:44.143: PIM(0): Insert (10.1.1.1,239.4.4.4) join in nbr 192.168.23.2's queue *Mar 1 00:03:44.147: PIM(0): Building Join/Prune packet for nbr 192.168.23.2 *Mar 1 00:03:44.151: PIM(0): Adding v2 (10.1.1.1/32, 239.4.4.4), S-bit Join *Mar 1 00:03:44.155: PIM(0): Send v2 join/prune to 192.168.23.2 (Ethernet0/1) *Mar 1 00:03:44.215: PIM(0): Received v2 Join/Prune on Ethernet0/0 from 192.168.34.4, to us *Mar 1 00:03:44.219: PIM(0): Join-list: (10.1.1.1/32, 239.4.4.4), S-bit set *Mar 1 00:03:44.223: PIM(0): Update Ethernet0/0/192.168.34.4 to (10.1.1.1, 239.4.4.4), Forward state, by PIM SG Join *Mar 1 00:03:55.695: PIM(0): Send RP-reachability for 239.4.4.4 on Ethernet0/0 R3#
ルーティングテーブルの確認
RP間を結ぶ(S, G)エントリが作成された事を確認します。
[R2] R2#show ip mroute 239.4.4.4 <omitted> (*, 239.4.4.4), 00:05:17/stopped, RP 10.2.2.2, flags: SP Incoming interface: Null, RPF nbr 0.0.0.0 Outgoing interface list: Null (10.1.1.1, 239.4.4.4), 00:00:02/00:02:57, flags: TA Incoming interface: Ethernet0/1, RPF nbr 192.168.12.1 Outgoing interface list: Ethernet0/0, Forward/Sparse, 00:00:02/00:03:27 R2# [R3] R3#show ip mroute 239.4.4.4 <omitted> (*, 239.4.4.4), 00:05:17/00:02:55, RP 10.3.3.3, flags: S Incoming interface: Null, RPF nbr 0.0.0.0 Outgoing interface list: Ethernet0/0, Forward/Sparse, 00:04:29/00:02:55 (10.1.1.1, 239.4.4.4), 00:00:43/00:02:58, flags: MT Incoming interface: Ethernet0/1, RPF nbr 192.168.23.2 Outgoing interface list: Ethernet0/0, Forward/Sparse, 00:00:43/00:02:55 R3#
構成図 2
これ以降の動作確認は、以下の環境で行います。
[ip address] e0/0 e0/1 .2+--------+.2 ┌--+ R2 +--┐ +--------+ │ +--------+ │ +--------+ +--------+ +--------+ | R1 +----┤ ├----+ R4 +--------+ R5 +--------+ R6 | +--------+.1 │ +--------+ │ .4+--------+.4 .5+--------+.5 .6+--------+ e0/0 └--+ R3 +--┘ e0/1 e0/0 e0/1 e0/0 e0/1 .3+--------+.3 192.168.123.0/24 192.168.234.0/24 192.168.45.0/24 192.168.56.0/24 R1 Loopback0 R2 Loopback0 R3 Loopback0 R4 Loopback0 R5 Loopback0 R6 Loopback0 10.1.1.1/32 10.2.2.2/32 10.3.3.3/32 10.4.4.4/32 10.5.5.5/32 10.6.6.6/32 [bgp domain] +--------+ ┌--+ R2 +--┐ +--------+ │ +--------+ │ +--------+ +--------+ +--------+ | R1 +----┤ AS 400 ├----+ R4 +--------+ R5 +--------+ R6 | +--------+ │ +--------+ │ +--------+ +--------+ +--------+ AS 400 └--+ R3 +--┘ AS 400 AS 500 AS 500 +--------+ AS 400 [multicast domain] +--------+ ┌--+ R2 +--┐ +--------+ │ +--------+ │ +--------+ +--------+ +--------+ | R1 +----┤ RP Candidator├----+ R4 + + R5 +--------+ R6 | +--------+ │ +--------+ │ +--------+ +--------+ +--------+ └--+ R3 +--┘ BSR Router static RP +--------+ RP Candidator
[R1] router eigrp 10 network 0.0.0.0 no auto-summary ! router bgp 400 neighbor 10.4.4.4 remote-as 400 neighbor 10.4.4.4 update-source Loopback0 [R2] router eigrp 10 network 0.0.0.0 no auto-summary ! router bgp 400 neighbor 10.4.4.4 remote-as 400 neighbor 10.4.4.4 update-source Loopback0 ! ip pim rp-candidate Loopback0 [R3] router eigrp 10 network 0.0.0.0 no auto-summary ! router bgp 400 neighbor 10.4.4.4 remote-as 400 neighbor 10.4.4.4 update-source Loopback0 ! ip pim rp-candidate Loopback0 [R4] interface Ethernet0/0 ip pim bsr-border ! router eigrp 10 network 0.0.0.0 no auto-summary ! router bgp 400 neighbor IBGP peer-group neighbor IBGP remote-as 400 neighbor IBGP update-source Loopback0 neighbor IBGP route-reflector-client neighbor 10.1.1.1 peer-group IBGP neighbor 10.2.2.2 peer-group IBGP neighbor 10.3.3.3 peer-group IBGP neighbor 10.5.5.5 remote-as 500 neighbor 10.5.5.5 ebgp-multihop 255 neighbor 10.5.5.5 update-source Loopback0 ! ip pim bsr-candidate Loopback0 32 [R5] router eigrp 10 network 0.0.0.0 no auto-summary ! router bgp 500 neighbor 10.4.4.4 remote-as 400 neighbor 10.4.4.4 ebgp-multihop 255 neighbor 10.4.4.4 update-source Loopback0 neighbor 10.6.6.6 remote-as 500 neighbor 10.6.6.6 update-source Loopback0 ! ip pim rp-address 10.5.5.5 [R6] router eigrp 10 network 0.0.0.0 no auto-summary ! router bgp 500 neighbor 10.5.5.5 remote-as 500 neighbor 10.5.5.5 update-source Loopback0 ! ip pim rp-address 10.5.5.5
設定全文は下記ファイルです。詳細設定は下記を参照ください。
MSDP peer 2
MSDP peer
AS400, AS500をまたぐMSDP peerを確立します。この構成の場合、AS400のRPが冗長化, 負荷分散されている事に注意して下さい。つまり、R2, R5間とR3, R5間でMSDP peerを確立する必要があります。
[R2] ip msdp peer 10.5.5.5 connect-source Loopback 0 remote-as 500 [R3] ip msdp peer 10.5.5.5 connect-source Loopback 0 remote-as 500 [R5] ip msdp peer 10.2.2.2 connect-source Loopback 0 remote-as 400 ip msdp peer 10.3.3.3 connect-source Loopback 0 remote-as 400
MSDP peerが確立された事を確認します。
[R5] R5#show ip msdp peer | include MSDP Peer|State MSDP Peer 10.2.2.2 (?), AS 400 (configured AS) State: Up, Resets: 0, Connection source: Loopback0 (10.5.5.5) MSDP Peer 10.3.3.3 (?), AS 400 (configured AS) State: Up, Resets: 0, Connection source: Loopback0 (10.5.5.5) R5#
疎通確認
AS400, AS500間で疎通可能な事を確認します。
[R6] interface Loopback0 ip igmp join-group 239.6.6.1 ip igmp join-group 239.6.6.2 ip igmp join-group 239.6.6.3 ip igmp join-group 239.6.6.4 ip igmp join-group 239.6.6.5 ip igmp join-group 239.6.6.6 [R1] R1#ping 239.6.6.1 source Loopback 0 repeat 3 Type escape sequence to abort. Sending 3, 100-byte ICMP Echos to 239.6.6.1, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 Reply to request 0 from 192.168.56.6, 212 ms Reply to request 1 from 192.168.56.6, 180 ms Reply to request 1 from 192.168.56.6, 180 ms Reply to request 2 from 192.168.56.6, 220 ms Reply to request 2 from 192.168.56.6, 224 ms R1# R1# R1#ping 239.6.6.2 source Loopback 0 repeat 3 Type escape sequence to abort. Sending 3, 100-byte ICMP Echos to 239.6.6.2, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 Reply to request 0 from 192.168.56.6, 208 ms Reply to request 1 from 192.168.56.6, 152 ms Reply to request 1 from 192.168.56.6, 152 ms Reply to request 2 from 192.168.56.6, 132 ms Reply to request 2 from 192.168.56.6, 132 ms R1# R1# R1#ping 239.6.6.3 source Loopback 0 repeat 3 Type escape sequence to abort. Sending 3, 100-byte ICMP Echos to 239.6.6.3, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 Reply to request 0 from 192.168.56.6, 160 ms Reply to request 1 from 192.168.56.6, 140 ms <omitted>