【BGP入門】BGPの基本設定を学んでみよう

  • URLをコピーしました!
目次

はじめに

こんにちは。ネットワークエンジニアの「だいまる」です。

今回は、今まで学んできたBGPの基本を実機を使って確認し、理解を深めていきたいと思います。

理解には、実機確認が一番早い!

世界一流エンジニアの思考法
〜Microsoftエンジニアが語る一流エンジニアとは?〜

検証構成

今回、実機確認で用いるのはEVE-NGで構築した以下の構成を利用します。

Cisco IOSを使って確認していきます!

ルータの若番が小さいIPアドレスに設定しています。

この構成の理由は、「iBGP」、「eBGP」、「Network文による経路広報」の3つを確認するためにASを2つ、同じAS内に複数のルータを構築しました。

インターネットルーティング入門 第3版
〜図解でわかる経路制御の仕組み!〜

実際に動作確認をしてみよう!

先程も少し触れましたが、今回は以下の表に記載の3項目について実機確認を実施していきます。

No項目確認内容
1iBGPの設定iBGPの設定とパケットキャプチャ
2eBGPの設定eBGPの設定とパケットキャプチャ
3Network文による経路広報の設定AS内外への経路広報とパケットキャプチャ

項目①:iBGPの設定

最初の設定と確認は、同一AS内に存在するルータで設定する「iBGP」です。

iBGP」は、同じASに属する全ルータでピアを張り合う「フルメッシュ構成」にする必要があります。

その手間を省くためにルートリフレクタを使う場合もあります!

基本となるコマンド

BGPかつiBGPピアのための基本となる設定は以下のコマンドを利用します。

(config)# router bgp <AS番号>
(config-router)# bgp router-id <BGPルータIDとするIPアドレス>
(config-router)# neighbor <接続先IPアドレス> remote-as <接続先のAS番号> *iBGPの場合:同一AS番号
(config-router)# neighbor <IPアドレス> update-source <接続元となるInterface>

設定ログ

実際に実機に投入したConfigの一例を以下にまとめておきます。

Router1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router1(config)#router bgp 100
Router1(config-router)#neighbor 10.10.3.1 remote-as 100
Router1(config-router)#neighbor 10.10.3.1 update-source loopback 0

状態確認

iBGPピアの設定後は、実際にピアが確立できているかどうかを確認してみましょう。

「show ip bgp summary」で確認でき、ネイバーごとのAS番号やVersion、BGPメッセージの送受信数、Up/Down時間や状態を確認することができます。

BGPピア状態を確認したいならこのコマンドが一般的だと思います!

Router1#show ip bgp summary
BGP router identifier 10.10.1.1, local AS number 100
BGP table version is 1, main routing table version 1

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.10.2.1       4          100      19      18        1    0    0 00:13:21        0
10.10.3.1       4          100       6       4        1    0    0 00:02:44        0
10.10.4.1       4          100       2       2        1    0    0 00:00:35        0
Router1#

パケットキャプチャ

Router1とRouter2間でiBGPピアを確立した時のパケットキャプチャを実施してみました。

最初にRouter1(10.10.1.1)とRouter2(10.10.2.1)を送信元としたOPENメッセージがそれぞれ送信されています。

確立後にはKEEPALIVEメッセージが送信されていることが確認できます。

OPENメッセージのOptional Parametersを見ていくとAS番号(100)なのがわかります。

ネットワークエンジニアの教科書
〜ネットワークエンジニアを目指す人、ネットワークエンジニアになったばかりの人におすすめの1冊〜

項目②:eBGPの設定

次に確認するのは、外部ASに存在するルータと接続を行う「eBGP」です。

eBGP」の設定は、「iBGP」と基本的に同じ設定になり、「接続先のAS番号」で判別されます。

eBGPではルートリフレクタを基本的には利用しません

基本となるコマンド

(config)# router bgp <AS番号>
(config-router)# bgp router-id <BGPルータIDとするIPアドレス>
(config-router)# neighbor <接続先IPアドレス> remote-as <接続先のAS番号> *eBGPの場合:異なるAS番号
(config-router)# neighbor <IPアドレス> update-source <接続元となるInterface>

設定ログ

Router1(config)# router bgp 100
Router1(config-router)# neighbor 192.168.1.2 remote-as 200
Router1(config-router)# neighbor 192.168.1.2 update-source gigabitEthernet 0/3
Router5(config)# router bgp 200
Router5(config-router)# neighbor 192.168.1.1 remote-as 100
Router1(config-router)# neighbor 192.168.1.2 update-source gigabitEthernet 0/3

状態確認

設定では「remote-as」で指定するAS番号がそれぞれ異なるように設定しているため、「eBGP」として判断されます。

「show ip bgp summary」では、AS番号を見て判断することになります。

Router1#show ip bgp summary
BGP router identifier 10.10.1.1, local AS number 100
BGP table version is 1, main routing table version 1

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.10.2.1       4          100     139     139        1    0    0 02:04:06        0
10.10.3.1       4          100      14      15        1    0    0 00:11:46        0
10.10.4.1       4          100      15      14        1    0    0 00:11:37        0
192.168.1.2     4          200      11      11        1    0    0 00:06:32        0

