概要

BGPルートをアドバタイズするための設定について、設定ミスの切り分けと修正を行います。Well-knownコミュニティとNEXT_HOPアトリビュートへの接続性がポイントです。

ネットワーク構成

下記のネットワーク構成でBGPによってAS1の100.100.100.0/24をAS23へアドバタイズします。

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

設定概要

各ルータのBGPに関する設定は次の通りです。これらの設定には、一部設定ミスがあります。

R1

interface Loopback0
 ip address 100.100.100.1 255.255.255.0
!
interface Ethernet0/0
 ip address 10.12.12.1 255.255.255.0
!
router bgp 1
 no synchronization
 bgp log-neighbor-changes
 network 100.100.100.0 mask 255.255.255.0
 neighbor 10.12.12.2 remote-as 23
 neighbor 10.12.12.2 send-community
 neighbor 10.12.12.2 route-map TO_R2 out
 no auto-summary
!
route-map TO_R2 permit 10
 set community no-advertise
!

R2

interface Loopback0
 ip address 2.2.2.2 255.255.255.255
!
interface Ethernet0/0
 ip address 10.12.12.2 255.255.255.0
!
interface Ethernet0/1
 ip address 192.168.23.2 255.255.255.0
!
router ospf 1
 log-adjacency-changes
 network 2.2.2.2 0.0.0.0 area 0
 network 192.168.0.0 0.0.255.255 area 0
!
router bgp 23
 no synchronization
 bgp log-neighbor-changes
 neighbor 3.3.3.3 remote-as 23
 neighbor 3.3.3.3 update-source Loopback0
 neighbor 10.12.12.1 remote-as 1
 no auto-summary

R3

interface Loopback0
 ip address 3.3.3.3 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.23.3 255.255.255.0
!
router ospf 1
 log-adjacency-changes
 network 3.3.3.3 0.0.0.0 area 0
 network 192.168.0.0 0.0.255.255 area 0
!
router bgp 23
 no synchronization
 bgp log-neighbor-changes
 neighbor 2.2.2.2 remote-as 23
 neighbor 2.2.2.2 update-source Loopback0
 no auto-summary

トラブルの症状

AS1の100.100.100.0/24のBGPルートはR2までは届いていますが、R3には届いていません。この原因を調べるために、各ルータで次のshowコマンドを実行しました。

R1
show ip bgp summary
show ip bgp
show ip bgp 100.100.100.0

R2
show ip bgp summary
show ip bgp
show ip bgp 100.100.100.0
show ip bgp neighbor 3.3.3.3 advertised-routes

R3
show ip bgp summary
show ip bgp

R1 showコマンドの結果

R1#show ip bgp summary
BGP router identifier 100.100.100.1, local AS number 1
BGP table version is 2, main routing table version 2
1 network entries using 117 bytes of memory
1 path entries using 52 bytes of memory
2/1 BGP path/bestpath attribute entries using 248 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 417 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
10.12.12.2      4    23      12      13        2    0    0 00:09:45        0
R1#show ip bgp
BGP table version is 2, local router ID is 100.100.100.1
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.100.100.0/24 0.0.0.0                  0         32768 i
R1#show ip bgp 100.100.100.0
BGP routing table entry for 100.100.100.0/24, version 2
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
     1
  Local
    0.0.0.0 from 0.0.0.0 (100.100.100.1)
      Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best

R2 showコマンドの結果

R2#show ip bgp summary
BGP router identifier 2.2.2.2, local AS number 23
BGP table version is 2, main routing table version 2
1 network entries using 117 bytes of memory
1 path entries using 52 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
1 BGP community 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 465 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
3.3.3.3         4    23      12      12        2    0    0 00:09:53        0
10.12.12.1      4     1      14      13        2    0    0 00:10:16        1
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
Origin codes: i - IGP, e - EGP, ? - incomplete
 
   Network          Next Hop            Metric LocPrf Weight Path
