概要

設定ミスによって、正常にBGPネイバーを確立できません。また、BGPルートのアドバタイズも想定通りできません。BGPの設定ミスの切り分けと修正を行います。

ネットワーク構成

図 BGP 設定ミスの切り分けと修正 Part7 ネットワーク構成
図 BGP 設定ミスの切り分けと修正 Part7 ネットワーク構成

BGPの設定の条件は以下の通りとします。

AS100をトランジットASとして、AS1-AS2間の通信ができるようにしています。AS1のISPで100.1.1.0/24と100.1.2.0/24をBGPルートとして生成しています。AS2のISP2で200.1.1.0/24と200.1.2.0/24をBGPルートとして生成しています。

AS100内は、R1をルートリフレクタとして、R2~R5はR1とIBGPネイバーの設定を行なっています。IBGPネイバーはLoopbackインタフェースのIPアドレスを利用して確立します。

R1で150.1.1.0/24と150.1.2.0/24をBGPルートとして生成します。そして、できるだけ長いサブネットマスクで集約してアドバタイズします。集約ルートだけではなく、集約前のルートもアドバタイズします。

AS100からAS1の100.1.1.0/24へルーティングするときにはR2を経由するようにします。また、100.1.2.0/24へルーティングするときにはR3を経由するようにします。

AS2から150.1.1.0/24へルーティングするときにはR4を経由するようにします。また、150.1.2.0/24へルーティングするときにはR5を経由するようにします。

設定概要

各ルータのBGPに関する設定は以下のとおりです。これらの設定には、一部設定ミスがあり条件通りにBGPは動作していません。

R1 BGPに関する設定(Click)

interface Loopback0
 ip address 192.168.0.1 255.255.255.255
!
interface Loopback1
 ip address 150.1.2.1 255.255.255.0 secondary
 ip address 150.1.1.1 255.255.255.0
!
interface Ethernet0/0
 ip address 192.168.12.1 255.255.255.0
!
interface Ethernet0/1
 ip address 192.168.13.1 255.255.255.0
!
interface Ethernet0/2
 ip address 192.168.14.1 255.255.255.0
!
interface Ethernet0/3
 ip address 192.168.15.1 255.255.255.0
!
router ospf 1
 log-adjacency-changes
 network 192.168.0.0 0.0.255.255 area 0
!
router bgp 100
 no synchronization
 bgp log-neighbor-changes
 network 150.1.1.0 mask 255.255.255.0
 network 150.1.2.0 mask 255.255.255.0
 aggregate-address 150.1.0.0 255.255.252.0
 neighbor 192.168.0.3 remote-as 100
 neighbor 192.168.0.3 route-reflector-client
 neighbor 192.168.0.4 remote-as 100
 neighbor 192.168.0.4 update-source Loopback0
 neighbor 192.168.0.4 route-reflector-client
 neighbor 192.168.0.5 remote-as 100
 neighbor 192.168.0.5 update-source Loopback0
 neighbor 192.168.0.5 next-hop-self
 neighbor 192.168.1.2 remote-as 100
 neighbor 192.168.1.2 update-source Loopback0
 neighbor 192.168.1.2 route-reflector-client
 no auto-summary

R2 BGPに関する設定(Click)

interface Loopback0
 ip address 192.168.0.2 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.12.2 255.255.255.0
!
interface Serial1/0
 ip address 100.0.1.2 255.255.255.0
!
router ospf 1
 log-adjacency-changes
 network 192.168.0.0 0.0.255.255 area 0
!
router bgp 100
 no synchronization
 bgp log-neighbor-changes
 neighbor 100.0.1.10 remote-as 1
 neighbor 100.0.1.10 route-map LOCAL_PREF in
 neighbor 192.168.0.1 remote-as 100
 neighbor 192.168.0.1 update-source Loopback0
 neighbor 192.168.0.1 next-hop-self
 no auto-summary
!
access-list 1 permit 100.1.1.0
!
route-map LOCAL_PREF permit 10
 match ip address 1
 set local-preference 500
