ルートリフレクタの概要
ルートリフレクタとしてルータを選出し、各ルータは、ルートリフレクタとiBGPピアリングします。 iBGPルート情報は、ルートリフレクタを介して、他のルータへルートを反映(リフレクト)します。
上記の図で、RRがルートリフレクタ、R1〜R3がルートリフレクタクライアントです。 R1が送信した1.1.1.1/32のプレフィックス情報をRRに送信すると、他のクライアント(R2,R3)にもアドバタイズされます。
ルートリフレクタは以下のルールに従い、ルートを転送します。
– EBGPネイバーから学習したルートは、別のEBGPネイバー、クライアント、非クライアントに転送できます。
– クライアントから学習したルートは、別のEBGPネイバー、クライアント、非クライアントに転送できます。
– 非クライアントから学習したルートは、別のEBGPネイバーおよびクライアントに転送できますが、非クライアントには転送できません。
ルートリフレクタの設定
では、以下の通り、R5をルートリフレクタとし、R2とR3をルートリフレクタクライアントとして、構成します。 R2とR3間の直接ネイバーの設定は削除します。
R2とR3は通常の iBGP設定と同じです。追加でルートリフレクタ側で、neighborコマンドのオプションに、route-reflector-clientを設定します。
R5(config)#router bgp 235 R5(config-router)#neighbor 192.168.25.2 remote-as 235 R5(config-router)#neighbor 192.168.25.2 route-reflector-client *Apr 26 08:21:49.868: %BGP-5-ADJCHANGE: neighbor 192.168.25.2 Down RR client config change *Apr 26 08:21:49.868: %BGP_SESSION-5-ADJCHANGE: neighbor 192.168.25.2 IPv4 Unicast topology base removed from session RR client config change *Apr 26 08:21:50.172: %BGP-5-ADJCHANGE: neighbor 192.168.25.2 Up R5(config-router)#neighbor 192.168.35.3 remote-as 235 R5(config-router)#neighbor 192.168.35.3 route-reflector-client *Apr 26 08:22:24.137: %BGP-5-ADJCHANGE: neighbor 192.168.35.3 Down RR client config change *Apr 26 08:22:24.137: %BGP_SESSION-5-ADJCHANGE: neighbor 192.168.35.3 IPv4 Unicast topology base removed from session RR client config change *Apr 26 08:22:25.162: %BGP-5-ADJCHANGE: neighbor 192.168.35.3 Up
R2でループバックをnetworkコマンドでアドバタイズします。
R2(config)#router bgp 235 R2(config-router)#network 2.2.2.2 mask 255.255.255.255
R3で2.2.2.2/32を学習しているかどうか、確認します。
R3#sh ip bgp
BGP table version is 4, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
* i 2.2.2.2/32 192.168.25.2 0 100 0 i
*> 3.3.3.3/32 0.0.0.0 0 32768 i
2.2.2.2/32を学習していることが確認できました。ただし、ベストパスではありません。 これは、R3でネクストホップ(192.168.25.2)への到達性がないからです。
R2,R3,R5 でEIGRPを設定し、ルータ間のセグメントが接続できるようにします。
R5(config)#router eigrp 100 R5(config-router)#network 192.168.25.0 0.0.0.255 R5(config-router)#network 192.168.35.0 0.0.0.255 R2(config)#router eigrp 100 R2(config-router)#network 192.168.25.0 0.0.0.255 R3(config)#router eigrp 100 R3(config-router)#network 192.168.35.0 0.0.0.255
これで、R3は2.2.2.2/32をベストパスと見なします。
R3#sh ip bgp
BGP table version is 5, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*>i 2.2.2.2/32 192.168.25.2 0 100 0 i
*> 3.3.3.3/32 0.0.0.0 0 32768 i
外部ASからのルート挿入
では、R1のAS1とR2をEBGPでピアリングし、R1のループバックを広告します。
R1(config)#router bgp 1 R1(config-router)#neighbor 192.168.12.2 remote-as 235 R1(config-router)#network 1.1.1.1 mask 255.255.255.255
R2(config)#router bgp 235 R2(config-router)#neighbor 192.168.12.1 remote-as 1
しばらくすると、ネイバーがアップします。
R1# *Apr 26 08:41:04.808: %BGP-5-ADJCHANGE: neighbor 192.168.12.2 Up
R2でBGPテーブルを確認します。
R2#sh ip bgp
BGP table version is 6, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.1/32 192.168.12.1 0 0 1 i
*> 2.2.2.2/32 0.0.0.0 0 32768 i
*>i 3.3.3.3/32 192.168.35.3 0 100 0 i
1.1.1.1/32をネクストホップ192.168.12.1 で学習しています。eBGPで学習した経路は、iBGPネイバーへアドバタイズされます。 R5のBGPテーブルを確認します。
R5#sh ip bgp
BGP table version is 7, local router ID is 5.5.5.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
* i 1.1.1.1/32 192.168.12.1 0 100 0 1 i
*>i 2.2.2.2/32 192.168.25.2 0 100 0 i
*>i 3.3.3.3/32 192.168.35.3 0 100 0 i
1.1.1.1/32を学習しています。ただし、R3のBGPテーブルには、登録されていません。
R3#sh ip bgp 1.1.1.1 % Network not in table
R5のBGPテーブルを見ると、1.1.1.1/32がベストパスになっていません。 そのため、ベストパスでない経路は、他のBGPネイバーへアドバタイズしないためです。
R5で1.1.1.1/32へのネクストホップ(192.168.12.1)への到達性がないので、R2のEIGRPで192.168.12.0/24をアドバタイズします。
R2(config)#router eigrp 100 R2(config-router)#network 192.168.12.0 0.0.0.255
R5で1.1.1.1/32がベストパスとなりました。
R5#sh ip bgp BGP table version is 8, local router ID is 5.5.5.5 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *>i 1.1.1.1/32 192.168.12.1 0 100 0 1 i *>i 2.2.2.2/32 192.168.25.2 0 100 0 i *>i 3.3.3.3/32 192.168.35.3 0 100 0 i
R3でも1.1.1.1/32を学習し、ベストパスになっています。
R3#sh ip bgp
BGP table version is 6, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*>i 1.1.1.1/32 192.168.12.1 0 100 0 1 i
*>i 2.2.2.2/32 192.168.25.2 0 100 0 i
*> 3.3.3.3/32 0.0.0.0 0 32768 i
属性(Originator、Cluster-list)
もう少し、ルートリフレクタについて、検証します。 R5で、受信した1.1.1.1/32のルート情報の詳細を見てみます。
R5#sh ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 8
Paths: (1 available, best #1, table default)
Advertised to update-groups:
2
Refresh Epoch 1
1, (Received from a RR-client)
192.168.12.1 (metric 307200) from 192.168.25.2 (2.2.2.2)
Origin IGP, metric 0, localpref 100, valid, internal, best
rx pathid: 0, tx pathid: 0x0
ルートリフレクタクライアントから受信したルートだとわかります。(Received from a RR-client) そのため、このルートをクライアントであるR3にアドバタイズします。
R5#show ip bgp neighbors 192.168.35.3 advertised-routes BGP table version is 8, local router ID is 5.5.5.5 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *>i 1.1.1.1/32 192.168.12.1 0 100 0 1 i *>i 2.2.2.2/32 192.168.25.2 0 100 0 i *>i 3.3.3.3/32 192.168.35.3 0 100 0 i Total number of prefixes 3
R3では、1.1.1.1/32がどのように見えるのか確認します。
R3#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 6
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 2
1
192.168.12.1 (metric 332800) from 192.168.35.5 (5.5.5.5)
Origin IGP, metric 0, localpref 100, valid, internal, best
Originator: 2.2.2.2, Cluster list: 5.5.5.5
rx pathid: 0, tx pathid: 0x0
すると、以下2つの新しいフィールドが現れています。
* Originator: 2.2.2.2
* Cluster list: 5.5.5.5
元々、iBGPでは、ネイバーから受信したルートを他のネイバーにアドバタイズしないことで、ルートループ防止していました。 これをルートリフレクタにより、上記のようなループ防止ができなくなるため、別の方法で、ループ防止する必要があります。
Originatorは、ルートリフレクタにより付与され、ルートの発生源であるR2でルータIDであることがわかります。 OriginatorのルータIDが含まれルートは再度、Originatorのルータでルートの受信を拒否します。 もう一つのCluster listは、ルートリフレクタのルータIDです。複数のルートリフレクタが存在するときに、Cluster listに自身のルータIDがあると、受信したルートは拒否されます。
R2とR3間でiBGPネイバーを設定します。
R2(config)#router bgp 235 R2(config-router)#neighbor 192.168.23.3 remote-as 235
R3(config)#router bgp 235 R3(config-router)#neighbor 192.168.23.2 remote-as 235
R3のBGPテーブルを確認します。
R3#sh ip bgp BGP table version is 8, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *>i 1.1.1.1/32 192.168.12.1 0 100 0 1 i * i 192.168.12.1 0 100 0 1 i *>i 2.2.2.2/32 192.168.23.2 0 100 0 i * i 192.168.25.2 0 100 0 i *> 3.3.3.3/32 0.0.0.0 0 32768 I
1.1.1.1/32の詳細を確認すると、R2と直接アドバタイズされた方をベストパスとしています。
R3#sh ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 7
Paths: (2 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 2
1
192.168.12.1 (metric 332800) from 192.168.23.2 (2.2.2.2)
Origin IGP, metric 0, localpref 100, valid, internal, best
rx pathid: 0, tx pathid: 0x0
Refresh Epoch 2
1
192.168.12.1 (metric 332800) from 192.168.35.5 (5.5.5.5)
Origin IGP, metric 0, localpref 100, valid, internal
Originator: 2.2.2.2, Cluster list: 5.5.5.5
rx pathid: 0, tx pathid: 0
ベストパスの選定で、BGPピアのルータIDが最も小さいルートを優先しています。
その他 BGP関連記事は >> ルーティングプロトコル(BGP)まとめ << より参照できます。
コメント