外部BGPではリモートのAS番号がローカルのAS番号とは異なります。これが、内部BGP(iBGP)と外部BGP(eBGP)の大きな違いです。
外部BGPの設定
設定
設定コマンドは、内部BGPの設定から、リモートASの番号をローカルAS番号と異なる値に設定します。
R1(config)#router bgp 1 R1(config-router)#neighbor 192.168.12.2 remote-as 23
R2(config)#router bgp 23 R2(config-router)#neighbor 192.168.12.1 remote-as 1
しばらくすると、 ルータ間で隣接関係(ネイバー)が起動し、ピアリングが確立されます。
R1# *Apr 26 05:16:45.486: %BGP-5-ADJCHANGE: neighbor 192.168.12.2 Up
iBGPとの違いを見ていきます。
R1#show ip bgp neighbors 192.168.12.2
BGP neighbor is 192.168.12.2, remote AS 23, external link
BGP version 4, remote router ID 2.2.2.2
BGP state = Established, up for 00:02:19
Last read 00:00:23, last write 00:00:27, hold time is 180, keepalive interval is 60 seconds
AS23とのピアリングで、外部リンク(external link)と認識しています。
TTL(Time To Live)の確認
R1とR2のTCPセッションをWireSharkでみてみます。
TTLが255ではなく1になっています。これは、ネイバーが直接接続されていなければいけないことを意味します。複数ホップを経由すると、BGPのTCPセッションはドロップします。
プレフィックスの広告
それでは、R1のループバックインタフェースをBGPにアドバタイズしてみます。
R1(config)#router bgp 1 R1(config-router)#network 1.1.1.1 mask 255.255.255.255
R2で1.1.1.1/32を学習していることを確認します。
R2#show ip bgp BGP table version is 2, 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
Next Hop は R1(192.168.12.1) になります。
show ip bgp出力の左列にある記号(>)は、ベストパスであることを意味します。複数ルータから同一プレフィックを学習した際に、どのルータから学習したものがベストパスなのかがわかります。 ベストパスはルーティングテーブルに保存され、他のBGPネイバーにアドバタイズされます。
R2#show ip route 1.0.0.0/32 is subnetted, 1 subnets B 1.1.1.1 [20/0] via 192.168.12.1, 00:04:20
NextHopの到達性
次に、R2とR3で、iBGP設定し、R3で、1.1.1.1/32がどのように見えるか確認してみます。
R2(config)#router bgp 23 R2(config-router)#neighbor 192.168.23.3 remote-as 23
R3(config)#router bgp 23 R3(config-router)#neighbor 192.168.23.2 remote-as 23 *Apr 26 05:35:14.348: %BGP-5-ADJCHANGE: neighbor 192.168.23.2 Up
R3で1.1.1.1/32を学習しているか確認します。
R3#show ip bgp BGP table version is 1, 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
show ip bgp出力の左列にある記号(>)がなく、ベストパスではありません。そのため、ルーティングテーブルにも、保存されません。 1.1.1.1/32に対して、もう少し詳しくみます。
R3#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 0
Paths: (1 available, no best path)
Not advertised to any peer
Refresh Epoch 1
1
192.168.12.1 (inaccessible) from 192.168.23.2 (2.2.2.2)
Origin IGP, metric 0, localpref 100, valid, internal
rx pathid: 0, tx pathid: 0
まず、Next HopがR1(192.168.12.1) であり、R2からR3へアドバタイズする際に、Next Hop値が変更されていません。
iBGPでは、Next Hop値はデフォルトでは変更されません。 R3に192.168.12.1へのルーティングがないため、NextHopに到達できず(inaccessible)、1.1.1.1をベストパスとして認識しません。
R3 に192.168.12.1 へのスタティックルートを設定してみます。
R3(config)#ip route 192.168.12.1 255.255.255.255 192.168.23.2
R3#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 2 Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 1 192.168.12.1 from 192.168.23.2 (2.2.2.2) Origin IGP, metric 0, localpref 100, valid, internal, best rx pathid: 0, tx pathid: 0x0
inaccessibleが消えました。ベストパスになったかどうか確認します。
R3#show ip bgp
BGP table version is 2, 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
記号 > が出力され、ベストパスになりました。ルーティングテーブルにも、登録されています。
R3#show ip route bgp 1.0.0.0/32 is subnetted, 1 subnets B 1.1.1.1 [200/0] via 192.168.12.1, 00:03:16
補足
R3に追加したルーティングテーブルですが、実際にNextHopへの到達ができるかどうかは関係ありません。 単純に192.168.12.1へ到達できるルーティングテーブルが存在するか否かのみチェックされます。
R3(config)#ip route 192.168.12.1 255.255.255.255 Null 0
例えば、192.168.12.1 へのルーティングテーブルでNextHopをNULLインタフェースにします。 これでも、R3は、1.1.1.1をベストパスとみなします。
R3#show ip bgp
Network Next Hop Metric LocPrf Weight Path
*>i 1.1.1.1/32 192.168.12.1 0 100 0 1 i
その他 BGP関連記事は >> ルーティングプロトコル(BGP)まとめ << より参照できます。
コメント