!
route-map LOCAL_PREF permit 20

R3 BGPに関する設定(Click)

interface Loopback0
 ip address 192.168.0.3 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.13.3 255.255.255.0
!
interface Serial1/0
 ip address 100.0.2.3 255.255.255.0
 serial restart-delay 0
!
router ospf 1
 log-adjacency-changes
 network 192.168.0.0 0.0.255.255 area 0
!
router bgp 100
 no synchronization
 bgp log-neighbor-changes
 neighbor 100.0.2.10 remote-as 1
 neighbor 100.0.2.10 route-map LOCAL_PREF in
 neighbor 192.168.0.1 remote-as 100
 neighbor 192.168.0.1 next-hop-self
 no auto-summary
!
access-list 1 permit 100.1.2.0
!
route-map LOCAL_PREF permit 10
 match ip address 1
 set local-preference 500
!
route-map LOCAL_PREF permit 20

R4 BGPに関する設定(Click)

interface Loopback0
 ip address 192.168.0.4 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.14.4 255.255.255.0
!
interface Serial1/0
 ip address 200.0.1.4 255.255.255.0
!
router ospf 1
 log-adjacency-changes
 network 192.168.0.0 0.0.255.255 area 0
!
router bgp 100
 no synchronization
 bgp log-neighbor-changes
 neighbor 192.168.0.1 remote-as 101
 neighbor 192.168.0.1 update-source Loopback0
 neighbor 192.168.0.1 next-hop-self
 neighbor 200.0.1.20 remote-as 2
 neighbor 200.0.1.20 route-map MED out
 no auto-summary
!
access-list 1 permit 150.1.1.0
!
route-map MED permit 10
 match ip address 1
 set metric 10
!
route-map MED permit 20
 set metric 100

R5 BGPに関する設定(Click)

interface Loopback0
 ip address 192.168.0.5 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.15.5 255.255.255.0
!
interface Serial1/0
 ip address 200.0.2.5 255.255.255.0
!
router ospf 1
 log-adjacency-changes
 network 192.168.0.0 0.0.255.255 area 0
!
router bgp 100
 no synchronization
 bgp log-neighbor-changes
 neighbor 192.168.0.1 remote-as 100
 neighbor 192.168.0.1 update-source Loopback0
 neighbor 192.168.0.1 next-hop-self
 neighbor 200.0.2.20 remote-as 2
 neighbor 200.0.2.20 route-map MED out
 no auto-summary
!
access-list 1 permit 150.1.2.0
!
route-map MED permit 10
 match ip address 1
 set metric 10
!
route-map MED permit 20
 set metric 100

ISP1 BGPに関する設定(Click)

interface Loopback0
 ip address 100.1.2.10 255.255.255.0 secondary
 ip address 100.1.1.10 255.255.255.0
!
interface Serial1/0
 ip address 100.0.1.10 255.255.255.0
!
interface Serial1/1
 ip address 100.0.2.10 255.255.255.0
!
router bgp 1
 no synchronization
 bgp log-neighbor-changes
 network 100.1.0.0 mask 255.255.0.0
 neighbor 100.0.1.2 remote-as 100
 neighbor 100.0.2.3 remote-as 100
 no auto-summary

ISP2 BGPに関する設定(Click)

interface Loopback0
 ip address 200.1.2.20 255.255.255.0 secondary
 ip address 200.1.1.20 255.255.255.0
!
interface Serial1/0
 ip address 200.0.1.20 255.255.255.0
!
interface Serial1/1
 ip address 200.0.2.20 255.255.255.0
!
router bgp 2
 no synchronization
 bgp log-neighbor-changes
 network 200.1.1.0
 network 200.1.2.0
 neighbor 200.0.1.4 remote-as 100
 neighbor 200.0.2.5 remote-as 100
 no auto-summary

トラブルの症状

現在の各ルータのBGPの設定は、一部正しくありません。ISP1とISP2のBGPで学習したルートを確認すると、他のASのルートをBGPで正しく学習できていません。そのため、AS間の通信を正常に行うことができない状態です。

