BGP

【図解/BGP】filter-list/as-path access-list の設定と正規表現

filter-list と as-path access-list の使い方

ip as-path access-list を使うことで、『どういう順番でどの AS を通過したか』という情報を表現できます。

そして neighbor X.X.X.X filter-list [as-path access-list #] 設定により、その as-path access-list での表現に合致するルートのみを広報することができます。

例えば AS=10 で生成されたルート [ 1.1.1.0/24 ] が AS=20、AS=30 という順番で広報されてきたとき、AS=50 では以下の設定をすることでそのルートだけを受信することができます。

RT5(config)# ip as-path access-list 1 permit 30_20_10
RT5(config)# router bgp 50
RT5(config-router)# neighbor 10.1.35.3 filter-list 1 in

_ (アンダースコア) は AS 番号の区切りとして考えることができます。

正規表現とは

正規表現とはネットワーク用語ではなく、Windows の findstr コマンドや Linux の grep コマンドなど、色々なシステムやコマンドで幅広く使われています。

正規表現 (Regular Expression) は文字列のパターンマッチングで使われるもので、例えば 0 から 19 までの AS を表現する場合は以下のようになります。

1?[0-9]

? は『直前の文字がを 0 個または 1 個』を表します。

[ - ] は範囲を示します。一般的には [a-z] とすれば英小文字の a から z までの任意の 1 文字を表しますが、AS を表現する際には使われません。[0-9] とすれば 0 から 9 の任意の数字を表します。

また、$ は直前の文字が文字列の最後尾であることを示します。

なので先程の例で、

(config)# ip as-path access-list 2 permit _1?[0-9]$
(config)# router bgp 50
(config-router)# neighbor 10.1.35.3 filter-list 2 in

とすれば AS 番号が 0 から 19 で終わる (つまり 0 から 19 の中で生成された) ルートのみが引っ掛かります。

RT5# sh ip bgp

       Network       Next Hop   Metric  LocPrf  Weight  Path
 *>  1.1.1.0/24    10.1.35.3                                      0  30 20 10 i

正規表現の特殊文字には以下のような種類があります。

記号読み方正規表現の意味
.ピリオド任意の 1 文字と一致
*アスタリスク直前の文字を 0 個以上繰り返し
+プラス直前の文字を 1 個以上繰り返し
?クエスチョンマーク直前の文字を 0 個または 1 個
^ハット直後の文字が文字列の最初
$ダラー直前の文字が文字列の最後
[ - ]ブラケット, ハイフン範囲を示す ( [3-7] は 3, 4, 5, 6, 7 のどれかを示す)
_アンダースコア直後の文字が文字列の最後, 直前の文字が文字列の最初,
スペース のいずれかを示す

なお、アンダースコアは一般的な正規表現には含まれません。Cisco 等での独自の使い方です。

アンダースコアの代わりにスペースを使うこともできます。

RT5(config)# ip as-path access-list 3 permit 30 20 10

コメント

タイトルとURLをコピーしました