目次
概要
BGPのAS_PATHアクセスリストによるルートフィルタについて、設定ミスの切り分けと修正を行います。
ネットワーク構成
下記のネットワーク構成で、BGPを利用してAS123のルートをAS4、AS5にアドバタイズします。
AS123内ではコンフェデレーションを利用しています。R1、R2、R3がそれぞれコンフェデレーションASを構成しています。また、R1、R3のOutでAS_PATHアクセスリストによるルートフィルタを行い、AS123内のルートのみをAS4、AS5にアドバタイズしています。
設定概要
各ルータのBGPに関する設定は次の通りです。これらの設定には一部設定ミスがあります。
R1
interface Loopback0 ip address 192.168.0.1 255.255.255.255 ! interface Loopback1 ip address 123.1.1.1 255.255.255.0 ! interface Ethernet0/0 ip address 172.16.14.1 255.255.255.0 ! interface Ethernet0/1 ip address 192.168.12.1 255.255.255.0 ! router ospf 1 log-adjacency-changes network 192.168.0.0 0.0.255.255 area 0 ! router bgp 65001 no synchronization bgp log-neighbor-changes bgp confederation identifier 123 bgp confederation peers 65002 network 123.1.1.0 mask 255.255.255.0 neighbor 172.16.14.4 remote-as 4 neighbor 172.16.14.4 filter-list 1 out neighbor 192.168.0.2 remote-as 65002 neighbor 192.168.0.2 ebgp-multihop 255 neighbor 192.168.0.2 update-source Loopback0 neighbor 192.168.0.2 next-hop-self no auto-summary ! ip as-path access-list 1 permit ^$
R2
interface Loopback0 ip address 192.168.0.2 255.255.255.255 ! interface Loopback1 ip address 123.2.2.2 255.255.255.0 ! interface Ethernet0/0 ip address 192.168.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 192.168.0.0 0.0.255.255 area 0 ! router bgp 65002 no synchronization bgp log-neighbor-changes bgp confederation identifier 123 bgp confederation peers 65001 65003 network 123.2.2.0 mask 255.255.255.0 neighbor 192.168.0.1 remote-as 65001 neighbor 192.168.0.1 ebgp-multihop 255 neighbor 192.168.0.1 update-source Loopback0 neighbor 192.168.0.3 remote-as 65003 neighbor 192.168.0.3 ebgp-multihop 255 neighbor 192.168.0.3 update-source Loopback0 no auto-summary
R3
interface Loopback0 ip address 192.168.0.3 255.255.255.255 ! interface Loopback1 ip address 123.3.3.3 255.255.255.0 ! interface Ethernet0/0 ip address 192.168.23.3 255.255.255.0 ! interface Ethernet0/1 ip address 172.16.35.3 255.255.255.0 ! router ospf 1 log-adjacency-changes network 192.168.0.0 0.0.255.255 area 0 ! router bgp 65003 no synchronization bgp log-neighbor-changes bgp confederation identifier 123 bgp confederation peers 65002 network 123.3.3.0 mask 255.255.255.0 neighbor 172.16.35.5 remote-as 5 neighbor 172.16.35.5 filter-list 1 out neighbor 192.168.0.2 remote-as 65002 neighbor 192.168.0.2 ebgp-multihop 255 neighbor 192.168.0.2 update-source Loopback0 neighbor 192.168.0.2 next-hop-self no auto-summary ! ip as-path access-list 1 permit \)|^$
R4
interface Loopback0 ip address 4.4.1.4 255.255.255.0 secondary ip address 4.4.2.4 255.255.255.0 secondary ip address 4.4.3.4 255.255.255.0 secondary ip address 4.4.0.4 255.255.255.0 ! interface Ethernet0/0 ip address 172.16.14.4 255.255.255.0 ! router bgp 4 no synchronization bgp log-neighbor-changes network 4.4.0.0 mask 255.255.255.0 network 4.4.1.0 mask 255.255.255.0 network 4.4.2.0 mask 255.255.255.0 network 4.4.3.0 mask 255.255.255.0 neighbor 172.16.14.1 remote-as 123 no auto-summary
R5
interface Loopback0 ip address 5.5.1.5 255.255.255.0 secondary ip address 5.5.2.5 255.255.255.0 secondary ip address 5.5.3.5 255.255.255.0 secondary ip address 5.5.0.5 255.255.255.0 ! interface Ethernet0/0 ip address 172.16.35.5 255.255.255.0 ! router bgp 5 no synchronization bgp log-neighbor-changes network 5.5.0.0 mask 255.255.255.0 network 5.5.1.0 mask 255.255.255.0 network 5.5.2.0 mask 255.255.255.0 network 5.5.3.0 mask 255.255.255.0 neighbor 172.16.35.3 remote-as 123 no auto-summary
トラブルの症状
AS4、AS5にAS123内のルート(123.1.1.0/24、123.2.2.0/24、123.3.3.0/24)のみをアドバタイズするはずがそのようになっていません。R4でBGPテーブルを確認すると、AS123内の123.1.1.0/24しかありません。
R4 show ip bgp
R4#show ip bgp BGP table version is 18, local router ID is 4.4.0.4 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 *> 4.4.0.0/24 0.0.0.0 0 32768 i *> 4.4.1.0/24 0.0.0.0 0 32768 i *> 4.4.2.0/24 0.0.0.0 0 32768 i *> 4.4.3.0/24 0.0.0.0 0 32768 i *> 123.1.1.0/24 172.16.14.1 0 0 123 i
また、R5ではAS123内のルートだけでなくAS4内のルートもBGPテーブルに登録されています。
R5 show ip bgp
R5#show ip bgp BGP table version is 20, local router ID is 5.5.0.5 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 *> 4.4.0.0/24 172.16.35.3 0 123 4 i *> 4.4.1.0/24 172.16.35.3 0 123 4 i *> 4.4.2.0/24 172.16.35.3 0 123 4 i *> 4.4.3.0/24 172.16.35.3 0 123 4 i *> 5.5.0.0/24 0.0.0.0 0 32768 i *> 5.5.1.0/24 0.0.0.0 0 32768 i *> 5.5.2.0/24 0.0.0.0 0 32768 i *> 5.5.3.0/24 0.0.0.0 0 32768 i *> 123.1.1.0/24 172.16.35.3 0 123 i *> 123.2.2.0/24 172.16.35.3 0 123 i *> 123.3.3.0/24 172.16.35.3 0 0 123 i
この原因はR1、R3でのフィルタにあると考えられます。そこで、R1/R3で次のshowコマンドで原因の切り分けを行いました。
R1/R3
- show ip protocols
- show ip as-path-access-list
R1 showコマンドの結果
R1#show ip protocols Routing Protocol is "ospf 1" Outgoing update filter list for all interfaces is not set Incoming update filter list for all interfaces is not set Router ID 192.168.0.1 Number of areas in this router is 1. 1 normal 0 stub 0 nssa Maximum path: 4 Routing for Networks: 192.168.0.0 0.0.255.255 area 0 Reference bandwidth unit is 100 mbps Routing Information Sources: Gateway Distance Last Update 192.168.0.2 110 01:06:38 192.168.0.3 110 01:06:38 Distance: (default is 110) Routing Protocol is "bgp 65001" Outgoing update filter list for all interfaces is not set Incoming update filter list for all interfaces is not set BGP confederation consists of ASs: 65002 BGP confederation advertised as AS 123 IGP synchronization is disabled Automatic route summarization is disabled Neighbor(s): Address FiltIn FiltOut DistIn DistOut Weight RouteMap 172.16.14.4 1 192.168.0.2 Maximum path: 1 Routing Information Sources: Gateway Distance Last Update 192.168.0.2 200 00:58:15 172.16.14.4 20 01:06:08 Distance: external 20 internal 200 local 200 R1#show ip as-path-access-list AS path access list 1 permit ^$
R3 showコマンドの結果
R3#show ip protocols Routing Protocol is "ospf 1" Outgoing update filter list for all interfaces is not set Incoming update filter list for all interfaces is not set Router ID 192.168.0.3 Number of areas in this router is 1. 1 normal 0 stub 0 nssa Maximum path: 4 Routing for Networks: 192.168.0.0 0.0.255.255 area 0 Reference bandwidth unit is 100 mbps Routing Information Sources: Gateway Distance Last Update 192.168.0.1 110 01:07:34 192.168.0.2 110 01:07:34 Distance: (default is 110) Routing Protocol is "bgp 65003" Outgoing update filter list for all interfaces is not set Incoming update filter list for all interfaces is not set BGP confederation consists of ASs: 65002 BGP confederation advertised as AS 123 IGP synchronization is disabled Automatic route summarization is disabled Neighbor(s): Address FiltIn FiltOut DistIn DistOut Weight RouteMap 172.16.35.5 1 192.168.0.2 Maximum path: 1 Routing Information Sources: Gateway Distance Last Update 192.168.0.2 200 00:59:06 172.16.35.5 20 01:07:27 Distance: external 20 internal 200 local 200 R3#show ip as-path-access-list AS path access list 1 permit \)|^$
問題
- なぜAS4、AS5にアドバタイズされているルートが想定されているものと異なっているのでしょうか?
- 意図したようにAS4、AS5にルートをアドバタイズするにはどのように設定を修正すればよいでしょうか?ただし、フィルタ方法を変更してはいけません。
解答
なぜAS4、AS5にアドバタイズされているルートが想定されているものと異なっているのでしょうか?
R1、R3で設定しているAS_PATHアクセスリストの正規表現が間違っているため。コンフェデレーションAS番号の( )を考慮して正規表現を設定しなければいけない。
意図したようにAS4、AS5にルートをアドバタイズするにはどのように設定を修正すればよいでしょうか?ただし、フィルタ方法を変更してはいけません。
R1/R3
no ip as-path access-list 1 ip as-path access-list 1 permit ^$|\)$
ワンポイント
- 自ASで生成したBGPルートのAS_PATHにはAS番号が何も含まれない。
- 自ASで生成したBGPルートのAS_PATHを表す正規表現は「^$」
- コンフェデレーションを構成している場合、コンフェデレーションAS番号は( )内にリストされる
解説
BGPルートには必ずAS_PATHアトリビュートが付加されていて、BGPルートが経由するAS番号がリストされています。AS_PATHアトリビュートは文字列です。BGPルートを識別するために、AS_PATHアトリビュートを参照することができます。そのために、AS_PATHアクセスリストを利用します。AS_PATHアクセスリストでは、AS_PATHアトリビュートに含まれる文字列のAS番号のリストを正規表現で表し、permit/denyします。今回の問題はAS_PATHアクセスリストの正規表現の設定ミスに関してです。
自AS内で生成したBGPルートのAS_PATHアトリビュートには何も含まれません。これはEBGPネイバーにBGPルートをアドバタイズするときにAS番号をプリペンドするという仕組みだからです。そのため、通常、自AS内で生成したBGPルートのAS_PATHアトリビュートを表す正規表現は「^$」です。この正規表現は、AS_PATHアトリビュートの先頭(^)と最後($)の間に何も含まれていないということを表しています。ただし、コンフェデレーションを構成している場合は注意が必要です。
R1、R3ともにコンフェデレーション構成で自AS(AS123)で生成したBGPルート123.1.1.0/24、123.1.2.0/24、123.1.3.0/24を識別するためのAS_PATHアクセスリストが間違っています。
【R1 AS_PATHアクセスリストの設定ミス】
R1のAS_PATHアクセスリストを確認すると、次のようになっています。
R1 show ip as-path-access-list
R1#show ip as-path-access-list AS path access list 1 permit ^$
自AS内で生成したBGPルートを識別するためにAS_PATHに何も入っていない空っぽのルートとしているわけです。R1自身が生成する123.1.1.0/24はAS_PATHに何も入っていません。ところが、R2が生成する123.2.2.0/24、R3が生成する123.3.3.0/24は違います。R2、R3が生成するBGPルートのAS_PATHアトリビュートには、( )内にコンフェデレーションAS番号が含まれることになります。そのため、R1自身が生成する123.1.1.0/24のみがpermitされ、R4へアドバタイズされます。
R2が生成した123.2.2.0/24のBGPルート、R3が生成した123.3.3.0/24のBGPルートのAS_PATHアトリビュートは、R1でみると次のようになります。
- 123.2.2.0/24 AS_PATH (65002)
- 123.3.3.0/24 AS_PATH (65002 65003)
これをみると、AS_PATHアトリビュートの最後が「)」になっていることがわかります。つまり、AS123内で生成されたBGPルート123.1.1.0/24、123.2.2.0/24、123.3.3.0/24のAS_PATHアトリビュートは以下のいずれかです。
- からっぽ
- 最後が「)」
これを正規表現で表すと、「^$|\)$」になります。そのため、R1では、次のようにAS_PATHアクセスリストを修正する必要があります。
R1 AS_PATHアクセスリストの修正
no ip as-path access-list 1 ip as-path access-list 1 permit ^$|\)$
R1でAS_PATHアクセスリストを修正した後、BGPアップデートを再送信します。そして、R4でR1から受信したBGPルートを確認すると次のようになります。
R4 R1から受信したBGPルート
R4#show ip bgp neighbors 172.16.14.1 routes BGP table version is 8, local router ID is 4.4.0.4 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 *> 123.1.1.0/24 172.16.14.1 0 0 123 i *> 123.2.2.0/24 172.16.14.1 0 123 i *> 123.3.3.0/24 172.16.14.1 0 123 i Total number of prefixes 3
R4はR1からAS123内の123.1.1.0/24、123.2.2.0/24、123.3.3.0/24を受信していることがわかります。
【R3 AS_PATHアクセスリストの設定ミス】
R3のAS_PATHアクセスリストを確認すると、次のようになっています。
R3 show ip as-path-access-list
R3#show ip as-path-access-list AS path access list 1 permit \)|^$
このAS_PATHアクセスリストは
- AS_PATHアトリビュートのどこかに「)」が含まれている
- AS_PATHアトリビュートがからっぽ
のいずれかを表しています。ここで、R3でR2から受信するBGPルートを確認します。
R3 R2から受信するBGPルート
R3#show ip bgp neighbors 192.168.0.2 routes BGP table version is 12, local router ID is 192.168.0.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 *> 4.4.0.0/24 192.168.0.1 0 100 0 (65002 65001) 4 i *> 4.4.1.0/24 192.168.0.1 0 100 0 (65002 65001) 4 i *> 4.4.2.0/24 192.168.0.1 0 100 0 (65002 65001) 4 i *> 4.4.3.0/24 192.168.0.1 0 100 0 (65002 65001) 4 i *> 123.1.1.0/24 192.168.0.1 0 100 0 (65002 65001) i *> 123.2.2.0/24 192.168.0.2 0 100 0 (65002) i Total number of prefixes 6
AS_PATHアクセスリストのどこかに「)」が含まれているBGPルートは、AS123内のものだけではありません。AS4のルートのAS_PATHアトリビュートにも「)」が含まれています。そのため、R3はR5に対してAS123内の123.1.1.0/24、123.2.2.0/24、123.3.3.0/24だけではなくAS4内の4.4.0.0/24~4.4.3.0/24のルートもアドバタイズします。 R3でもR1と同じようにAS_PATHアクセスリストを修正しなければいけません。
R3 AS_PATHアクセスリストの修正
no ip as-path access-list 1 ip as-path access-list 1 permit ^$|\)$
R3でAS_PATHアクセスリストを修正した後、BGPアップデートを再送信します。そして、R5でR3から受信したBGPルートを確認すると次のようになります。
R5 R3から受信したBGPルート
R5#show ip bgp neighbors 172.16.35.3 routes BGP table version is 16, local router ID is 5.5.0.5 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 *> 123.1.1.0/24 172.16.35.3 0 123 i *> 123.2.2.0/24 172.16.35.3 0 123 i *> 123.3.3.0/24 172.16.35.3 0 0 123 i Total number of prefixes 3
R5はR3からAS123内の123.1.1.0/24、123.2.2.0/24、123.3.3.0/24を受信していることがわかります。
BGPの仕組み
- BGPの概要 ~AS間でルート情報を交換~
- BGPの動作
- BGPの基本設定と確認コマンド
- BGPピアグループ(Peer Group) ~ネイバーの設定をまとめよう~
- BGPネイバーの状態
- BGPコンフェデレーションの設定
- BGPコンフェデレーションの設定例
- BGPネイバー認証
- BGP Well Known Mandatory アトリビュート -ORIGIN/AS_PATH/NEXT_HOP-
- 図解!BGPベストパス選択アルゴリズム
- BGP 基本的な設定についての演習[Cisco]
- BGPの基本的な設定についての演習 ~トラブルシュート~
- BGP KEEPALIVEタイマ/ホールドタイムの設定
- BGPルート 最小送信間隔の設定
- BGPルートダンプニング
- マルチホーム – インターネット接続の冗長化 –
- マルチホームAS BGPルートフィルタのポイント
- マルチホームAS ベストパス選択のポイント
- マルチホームAS IGPとBGPの連携のポイント
- マルチホームAS BGPの設定例
- IP-VPNでのBGPの利用 設定例
- BGPルートフィルタの種類
- BGPルートフィルタ -ディストリビュートリスト-
- BGPルートフィルタ -ディストリビュートリスト設定例-
- BGPルートフィルタ -プレフィクスリスト-
- BGPルートフィルタ -プレフィクスリスト設定例-
- BGPルートフィルタ -フィルタリスト(AS_PATH ACL)-
- BGPルートフィルタ -フィルタリスト(AS_PATH ACL)設定例-
- BGPルートフィルタ -ルートマップ(route-map)-
- BGPルートフィルタ -ルートマップ(route-map)設定例-
- BGP neighbor allowas-inコマンド
- BGP neighbor as-overrideコマンド
- BGPルート RIB Failure
- BGPルート アドミニストレイティブディスタンスの制御
- BGPルートの負荷分散
- BGPルート 条件付き生成
- BGPルート 条件付きアドバタイズ
- BGP ルート集約 自動集約
- BGPルート集約 networkコマンドによる集約
- BGPルート集約 networkコマンドによる集約 設定例
- BGP ルート集約 aggregate-addressコマンドによる集約
- aggregate-addressコマンドのオプション summary-only
- aggregate-addressコマンドのオプション attribute-map
- aggregate-addressコマンドのオプション as-set
- aggregate-addressコマンドのオプション advertise-map
- aggregate-addressコマンド as-set/attribute-map/advertise-map 設定例
- BGP選択型集約の概要
- BGP選択型集約 suppress-map
- BGP選択型集約 unsuppress-map
- BGP 選択型集約 suppress-map/unsuppress-map 設定例
- BGP local-as ~ネイバーに他のASのように見せる~
- BGP neighbor remove-private-ASコマンド
- bgp fast external-fallover
- BGP プレフィクス数の制限
- BGP COMMUNITYアトリビュートの使い方
- BGP Well-known COMMUNITYのルートフィルタ設定例
- BGP プライベートCOMMUNITYによるルート制御の設定例
- [演習]BGP応用 Part1:BGP基本設定
- [演習]BGP応用 Part2:ルート集約
- [演習]BGP応用 Part3:ポリシーベースルーティング
- [演習]BGP応用 Part4:トラブルシューティング
- BGP 設定ミスの切り分けと修正 Part1
- BGP 設定ミスの切り分けと修正 Part2
- BGP 設定ミスの切り分けと修正 Part3
- BGP 設定ミスの切り分けと修正 Part4
- BGP 設定ミスの切り分けと修正 Part5
- BGP 設定ミスの切り分けと修正 Part6
- BGP 設定ミスの切り分けと修正 Part7
- IPv6 BGPの設定例 Part1
- IPv6 BGPの設定例 Part2
- 2021年10月4日 Facebookに何が起こったか?
- IPv4 BGPネイバーでのIPv6プレフィックスの交換