ISP1/ISP2 show ip route bgp

ISP1#show ip route bgp

ISP2#show ip route bgp
     150.1.0.0/16 is variably subnetted, 3 subnets, 2 masks
B       150.1.2.0/24 [20/10] via 200.0.2.5, 00:00:18
B       150.1.1.0/24 [20/100] via 200.0.2.5, 00:00:18
B       150.1.0.0/22 [20/100] via 200.0.2.5, 00:00:18

トラブルの原因を調べるために、各ルータで以下のshowコマンドを実行しました。

R1
show ip bgp summary
show ip bgp neighbor 192.168.0.5

R2~R5
show ip bgp summary

ISP1/ISP2
show ip bgp summary
show ip bgp

各ルータのshowコマンドの出力は下記のようになっています。

R1 showコマンド

R1#show ip bgp summary
BGP router identifier 192.168.0.1, local AS number 100
BGP table version is 6, main routing table version 6
5 network entries using 585 bytes of memory
5 path entries using 260 bytes of memory
4/3 BGP path/bestpath attribute entries using 496 bytes of memory
1 BGP AS-PATH entries using 24 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 1365 total bytes of memory
BGP activity 12/7 prefixes, 17/12 paths, scan interval 60 secs

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.0.3     4   100      46      51        0    0    0 07:54:32 Active
192.168.0.4     4   100      36      43        0    0    0 07:59:42 Active
192.168.0.5     4   100     521     530        6    0    0 07:54:31        2
192.168.1.2     4   100       0       0        0    0    0 never    Active
R1#show ip bgp neighbor 192.168.0.5
BGP neighbor is 192.168.0.5,  remote AS 100, internal link
  BGP version 4, remote router ID 192.168.0.5
  BGP state = Established, up for 07:54:31
  Last read 00:00:31, last write 00:00:31, hold time is 180, keepalive interval is 60 seconds
  Neighbor capabilities:
    Route refresh: advertised and received(old & new)
    Address family IPv4 Unicast: advertised and received
  Message statistics:
    InQ depth is 0
    OutQ depth is 0
                         Sent       Rcvd
    Opens:                  2          2
    Notifications:          0          0
    Updates:               12          3
    Keepalives:           516        516
    Route Refresh:          0          0
    Total:                530        521
  Default minimum time between advertisement runs is 0 seconds

 For address family: IPv4 Unicast
  BGP table version 6, neighbor version 6/0
 Output queue size : 0
  Index 1, Offset 0, Mask 0x2
  1 update-group member
  NEXT_HOP is always this router
                                 Sent       Rcvd
  Prefix activity:               ----       ----
    Prefixes Current:               3          2 (Consumes 104 bytes)
    Prefixes Total:                 3          2
    Implicit Withdraw:              0          0
    Explicit Withdraw:              0          0
    Used as bestpath:             n/a          2
    Used as multipath:            n/a          0

                                   Outbound    Inbound
  Local Policy Denied Prefixes:    --------    -------
    Bestpath from this peer:              2        n/a
    Total:                                2          0
  Number of NLRIs in the update sent: max 2, min 0

  Connections established 2; dropped 1
  Last reset 07:54:32, due to User reset
Connection state is ESTAB, I/O status: 1, unread input bytes: 0            
Connection is ECN Disabled, Mininum incoming TTL 0, Outgoing TTL 255
Local host: 192.168.0.1, Local port: 37129
Foreign host: 192.168.0.5, Foreign port: 179

-- omitted --

R2 showコマンド

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

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
100.0.1.10      4     1     530     525       17    0    0 07:56:15        0
192.168.0.1     4   100      39      36        0    0    0 08:02:28 Active

R3 showコマンド

R3#show ip bgp summary 
BGP router identifier 192.168.0.3, local AS number 100
BGP table version is 19, main routing table version 19

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
100.0.2.10      4     1     530     529       19    0    0 07:56:33        0
192.168.0.1     4   100      51      46        0    0    0 07:56:24 Active

R4 showコマンド

