ネットワーク構成

図 BGPの基本的な設定 ネットワーク構成
図 BGPの基本的な設定 ネットワーク構成

設定条件

  1. R1~R3でAS65001を構成します。また、R4~R6でAS65002を構成します。IBGPネイバーはすべてLoopback0のIPアドレスを利用して確立します。
  2. AS65001とAS65002間でEBGPネイバーを確立します。R1とR4ではLoopback1のIPアドレスを利用します。このとき、必要ならばスタティックルートを設定してください。
  3. R3とR6のLoopback1のネットワークアドレスをBGPルートとしてアドバタイズし、AS間の通信ができるようにします。このとき、R2ではnext-hop-selfを設定してはいけません。また、AS間のリンクをBGPやIGPでアドバタイズしてもいけません。
  4. R3からAS65002内の100.2.2.0/24へパケットをルーティングする際には、R2を経由するようにしてください。ただし、設定はR3のみで行いBGPパスアトリビュートを変更してはいけません。
  5. R6からAS65001内の100.1.1.0/24へパケットをルーティングする際には負荷分散されるようにしてください。

初期設定

以下の内容は設定済みです。

  • ホスト名
  • IPアドレス
  • AS内のルーティング
    OSPFエリア0

設定と確認

【Step1:IBGPネイバーの設定】

AS65001、AS65002内のIBGPネイバーをフルメッシュで設定します。Loopback0のIPアドレスを利用するので、neighbor update-sourceコマンドでBGPパケットの送信元IPアドレスとしてLoopback0を使うように設定しなければいけないことに注意してください。

R1

router bgp 65001
 neighbor 192.168.0.2 remote-as 65001
 neighbor 192.168.0.2 update-source loopback0
 neighbor 192.168.0.3 remote-as 65001
 neighbor 192.168.0.3 update-source loopback0

R2

 neighbor 192.168.0.1 remote-as 65001
 neighbor 192.168.0.1 update-source loopback0
 neighbor 192.168.0.3 remote-as 65001
 neighbor 192.168.0.3 update-source loopback0

R3

router bgp 65001
 neighbor 192.168.0.2 remote-as 65001
 neighbor 192.168.0.2 update-source loopback0
 neighbor 192.168.0.1 remote-as 65001
 neighbor 192.168.0.1 update-source loopback0

R4

router bgp 65002
 neighbor 192.168.0.5 remote-as 65002
 neighbor 192.168.0.5 update-source loopback0
 neighbor 192.168.0.6 remote-as 65002
 neighbor 192.168.0.6 update-source loopback0

R5

router bgp 65002
 neighbor 192.168.0.4 remote-as 65002
 neighbor 192.168.0.4 update-source loopback0
 neighbor 192.168.0.6 remote-as 65002
 neighbor 192.168.0.6 update-source loopback0

R6

router bgp 65002
 neighbor 192.168.0.5 remote-as 65002
 neighbor 192.168.0.5 update-source loopback0
 neighbor 192.168.0.4 remote-as 65002
 neighbor 192.168.0.4 update-source loopback0

【Step2:IBGPネイバーの確認】

各ルータでshow ip bgp summaryコマンドでIBGPネイバーを正常に確立できていることを確認します。R1およびR4では次のような表示です。

R1

R1#show ip bgp summary
BGP router identifier 192.168.0.1, local AS number 65001
BGP table version is 1, main routing table version 1

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.0.2     4 65001      22      22        1    0    0 00:19:45        0
192.168.0.3     4 65001      22      22        1    0    0 00:19:43        0

R4

R4#show ip bgp summary
BGP router identifier 192.168.0.4, local AS number 65002
BGP table version is 1, main routing table version 1

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.0.5     4 65002      21      21        1    0    0 00:18:52        0
192.168.0.6     4 65002      21      21        1    0    0 00:18:53        0

この時点では、BGPルートをまったく生成していないので、受信したルート数はすべて0です。

【Step3:EBGPネイバーの設定】

R1-R4間、R2-R5間のEBGPネイバーを設定します。R1-R4間ではLooback1のIPアドレスを利用します。直接接続以外のインタフェースのIPアドレスでEBGPネイバーを確立するときには、次の3点に注意が必要です。

  • ネイバーを確立するIPアドレスへの接続性があること
  • neighbor update-sourceコマンドでBGPパケットの送信元IPアドレスを適切に設定していること
  • EBGPパケットのTTLを増やすこと

R1とR4では、ネイバーを確立するIPアドレスへの接続性を確保するために、等コストロードバランスになるようにスタティックルートを設定します。

R1

ip route 10.1.1.4 255.255.255.255 10.1.14.4
ip route 10.1.1.4 255.255.255.255 10.1.41.4
!
router bgp 65001
 neighbor 10.1.1.4 remote-as 65002
 neighbor 10.1.1.4 update-source loopback1
 neighbor 10.1.1.4 ebgp-multihop

