【BGP】正規表現と主な使用例 Cisco

 正規表現を用いることで、特定のASパスを条件にして、BGPルートの参照やフィルタができます。正規表現で使用できる主な文字列は以下の通りです。

文字列説明
_ (アンダースコア)数字以外の任意の文字列(AS番号間のスペースに使用することが多い
* (アスタリスク)前の文字を0回または何度も繰り返す
$ (ドル)文字列の末尾と一致
[] (ブラケット)範囲
^ (キャレット)文字列の先頭に一致
+ (プラス)前の文字を1回以上繰り返す
. (ピリオド)スペースを含む1つの文字列
正規表現      説明
1010という文字列
_1010という文字列の前にスペースがある
_10_10という文字列の前後にスペースがある
→AS10を通過する
^1_AS-PATHの先頭が1という文字列で始まり、その後がスペース
→先頭のAS(直接接続されているAS)が1である
_13$最後に13という文字列があり、その前はスペースがある
→最後のAS(ルートが生成されたAS)が13である
1[13]11もしくは13という文字列
[1-3]010,20,30という文字列
^[12]_[23]_先頭が1もしくは2で始まり、スペースの後、2もしくは3、そしてスペースがある文字列
_1[23]$12もしくは13で終わり、前にスペースがある文字列
_1.$10〜19で終わり、前にスペースがある文字列
^$空っぽの文字列
→空のASパスに一致するため、ローカルASから生成されたルートを検索

詳細は以下を参考にしてください。

Terminal Services Configuration Guide, Cisco IOS XE Release 16.x - Regular Expressions [Cisco 4000 Series Integrated Services Routers]
Regular Expressions.
スポンサーリンク

使用例

 以下のBGPテーブルを題材に、正規表現による検索結果を確認します。

R5# show ip bgp
BGP table version is 12, local router ID is 5.5.5.5
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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  1.1.1.1/32       192.168.15.1             0             0 1 1 10 11 i
 *>  2.2.2.2/32       192.168.25.2             0             0 2 2 20 1000 12 i
 *>  3.3.3.3/32       192.168.35.3             0             0 3 3 30 1000 13 i
 *>  4.4.4.4/32       192.168.45.4             0             0 4 i
 *>  5.5.5.5/32       0.0.0.0                  0         32768 i

通過したASでルートを検索

 例えば、AS10を通過したルートを検索するとします。以下の通り、条件を10だけにすると、10だけでなく1000も一致となります。

R5# show ip bgp regexp 10
BGP table version is 12, local router ID is 5.5.5.5
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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  1.1.1.1/32       192.168.15.1             0             0 1 1 10 11 i
 *>  2.2.2.2/32       192.168.25.2             0             0 2 2 20 1000 12 i
 *>  3.3.3.3/32       192.168.35.3             0             0 3 3 30 1000 13 I

 _10だと、先頭のスペースも条件になります。ただし、前回同様1000も一致となります。

R5# show ip bgp regexp _10
BGP table version is 12, local router ID is 5.5.5.5
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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  1.1.1.1/32       192.168.15.1             0             0 1 1 10 11 i
 *>  2.2.2.2/32       192.168.25.2             0             0 2 2 20 1000 12 i
 *>  3.3.3.3/32       192.168.35.3             0             0 3 3 30 1000 13 I

 AS10のみを通過したルートを検索するには、10の文字列の前後にスペースを含める必要があるため、 _10_で検索します。

R5# show ip bgp regexp _10_
BGP table version is 12, local router ID is 5.5.5.5
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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  1.1.1.1/32       192.168.15.1             0             0 1 1 10 11 I

隣接ASから広告されたルートを検索

 例えば、隣接されたAS1から広告されたルートを検索するには、先頭が1という文字列で始まり、その後がスペースがある条件で検索します。

R5# show ip bgp regexp ^1_
BGP table version is 12, local router ID is 5.5.5.5
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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  1.1.1.1/32       192.168.15.1             0             0 1 1 10 11 I

生成されたASで検索

 例えば、AS13から生成されたルートは、最後に13という文字列があり、その前はスペースがある条件で検索します。

R5# show ip bgp regexp _13$
BGP table version is 12, local router ID is 5.5.5.5
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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  3.3.3.3/32       192.168.35.3             0             0 3 3 30 1000 13 i

ASを特定条件の文字列で検索

 AS-PATHに11もしくは13の文字列があるものを検索します。

R5# show ip bgp regexp 1[13] 
BGP table version is 12, local router ID is 5.5.5.5
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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  1.1.1.1/32       192.168.15.1             0             0 1 1 10 11 i
 *>  3.3.3.3/32       192.168.35.3             0             0 3 3 30 1000 13 I

 AS-PATHに10,20,30いずれかの文字列があるものを検索します。

R5# show ip bgp regexp [1-3]0
BGP table version is 12, local router ID is 5.5.5.5
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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  1.1.1.1/32       192.168.15.1             0             0 1 1 10 11 i
 *>  2.2.2.2/32       192.168.25.2             0             0 2 2 20 1000 12 i
 *>  3.3.3.3/32       192.168.35.3             0             0 3 3 30 1000 13 i

 AS-PATHの先頭のAS番号が1か2 で次のAS番号が2か3であるものを検索します。

R5# show ip bgp regexp ^[12]_[23]_
BGP table version is 12, local router ID is 5.5.5.5
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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  2.2.2.2/32       192.168.25.2             0             0 2 2 20 1000 12 i

 AS-PATHの最後のAS番号が12もしくは13であるものを検索します。

R5# show ip bgp regexp _1[23]$
BGP table version is 12, local router ID is 5.5.5.5
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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  2.2.2.2/32       192.168.25.2             0             0 2 2 20 1000 12 i
 *>  3.3.3.3/32       192.168.35.3             0             0 3 3 30 1000 13 i

 AS-PATHの最後のAS番号が10〜19であるものを検索します。

R5# show ip bgp regexp _1.$
BGP table version is 12, local router ID is 5.5.5.5
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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  1.1.1.1/32       192.168.15.1             0             0 1 1 10 11 i
 *>  2.2.2.2/32       192.168.25.2             0             0 2 2 20 1000 12 i
 *>  3.3.3.3/32       192.168.35.3             0             0 3 3 30 1000 13 I

自身が生成したルートを検索

 これは、空っぽの文字列のAS番号を条件にすることで検索できます。

R5# show ip bgp regexp ^$
BGP table version is 12, local router ID is 5.5.5.5
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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  5.5.5.5/32       0.0.0.0                  0         32768 i

その他 BGP関連記事は   >>  ルーティングプロトコル(BGP)まとめ << より参照できます。

コメント