R4#show ip bgp summary 
BGP router identifier 192.168.0.4, local AS number 100
BGP table version is 20, main routing table version 20
2 network entries using 234 bytes of memory
2 path entries using 104 bytes of memory
2/1 BGP path/bestpath attribute entries using 248 bytes of memory
1 BGP AS-PATH entries using 24 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 610 total bytes of memory
BGP activity 9/7 prefixes, 10/8 paths, scan interval 60 secs

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.0.1     4   101       0       0        0    0    0 never    Idle
200.0.1.20      4     2     537     529       20    0    0 07:56:42        2

R5 showコマンド

R5#show ip bgp summary 
BGP router identifier 192.168.0.5, local AS number 100
BGP table version is 23, main routing table version 23
5 network entries using 585 bytes of memory
5 path entries using 260 bytes of memory
4/3 BGP path/bestpath attribute entries using 496 bytes of memory
1 BGP AS-PATH entries using 24 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 1365 total bytes of memory
BGP activity 12/7 prefixes, 15/10 paths, scan interval 60 secs

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.0.1     4   100     533     524       23    0    0 07:57:12        3
200.0.2.20      4     2     538     537       23    0    0 07:57:17        2

ISP1 showコマンド

ISP1#show ip bgp summary
BGP router identifier 100.1.1.10, local AS number 1
BGP table version is 11, main routing table version 11

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
100.0.1.2       4   100     526     531       11    0    0 07:57:47        0
100.0.2.3       4   100     530     531       11    0    0 07:57:48        0
ISP1#show ip bgp

ISP2 showコマンド

ISP2#show ip bgp summary 
BGP router identifier 200.1.1.20, local AS number 2
BGP table version is 12, main routing table version 12
5 network entries using 585 bytes of memory
5 path entries using 260 bytes of memory
5/4 BGP path/bestpath attribute entries using 620 bytes of memory
1 BGP AS-PATH entries using 24 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 1489 total bytes of memory
BGP activity 15/10 prefixes, 22/17 paths, scan interval 60 secs

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
200.0.1.4       4   100     531     539       12    0    0 07:58:06        0
200.0.2.5       4   100     538     539       12    0    0 07:58:07        3
ISP2#show ip bgp
BGP table version is 12, local router ID is 200.1.1.20
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 150.1.0.0/22     200.0.2.5              100             0 100 i
*> 150.1.1.0/24     200.0.2.5              100             0 100 i
*> 150.1.2.0/24     200.0.2.5               10             0 100 i
*> 200.1.1.0        0.0.0.0                  0         32768 i
*> 200.1.2.0        0.0.0.0                  0         32768 i

問題

  • なぜ各ルータはBGPでルート情報を正しく学習できないのでしょうか。
  • BGPでルート情報を正しく学習し、AS間の通信ができるようにするためにはどのように設定を修正すればよいでしょうか。

解答

なぜ各ルータはBGPでルート情報を正しく学習できないのでしょうか。

AS100内でIBGPネイバーを正しく確立できていないため。IBGPネイバーを正しく確立できていない原因は、次の通り。

【R1-R2間】
R1のIBGPネイバーの設定でR2のIPアドレスを間違っている

【R1-R3間】
BGPパケットの送信元IPアドレスがLoopback0のIPアドレスとなっていない

【R1-R4間】
R4のIBGPネイバーの設定でR1のAS番号を間違っている

【R1-R5間】
R5をルートリフレクタクライアントとして設定していない

また、ISP1でnetworkコマンドの設定が正しくないためBGPルートの生成が行われていない。

BGPでルート情報を正しく学習し、AS間の通信ができるようにするためにはどのように設定を修正すればよいでしょうか。

R1

router bgp 100
 no neighbor 192.168.1.2 remote-as 100
 neighbor 192.168.0.2 remote-as 100
 neighbor 192.168.0.2 update-source loopback0
 neighbor 192.168.0.2 route-reflector-client
 neighbor 192.168.0.3 update-source loopback0
 neighbor 192.168.0.5 route-reflector-client

R3