R4

ip route 10.1.1.1 255.255.255.255 10.1.14.1
ip route 10.1.1.1 255.255.255.255 10.1.41.1
!
router bgp 65002
 neighbor 10.1.1.1 remote-as 65001
 neighbor 10.1.1.1 update-source loopback1
 neighbor 10.1.1.1 ebgp-multihop

R2

router bgp 65001
 neighbor 10.2.25.5 remote-as 65002

R5

router bgp 65002
 neighbor 10.2.25.2 remote-as 65001

【Step4:EBGPネイバーの確認】

R1/R4、R2/R5でshow ip bgp summaryコマンドでEBGPネイバーを正常に確立できていることを確認します。R1とR2では、次のような表示です。

R1

R1#show ip bgp summary
BGP router identifier 192.168.0.1, local AS number 65001
BGP table version is 1, main routing table version 1

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.1.1.4        4 65002       8       8        1    0    0 00:04:14        0
192.168.0.2     4 65001      34      34        1    0    0 00:31:35        0
192.168.0.3     4 65001      34      34        1    0    0 00:31:33        0

R2

R2#show ip bgp summary
BGP router identifier 192.168.0.2, local AS number 65001
BGP table version is 1, main routing table version 1

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.2.25.5       4 65002       7       7        1    0    0 00:03:55        0
192.168.0.1     4 65001      34      34        1    0    0 00:31:58        0
192.168.0.3     4 65001      34      34        1    0    0 00:31:40        0

次の図は、BGPネイバーの状態をまとめたものです。

図 BGPネイバーの状態
図 BGPネイバーの状態

【Step5:BGPルートのアドバタイズ】

R3とR6でnetworkコマンドを利用して、Loopback1のネットワークアドレスをBGPルートとしてアドバタイズします。また、AS境界のR1、R4、R5ではNEXT_HOPへの到達性を確保するためにIBGPネイバーに対してneighbor next-hop-selfの設定を行います。R2ではnext-hop-selfを設定してはいけないという条件から、ルートマップによってNEXT_HOPアトリビュートを変更します。

R3

router bgp 65001
 network 100.1.1.0 mask 255.255.255.0

R6

router bgp 65002
 network 100.2.2.0 mask 255.255.255.0

R1

router bgp 65001
 neighbor 192.168.0.2 next-hop-self
 neighbor 192.168.0.3 next-hop-self

R2

router bgp 65001
 neighbor 192.168.0.1 route-map NEXT_HOP out
 neighbor 192.168.0.3 route-map NEXT_HOP out
!
route-map NEXT_HOP permit 10
 set ip next-hop 192.168.0.2

R4

router bgp 65002
 neighbor 192.168.0.5 next-hop-self
 neighbor 192.168.0.6 next-hop-self

R5

router bgp 65002
 neighbor 192.168.0.4 next-hop-self
 neighbor 192.168.0.6 next-hop-self

【Step6:BGPルートのアドバタイズの確認】

R3とR6のBGPテーブルを見て、対向のASのBGPルートがアドバタイズされていることを確認します。

R3

