【BGP】ルートリフレクタ

BGP
スポンサーリンク

ルートリフレクタの概要

 ルートリフレクタとしてルータを選出し、各ルータは、ルートリフレクタと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)まとめ << より参照できます。

コメント

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