router bgp 100
 neighbor 192.168.0.1 update-source loopback0

R4

router bgp 100
 no neighbor 192.168.0.1 remote-as 101
 neighbor 192.168.0.1 remote-as 100
 neighbor 192.168.0.1 update-source loopback0
 neighbor 192.168.0.1 next-hop-self

ISP1

router bgp 1
 network 100.1.1.0 mask 255.255.255.0
 network 100.1.2.0 mask 255.255.255.0
 no network 100.1.0.0 mask 255.255.0.0

ワンポイント

  • BGPネイバーの状態がActiveとなっているときは、ネイバーの設定が正しくない
  • ルートリフレクタとなるルータでルートリフレクタクライアントを指定する
  • networkコマンドはルーティングテーブル上の既知のネットワークアドレス/サブネットマスクを指定してBGPルートを生成する

解説

BGPではネイバーを確立してから、BGPルートを交換します。そのため、BGPネイバーを確立できなければ、BGPルートの交換ができずパケットのルーティングもできません。BGPの設定ミスを考えるときにBGPネイバーの確認がとても重要です。BGPネイバーの状態はEstablished状態が正常な状態です。Active状態となっている場合は、何らかの設定ミスがあることがほとんどです。

今回考えているトラブルチケットには、BGPネイバーの確立に関して次の設定ミスがあります。

  • ネイバーのIPアドレス(R1-R2間)
  • BGPパケットの送信元IPアドレス(R1-R3間)
  • AS番号(R1-R4間)
  • ルートリフレクタ(R1-R5間)

また、BGPではnetworkコマンドによってBGPルートを生成します。networkコマンドはルーティングテーブル上の既知のルートを指定しなければいけません。トラブルチケットには、networkコマンドの設定ミスも含まれています。

ネイバーのIPアドレス(R1-R2間)

R1のshow ip bgp summaryコマンドの出力を見ると、R2のLoopback0の192.168.0.2に対するネイバーの設定が行われていないことがわかります。192.168.0.2ではなく192.168.1.2という間違ったIPアドレスでネイバーの設定を行なっていると考えられます。

R1 show ip bgp summary

R1#show ip bgp summary 
BGP router identifier 192.168.0.1, local AS number 100
-- omitted --

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.0.3     4   100      46      51        0    0    0 22:34:12 Active
192.168.0.4     4   100      36      43        0    0    0 22:39:23 Active
192.168.0.5     4   100    1401    1410        6    0    0 22:34:11        2
192.168.1.2     4   100       0       0        0    0    0 never    Active

192.168.1.2というIPアドレスは、存在しないIPアドレスです。存在しないIPアドレスに対して接続性がないので、BGPネイバーはActive状態のままとなります。

図 ネイバーのIPアドレスの設定ミス
図 ネイバーのIPアドレスの設定ミス

R1で以下のように、間違ったIPアドレスのネイバーの設定を削除して、R2 Loopback0のIPアドレス192.168.0.2を正しく指定してIBGPネイバーの設定を修正します。

R1 ネイバーIPアドレスの修正

router bgp 100
 no neighbor 192.168.1.2 remote-as 100
 neighbor 192.168.0.2 remote-as 100
 neighbor 192.168.0.2 update-source loopback0
 neighbor 192.168.0.2 route-reflector-client

設定修正後、show ip bgp summaryコマンドの出力は次のようになります。

R1 show ip bgp summary

R1#show ip bgp summary 
BGP router identifier 192.168.0.1, local AS number 100
-- omitted --

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.0.2     4   100       4       7        6    0    0 00:00:49        0
192.168.0.3     4   100      46      51        0    0    0 22:48:35 Active
192.168.0.4     4   100      36      43        0    0    0 22:53:46 Active
192.168.0.5     4   100    1415    1424        6    0    0 22:48:35        2

R2との間のネイバーがEstablished状態となっていることがわかります。

BGPパケットの送信元IPアドレス(R1-R3間)

