BGPを構成するルータ間は、経路情報を交換するため、ルータ同士を接続(ピアリング)する必要があります。 BGPはTCP179番ポートを使用したTCPセッションによりピアリングします。 そのため、ピアリングするルータ間は、TCPセッションがはれるよう、ネットワーク的に疎通ができないといけません。
内部BGP

直接接続リンク間でのピアリング
直接接続のリンク(192.168.12.0/24)を使用して、BGPピアリングします。
ルータ間でAS番号は同じで、このピアリングは内部BGP(iBGP)ピアリングと言います。
R1(config)#router bgp 12 R1(config-router)#neighbor 192.168.12.2 remote-as 12
R2(config)#router bgp 12 R2(config-router)#neighbor 192.168.12.1 remote-as 12
BGPを開始するには、AS番号を指定するrouter bgpコマンドを使用します。ネイバーは自動的に発見されません。これは、neighbor コマンドを使用して自分で行う必要があります。 neighbor コマンドで、ピアリングしたいルータのIPアドレスとAS番号を指定します。 しばらくすると、 ルータ間で隣接関係(ネイバー)が起動し、ピアリングが確立されます。
R1# *Apr 26 03:13:00.720: %BGP-5-ADJCHANGE: neighbor 192.168.12.2 Up
R1とR2間のピアリングネゴシエーションの詳細(バージョン、AS番号、ルータID、タイマー)は以下の通りです。
R1#show ip bgp neighbors 192.168.12.2 BGP neighbor is 192.168.12.2, remote AS 12, internal link BGP version 4, remote router ID 2.2.2.2 BGP state = Established, up for 00:06:00 Last read 00:00:20, last write 00:00:32, hold time is 180, keepalive interval is 60 seconds
BGPで隣接関係を確認するのに、以下のコマンドが便利です。
R1#show ip bgp summary
BGP router identifier 1.1.1.1, local AS number 12
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.168.12.2 4 12 22 22 1 0 0 00:16:44 0
State/PfxRcd には、受信したルート数(プレフィックス数)が表示されます。 以下のコマンドで、実際に学習されたBGPプレフィックスを確認できます。
R1#show ip bgp R1
今は、ルータ間でネイバーを張っただけなので、ゼロで正解です。(ここがActiveになると、ネイバー関係に問題があります)
では、ここで、networkコマンドを使用してR2のループバックアドレスをR1へアドバタイズします。BGPでプレフィックスをアドバタイズする場合は、アドバタイズするネットワークとサブネットマスクは正確に設定する必要があります。
R2(config)#router bgp 12 R2(config-router)#network 2.2.2.2 mask 255.255.255.255
すると、R1でR2のループバックアドレスを学習します。
R1#show ip bgp
BGP table version is 2, local router ID is 1.1.1.1
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.12.2 0 100 0 i
show ip bgp summary も確認すると、State/PfxRcdが1 となり、消費メモリなどの情報が出力されます。
R1#show ip bgp summary BGP router identifier 1.1.1.1, local AS number 12 BGP table version is 2, main routing table version 2 1 network entries using 140 bytes of memory 1 path entries using 80 bytes of memory 1/1 BGP path/bestpath attribute entries using 144 bytes of memory 0 BGP route-map cache entries using 0 bytes of memory 0 BGP filter-list cache entries using 0 bytes of memory BGP using 364 total bytes of memory BGP activity 1/0 prefixes, 1/0 paths, scan interval 60 secs Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.12.2 4 12 46 45 2 0 0 00:38:01 1
ループバックアドレス間でのピアリング
BGPピアリングはトランスポートにTCPを使用するため、OSPFのマルチキャストのようにネイバーが直接接続されている必要はありません。
可用性を高めるため、ルータのループバックインタフェース間でピアリングする設計することが多くあります。送信元アドレスをループバックアドレスに設定する必要があり、update-source コマンドで変更できます。また、各ループバックアドレス間が通信できるよう、R1、R2それぞれにスタティックルートも設定します。
R1(config)#ip route 2.2.2.2 255.255.255.255 192.168.12.2
R1(config)#router bgp 12
R1(config-router)#neighbor 2.2.2.2 remote-as 12
R1(config-router)#neighbor 2.2.2.2 update-source loopback 0
R2(config)#ip route 1.1.1.1 255.255.255.255 192.168.12.1
R2(config)#router bgp 12
R2(config-router)#neighbor 1.1.1.1 remote-as 12
R2(config-router)#neighbor 1.1.1.1 update-source loopback 0
BGPピアリングするルータ間は、IGPや今回のようにスタティックルートで、疎通できる必要があります。
しばらくすると、 ルータ間で隣接関係(ネイバー)が起動し、ピアリングが確立されます。
R1(config)# *May 31 10:26:51.426: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Up
その他のピアリングネゴシエーションの詳細以降は、直接接続リンク間でのピアリングと同じです
その他 BGP関連記事は >> ルーティングプロトコル(BGP)まとめ << より参照できます。
コメント