BGP ASパスを使用したフィルタリング
BGPのASパスフィルタリングとは、BGPのルート情報交換時に、特定の**ASパス(Autonomous System Path)**に基づいてルートを許可または拒否する方法です。BGPでは、ルート情報がネットワーク間でやり取りされる際に、各経路にはその経路が通過したASのリスト(ASパス)が含まれます。これにより、BGPはループを防止し、最適な経路を選択するのに役立てています。
ASパスを指定する正規表現
BGPのASパスフィルタリングでは、正規表現(Regular Expression, regex)を使用して、ASパス属性に基づくルートのフィルタリングを柔軟に行うことができます。正規表現を使って、特定のAS番号がどこに存在するか、どのASを通過したか、などの条件を設定できます。
| 正規表現 | 意味 |
|---|---|
| ^ | ASパスの最初を意味します。ASパスが特定のASで始まることを指定する場合に使用します。 |
| $ | ASパスの最後を意味します。ASパスが特定のASで終わることを指定する場合に使用します。 |
| . | 任意の1文字を表します |
| * | 0回以上の繰り返しを表します。 |
| + | 1回以上の繰り返しを表します。 |
| _ | AS番号の前後を区切る区切り記号として使用します。AS番号の前後に他のASがあることを指定します。 |
| [] | 中括弧の中のいずれかの文字に一致します(AS番号では特定の番号のいずれかを指定できます)。 |
| | | 論理ORを意味し、複数のパターンを指定できます。 |
BGP ASパスを使用したフィルタリングの設定

Router1
Router2
Router3
Router4
Router5
現在Router1ではそれぞれのRouterから受信したルート情報があります。そのルート情報に対して、ASパスを指定したフィルタリングを行います。

受信しているネットワーク情報のPath情報も確認します。

特定のASで生成されたルートをフィルタリング
Router1でASパスが AS65003で始まるルート(AS65003で生成されたルート)のみを受信するようフィルタリングします。
1.as-path access-listの作成
Router1(config)#ip as-path access-list 1 permit _65003$
2.as-path access-listの適用
Router1(config)#router bgp 65001
Router1(config-router)#neighbor 192.168.12.2 filter-list 1 in
3.動作確認
Router1のルーティングテーブルを確認すると、AS65003で生成されたルート情報(3.3.3.3,192.16835.0/24)の情報のみしかBGPで受信していません。

BGPで受信しているネットワーク情報を確認してもPathに65003が含まれていないものは受信していません。

BGPでフィルタリング情報等を更新した場合はセッションをクリアする必要があります。
複数のASのいずれかを経由するルートをフィルタリング
ASパスに65004もしくは65005が含まれるルートを拒否します。
1.as-path access-listの作成
Router1(config)#ip as-path access-list 1 deny _65004|65005_
Router1(config)#ip as-path access-list 1 permit .*
permit .*とすることですべてのASパスを指定することが出来ます。
2.as-path access-listの適用
Router1(config)#router bgp 65001
Router1(config-router)#neighbor 192.168.12.2 filter-list 1 in
3.動作確認
ASパスに65004または65005を含むルート情報(Router4,Router5で生成、経由した情報)を受信しなくなったため、4.4.4.4や5.5.5.5に関する情報がなくなりました。

Path情報を見ても65004、65005を含む情報がなくなっています。

自身のASで生成したルートのみを指定
Router2でRouter1に対して、自信のASで生成したルートのみをアドバタイズするようフィルタリングします。
1.as-path access-listの作成
Router2(config)#ip as-path access-list 1 permit ^$
2.as-path access-listの適用
Router2(config)#router bgp 65002
Router2(config-router)#neighbor 192.168.12.1 filter-list 1 out
Router2(config-router)#end
Router2#clear ip bgp * soft out
3.動作確認
Router1でRouter2自身が生成したルート情報のみ受信するようになりました。

BGPのネットワーク情報を確認してもPathに65002が含まれていないものは受信していません。