BGPネイバーはお互いがお互いをネイバーとして認識しなければいけません。そのために、BGPパケットの送信元IPアドレスをチェックします。BGPパケットの送信元IPアドレスと設定しているBGPネイバーのIPアドレスが一致していなければなりません。

AS100内のIBGPネイバーはそれぞれのルータのLoopback0のIPアドレスでネイバーを設定しています。つまり、BGPパケットの送信元IPアドレスはLoopback0のIPアドレスを利用しなければいけません。そのためには、neighbor update-sourceコマンドの設定が必要です。neighbor update-sourceコマンドでLoopback0のIPアドレスをBGPパケットの送信元IPアドレスとして利用するようにします。

ところが、R1-R3間のIBGPネイバーの設定にはneighbor update-sourceコマンドが抜けています。その結果、ネイバーを正しく確立することができずActive状態に留まってしまっています。

図 neighbor update-sourceコマンドの設定ミス
図 neighbor update-sourceコマンドの設定ミス

R1-R3間で正しくネイバーを確立するためには、以下のようにneighbor update-sourceコマンドの設定が必要です。

R1 neighbor update-source

router bgp 100
 neighbor 192.168.0.3 update-source loopback0

R3 neighbor update-source

router bgp 100
 neighbor 192.168.0.1 update-source loopback0

設定後、R1-R3間のネイバーは以下のようにEstablished状態となり、正常に確立することができます。

R1 show ip bgp summary

R1#show ip bgp summary 
BGP router identifier 192.168.0.1, local AS number 100
-- omitted --

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.0.2     4   100      48      51        6    0    0 00:44:33        0
192.168.0.3     4   100      51      59        6    0    0 00:01:07        0
192.168.0.4     4   100      36      43        0    0    0 23:37:30 Active
192.168.0.5     4   100    1459    1468        6    0    0 23:32:18        2

AS番号(R1-R4間)

BGPネイバーを確立するためには、お互いのAS番号の認識も一致していなければいけません。R4のshow ip bgp summaryコマンドの出力を見ると、R4はR1のAS番号を101として設定していることがわかります。

R4 show ip bgp summary

R4#show ip bgp summary 
BGP router identifier 192.168.0.4, local AS number 100
-- omitted --

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.0.1     4   101       0       0        0    0    0 never    Idle
200.0.1.20      4     2    1478    1470       20    0    0 23:37:25        2

このように相手のAS番号を間違って設定すると、BGPネイバーの状態はIdle状態のままで留まってしまいます。なお、対向のR1ではR4のBGPネイバー状態はActive状態となります。

図 AS番号の設定ミス
図 AS番号の設定ミス

R4では、次のように正しくR1のAS番号を指定してネイバーの設定を行います。

R4 ネイバーのAS番号を修正

router bgp 100
 no neighbor 192.168.0.1 remote-as 101
 neighbor 192.168.0.1 remote-as 100
 neighbor 192.168.0.1 update-source loopback0
 neighbor 192.168.0.1 next-hop-self

設定修正後ネイバーの状態を確認すると、以下のようにEstablished状態となり正しくネイバーを確立できていることがわかります。

R4 show ip bgp summary

R4#show ip bgp summary 
BGP router identifier 192.168.0.4, local AS number 100
-- omitted --

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.0.1     4   100       8       5       23    0    0 00:00:37        3
200.0.1.20      4     2    1494    1488       23    0    0 23:52:22        2

ルートリフレクタ(R1-R5間)

AS100内はR1をルートリフレクタとして、IBGPネイバーをフルメッシュで確立する必要がないようにしています。ところが、R5をルートリフレクタクライアントとして指定していません。現在のネットワーク構成であれば、BGPルートのアドバタイズには特に問題はありません。しかし、設定の条件よりR5をルートリフレクタクライアントとして設定するべきです。

図 ルートリフレクタの設定ミス
図 ルートリフレクタの設定ミス

R1では、以下のようにR5をルートリフレクタクライアントとして設定します。

R1 ルートリフレクタの設定

router bgp 100
 neighbor 192.168.0.5 route-reflector-client