*> 100.100.100.0/24 10.12.12.1               0             0 1 i
R2#show ip bgp 100.100.100.0
BGP routing table entry for 100.100.100.0/24, version 2
Paths: (1 available, best #1, table Default-IP-Routing-Table, not advertised to any peer)
  Not advertised to any peer
  1
    10.12.12.1 from 10.12.12.1 (100.100.100.1)
      Origin IGP, metric 0, localpref 100, valid, external, best
      Community: no-advertise
R2#show ip bgp neighbor 3.3.3.3 advertised-routes
 
Total number of prefixes 0

R3 showコマンドの結果

R3#show ip bgp summary
BGP router identifier 3.3.3.3, local AS number 23
BGP table version is 1, main routing table version 1
 
Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
2.2.2.2         4    23      13      13        1    0    0 00:10:41        0
R3#show ip bgp

問題

  • なぜR3には100.100.100.0/24のBGPルートが届いていないのですか?
  • R3まで100.100.100.0/24のルートが届くようにするためには、どのように設定を修正すればよいですか?ただし、BGP、OSPFでnetworkコマンドを追加してはいけません。また、COMMUNITYアトリビュートを削除してはいけません。

解答

なぜR3には100.100.100.0/24のBGPルートが届いていないのですか?

R1で100.100.100.0/24のBGPルートにno-advertiseのWell knownコミュニティを付加している。そのため、R2はR3へ100.100.100.0/24のルートをアドバタイズしない。

また、R2でIBGPネイバーであるR3に対して100.100.100.0/24のルートのNEXT_HOPを変更していないので、R3はNEXT_HOPへの到達性が確保できずに、100.100.100.0/24のルートを受信しても利用できない。

R3まで100.100.100.0/24のルートが届くようにするためには、どのように設定を修正すればよいですか?ただし、BGP、OSPFでnetworkコマンドを追加してはいけません。また、COMMUNITYアトリビュートを削除してはいけません。

R1

route-map TO_R2 permit 10
 no set community
 set community no-export

R2

router bgp 23
 neighbor 3.3.3.3 next-hop-self

ワンポイント

  • Well knownコミュニティで自動的にBGPルートをフィルタできる
  • NEXT_HOPへの到達性がないとBGPルートを利用できない

解説

BGPルートのアドバタイズについて基本的な仕組みを理解できているかを確かめる問題です。AS1内の100.100.100.0/24がR3で利用できない原因は2つあります。

  • Well knownコミュニティ no-advertise でBGPルートがフィルタされている
  • NEXT_HOPへの到達性がないのでBGPルートを利用できない

それぞれについて、解説します。

【Well knownコミュニティ no-advertise でBGPルートがフィルタされている】

R1からR2へ100.100.100.0/24をアドバタイズするときにルートマップ「TO_R2」でWell knownコミュニティ no-advertiseが付加されています。これを確認するには、R2ででshow ip bgp 100.100.100.0/24をみるのがわかりやすいです。

R2 show ip bgp 100.100.100.0/24

R2#show ip bgp 100.100.100.0
BGP routing table entry for 100.100.100.0/24, version 2
Paths: (1 available, best #1, table Default-IP-Routing-Table, not advertised to any peer)
  Not advertised to any peer
  1
    10.12.12.1 from 10.12.12.1 (100.100.100.1)
      Origin IGP, metric 0, localpref 100, valid, external, best
      Community: no-advertise

Well Knownコミュニティ no-advertise が付加されているルートは他のBGPネイバーへアドバタイズされないように自動的にフィルタがかかります。そのため、R2からR3へ100.100.100.0/24がアドバタイズされません。

条件よりコミュニティを削除してはいけないので、no-advertise 以外のコミュニティを付加するように設定を変更します。R1のルートマップ「TO_R2」を次のように変更します。

R1 ルートマップの修正

route-map TO_R2 permit 10
 no set community
 set community no-export

no-export はEBGPネイバーにアドバタイズしないようにフィルタをかけます。R2とR3はIBGPネイバーなので、no-exportのコミュニティであれば、R2からR3へ100.100.100.0/24をアドバタイズします。

R1でルートマップ「TO_R2」を修正した後、R2でshow ip bgp 100.100.100.0/24を確認すると、次のようになります。

R2 show ip bgp 100.100.100.0/24

R2#show ip bgp 100.100.100.0
BGP routing table entry for 100.100.100.0/24, version 3
Paths: (1 available, best #1, table Default-IP-Routing-Table, not advertised to EBGP peer)
Flag: 0x880
  Advertised to update-groups:
     2
  1
    10.12.12.1 from 10.12.12.1 (100.100.100.1)
      Origin IGP, metric 0, localpref 100, valid, external, best
      Community: no-export

【NEXT_HOPへの到達性がないのでBGPルートを利用できない】

R1で100.100.100.0/24に付加するコミュニティ値を変更すると、R3まで100.100.100.0/24が伝わってきます。ですが、R3では100.100.100.0/24のBGPルートを利用できません。R3でshow ip bgp 100.100.100.0/24を見ると、次のようになります。

R3 show ip bgp 100.100.100.0/24

R3#show ip bgp 100.100.100.0/24
BGP routing table entry for 100.100.100.0/24, version 0
Paths: (1 available, no best path)
  Not advertised to any peer
  1
    10.12.12.1 (inaccessible) from 2.2.2.2 (2.2.2.2)
      Origin IGP, metric 0, localpref 100, valid, internal

BGPルート100.100.100.0/24のNEXT_HOPアトリビュートは10.12.12.1です。ですが、R3からは10.12.12.1への到達性がありません。NEXT_HOPへの到達性がないルートを利用することができないので、R3では100.100.100.0/24のルートをベストパスにできません。100.100.100.0/24のNEXT_HOPは、R3から到達可能なIPアドレスになるようにしなければいけません。そのために、R2でIBGPネイバーであるR3に対してネクストホップセルフを追加します。

R2 ネクストホップセルフの設定

router bgp 23
 neighbor 3.3.3.3 next-hop-self

再びR3でshow ip bgp 100.100.100.0/24を見ると、NEXT_HOPへの到達性を確保でき、ベストパスとして利用できるようになったことがわかります。

R3 show ip bgp 100.100.100.0/24

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
Origin codes: i - IGP, e - EGP, ? - incomplete
 
   Network          Next Hop            Metric LocPrf Weight Path
*>i100.100.100.0/24 2.2.2.2                  0    100      0 1 i

次の図は、トラブルの原因をまとめたものです。

図 BGP設定ミスの切り分けと修正 Part2 まとめ
図 BGP設定ミスの切り分けと修正 Part2 まとめ


BGPの仕組み