R3#show ip bgp 100.2.2.0
BGP routing table entry for 100.2.2.0/24, version 4
Paths: (2 available, best #2, table Default-IP-Routing-Table)
  Not advertised to any peer
  65002
    192.168.0.2 (metric 11) from 192.168.0.2 (192.168.0.2)
      Origin IGP, metric 0, localpref 100, valid, internal
  65002
    192.168.0.1 (metric 11) from 192.168.0.1 (192.168.0.1)
      Origin IGP, metric 0, localpref 100, valid, internal, best

R6

R6#show ip bgp 100.1.1.0
BGP routing table entry for 100.1.1.0/24, version 3
Paths: (2 available, best #2, table Default-IP-Routing-Table)
  Not advertised to any peer
  65001
    192.168.0.5 (metric 11) from 192.168.0.5 (192.168.0.5)
      Origin IGP, metric 0, localpref 100, valid, internal
  65001
    192.168.0.4 (metric 11) from 192.168.0.4 (192.168.0.4)
      Origin IGP, metric 0, localpref 100, valid, internal, best

R3はAS65002のBGPルート 100.2.2.0/24をR1とR2から受信しています。同様に、R6はAS65001のBGPルート 100.1.1.0/24をR4とR5から受信しています。なお、現在、ベストパスはルータIDによって決定されています。ルータIDが小さいBGPネイバーから受信したBGPルートがベストパスとなっています。そして、R3とR6のルーティングテーブルは以下のようになります。

R3

R3#show ip route
~省略~

Gateway of last resort is not set

C    192.168.13.0/24 is directly connected, Ethernet0/0
     100.0.0.0/24 is subnetted, 2 subnets
B       100.2.2.0 [200/0] via 192.168.0.1, 00:31:24
C       100.1.1.0 is directly connected, Loopback1
C    192.168.23.0/24 is directly connected, Ethernet0/1
     192.168.0.0/32 is subnetted, 3 subnets
O       192.168.0.1 [110/11] via 192.168.13.1, 03:04:06, Ethernet0/0
O       192.168.0.2 [110/11] via 192.168.23.2, 03:04:06, Ethernet0/1
C       192.168.0.3 is directly connected, Loopback0

R6

R6#show ip route
~省略~

Gateway of last resort is not set

C    192.168.46.0/24 is directly connected, Ethernet0/0
     100.0.0.0/24 is subnetted, 2 subnets
C       100.2.2.0 is directly connected, Loopback1
B       100.1.1.0 [200/0] via 192.168.0.4, 00:31:43
C    192.168.56.0/24 is directly connected, Ethernet0/1
     192.168.0.0/32 is subnetted, 3 subnets
O       192.168.0.4 [110/11] via 192.168.46.4, 03:04:48, Ethernet0/0
O       192.168.0.5 [110/11] via 192.168.56.5, 03:04:48, Ethernet0/1
C       192.168.0.6 is directly connected, Loopback0

【Step7:OSPFコストの変更】

IBGPルートのベストパスを決定するときの基準として、ネクストホップアドレスへ到達する際のIGPのメトリックがあります。ネクストホップアドレスへ到達するためのIGPルートのメトリックが小さい方のルートが優先されます。

R3からAS65002の100.2.2.0/24宛てのパケットをルーティングするときにR2を優先するためには、R3でR2からアドバタイズされたIBGPルートがベストパスになるようにします。そして、そのためには、R3からR2のLoopback0(192.168.0.2)へのIGP(OSPF)メトリックを小さくします。

R3

interface Ethernet0/1
 ip ospf cost 1

Step8:R3から100.2.2.0/24への通信経路の確認】

R3でAS65002の100.2.2.0/24のベストパスを確認します。

R3

R3#show ip bgp 100.2.2.0
BGP routing table entry for 100.2.2.0/24, version 5
Paths: (2 available, best #1, table Default-IP-Routing-Table)
Flag: 0x900
  Not advertised to any peer
  65002
    192.168.0.2 (metric 2) from 192.168.0.2 (192.168.0.2)
      Origin IGP, metric 0, localpref 100, valid, internal, best
  65002
    192.168.0.1 (metric 11) from 192.168.0.1 (192.168.0.1)
      Origin IGP, metric 0, localpref 100, valid, internal

R3で100.2.2.0/24のベストパスはR2からアドバタイズされたルートになっていることがわかります。これは、R3のE0/1のOSPFコストを小さくしたので、R2の192.168.0.1へ到達するためのOSPFコストが小さくなったからです。

図 R3でのベストパスの決定
図 R3でのベストパスの決定

そして、R3から100.2.2.6宛てのTracerouteを実行すると、次のようになります。

R3

R3#traceroute 100.2.2.6 source 100.1.1.3

Type escape sequence to abort.
Tracing the route to 100.2.2.6

  1 192.168.23.2 24 msec 16 msec 20 msec
  2 10.2.25.5 32 msec 48 msec 28 msec
  3 192.168.56.6 56 msec *  64 msec

【Step9:負荷分散の設定】

通常、BGPルートはベストパスのみがルーティングテーブルに登録されます。BGPルートの負荷分散を行うためには、maximum-pathsコマンドを利用します。maximum-pathsコマンドにより、AS_PATH、MED、LOCAL_PREFが同じBGPルートを複数ルーティングテーブルに登録することができます。

R6

router bgp 65002
 maximum-paths ibgp 2

【Step10:負荷分散の確認】

R6のBGPテーブルおよびルーティングテーブルを確認します。

R6

R6#show ip bgp 100.1.1.0
BGP routing table entry for 100.1.1.0/24, version 4
Paths: (2 available, best #2, table Default-IP-Routing-Table)
Multipath: iBGP
  Not advertised to any peer
  65001
    192.168.0.5 (metric 11) from 192.168.0.5 (192.168.0.5)
      Origin IGP, metric 0, localpref 100, valid, internal, multipath
  65001
    192.168.0.4 (metric 11) from 192.168.0.4 (192.168.0.4)
      Origin IGP, metric 0, localpref 100, valid, internal, multipath, best
R6#show ip route bgp
     100.0.0.0/24 is subnetted, 2 subnets
B       100.1.1.0 [200/0] via 192.168.0.5, 00:01:37
                  [200/0] via 192.168.0.4, 01:16:42