パケットキャプチャ

項目③:Network文による経路広報の設定

最後に確認するのは、Network文による経路広報を確認していきたいと思います。

確認ポイントは「ルータ4」と「ルータ7」です。

このルータでLoopbackを広報し確認していきます。

基本となるコマンド

(config)# router bgp <AS番号>
(config-router)# network <広報するPrefix/IPアドレス> mask X.X.X.X(Prefix長)

設定ログ

Router4(config)#router bgp 100
Router4(config-router)#network 10.10.4.1 mask 255.255.255.255

状態確認

ルータ7で事前状態を確認してみたいと思います。

Router7#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 8 subnets, 2 masks
O        10.2.0.0/30 [110/2] via 10.2.2.1, 02:14:03, GigabitEthernet0/3
                     [110/2] via 10.2.1.1, 02:14:03, GigabitEthernet0/2
C        10.2.1.0/30 is directly connected, GigabitEthernet0/2
L        10.2.1.2/32 is directly connected, GigabitEthernet0/2
C        10.2.2.0/30 is directly connected, GigabitEthernet0/3
L        10.2.2.2/32 is directly connected, GigabitEthernet0/3
O        10.20.5.1/32 [110/2] via 10.2.1.1, 02:14:03, GigabitEthernet0/2
O        10.20.6.1/32 [110/2] via 10.2.2.1, 02:14:03, GigabitEthernet0/3
C        10.20.7.1/32 is directly connected, Loopback0

最初の状態ではルーティングテーブルに何もありませんが、「設定ログ」で記載したConfigを投入後どうなっているか確認していきましょう。

Router7#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 8 subnets, 2 masks
O        10.2.0.0/30 [110/2] via 10.2.2.1, 02:23:24, GigabitEthernet0/3
                     [110/2] via 10.2.1.1, 02:23:24, GigabitEthernet0/2
C        10.2.1.0/30 is directly connected, GigabitEthernet0/2
L        10.2.1.2/32 is directly connected, GigabitEthernet0/2
C        10.2.2.0/30 is directly connected, GigabitEthernet0/3
L        10.2.2.2/32 is directly connected, GigabitEthernet0/3
O        10.20.5.1/32 [110/2] via 10.2.1.1, 02:23:24, GigabitEthernet0/2
O        10.20.6.1/32 [110/2] via 10.2.2.1, 02:23:24, GigabitEthernet0/3
C        10.20.7.1/32 is directly connected, Loopback0

設定投入後にも関わらず「10.10.4.1/32」がありません。

では、BGPテーブルを見ていきましょう。

Router7#show ip bgp
BGP table version is 2, local router ID is 10.20.7.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,
              t secondary path,
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  10.10.4.1/32     192.168.1.1              0    100      0 100 i
 *>   10.20.7.1/32     0.0.0.0                  0         32768 i
Router7#

「10.10.4.1」をしっかり受信していますが、ルーティングテーブルには出力されていません。

これはなぜでしょう?

原因は?

ルータ7がNexthopとなっている「192.168.1.1」の経路を持っていないため

これを解決するためには、eBGPピアを持つルータ(ルータ5)から各iBGPに対し「next-hop-self」を設定してあげます。

この設定でeBGPルータが持つIPアドレスにnexthopを書き換えることができます

Router5(config)#router bgp 200
Router5(config-router)#neighbor 10.20.6.1 next-hop-self
Router5(config-router)#neighbor 10.20.7.1 next-hop-self

設定後の状態を確認してみましょう。

Router7#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 9 subnets, 2 masks
O        10.2.0.0/30 [110/2] via 10.2.2.1, 02:33:31, GigabitEthernet0/3
                     [110/2] via 10.2.1.1, 02:33:31, GigabitEthernet0/2
C        10.2.1.0/30 is directly connected, GigabitEthernet0/2
L        10.2.1.2/32 is directly connected, GigabitEthernet0/2
C        10.2.2.0/30 is directly connected, GigabitEthernet0/3
L        10.2.2.2/32 is directly connected, GigabitEthernet0/3
B        10.10.4.1/32 [200/0] via 10.20.5.1, 00:01:02
O        10.20.5.1/32 [110/2] via 10.2.1.1, 02:33:31, GigabitEthernet0/2
O        10.20.6.1/32 [110/2] via 10.2.2.1, 02:33:31, GigabitEthernet0/3
C        10.20.7.1/32 is directly connected, Loopback0
Router7#

「10.10.4.1/32」がしっかり反映されたことがわかります。

パケットキャプチャ

Network文を設定した際のパケットをキャプチャしたところ、「UPDATEメッセージ」にしっかり載っていました。

インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門
〜2万4000部突破のベストセラーが5年ぶりの改訂!〜

最後に

今までの記事でBGPの基本を学んできたため、Cisco IOSによる実機確認をまとめてみました。

次回の記事からはBGPについて、もう少し深く触れて理解していきたいと思います。

  • URLをコピーしました!

この記事を書いた人

目次