R1がR5をルートリフレクタクライアントして認識していることを確認するために、show ip bgp neighbor 192.168.0.5コマンドを利用します。

R1 show ip bgp neighbors 192.168.0.5

R1#show ip bgp neighbors 192.168.0.5
BGP neighbor is 192.168.0.5,  remote AS 100, internal link
  BGP version 4, remote router ID 192.168.0.5
  BGP state = Established, up for 00:10:38
-- omitted --

 For address family: IPv4 Unicast
  BGP table version 12, neighbor version 12/0
 Output queue size : 0
  Index 1, Offset 0, Mask 0x2
  Route-Reflector Client
  1 update-group member
  NEXT_HOP is always this router
-- omitted --

networkコマンド(ISP1)

AS100内のIBGPネイバーが正常に確立でき、また、AS1やAS2とのEBGPネイバーも正常に確立できてもAS1-AS2間の通信は不可能です。AS1内の100.1.1.0/24と100.1.2.0/24のルートをBGPで学習できていないからです。

ISP1のBGPテーブルを確認すると、以下のようになっています。

ISP1 show ip bgp

ISP1#show ip bgp
BGP table version is 16, local router ID is 100.1.1.10
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*  150.1.0.0/22     100.0.2.3                              0 100 i
*>                  100.0.1.2                              0 100 i
*  150.1.1.0/24     100.0.2.3                              0 100 i
*>                  100.0.1.2                              0 100 i
*  150.1.2.0/24     100.0.2.3                              0 100 i
*>                  100.0.1.2                              0 100 i
*  200.1.1.0        100.0.2.3                              0 100 2 i
*>                  100.0.1.2                              0 100 2 i
*  200.1.2.0        100.0.2.3                              0 100 2 i
*>                  100.0.1.2                              0 100 2 i

ISP1のBGPテーブルにはR2、R3から受信したBGPルートがありますが、ISP1自身が生成するBGPルートがありません。ISP1のnetworkコマンドの設定を確認すると、100.1.1.0/24と100.1.2.0/24を集約して100.1.0.0/16として指定しています。networkコマンドはルーティングテーブルに登録されているネットワークアドレス/サブネットマスクで指定しなければいけません。

図 networkコマンドの設定ミス
図 networkコマンドの設定ミス

ISP1で正しくBGPルートを生成するために、以下のようにnetworkコマンドを修正します。

ISP1 networkコマンドの修正

router bgp 1
 network 100.1.1.0 mask 255.255.255.0
 network 100.1.2.0 mask 255.255.255.0
 no network 100.1.0.0 mask 255.255.0.0

ISP1のnetworkコマンドを修正したあと、BGPテーブルを見ると正しくBGPルートを生成しネイバーへアドバタイズしていることがわかります。

ISP1 show ip bgp

ISP1#show ip bgp 
BGP table version is 18, local router ID is 100.1.1.10
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 100.1.1.0/24     0.0.0.0                  0         32768 i
*> 100.1.2.0/24     0.0.0.0                  0         32768 i
*  150.1.0.0/22     100.0.2.3                              0 100 i
*>                  100.0.1.2                              0 100 i
*  150.1.1.0/24     100.0.2.3                              0 100 i
*>                  100.0.1.2                              0 100 i
*  150.1.2.0/24     100.0.2.3                              0 100 i
*>                  100.0.1.2                              0 100 i
*  200.1.1.0        100.0.2.3                              0 100 2 i
*>                  100.0.1.2                              0 100 2 i
*  200.1.2.0        100.0.2.3                              0 100 2 i
*>                  100.0.1.2                              0 100 2 i

そして、AS1-AS2間の通信も正常にできるようになります。

ISP1 通信確認

ISP1#ping 200.1.1.20 source 100.1.1.10

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 200.1.1.20, timeout is 2 seconds:
Packet sent with a source address of 100.1.1.10 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/24/40 ms
ISP1#ping 200.1.2.20 source 100.1.1.10

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 200.1.2.20, timeout is 2 seconds:
Packet sent with a source address of 100.1.1.10 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/23/48 ms

BGPの仕組み