概要

ルートマップによるBGPルートフィルタの設定と確認コマンドについて解説します。ルートマップを利用すると、標準/拡張ACL、プレフィクスリスト、AS_PATH ACLなどを参照してフィルタするBGPルートを特定できます。また、フィルタだけではなく、BGPルートに追加でパスアトリビュートをセットできます。

関連記事

ルートマップによるBGPルートフィルタを理解するためには、ルートマップで参照する標準/拡張ACL、プレフィクスリスト、AS_PATH ACLでのルートフィルタを理解しておかなければいけません。以下の記事もあわせてご覧ください。

ルートマップによるBGPルートフィルタの設定の流れ

ルートマップでBGPルートをフィルタするための設定の流れは、以下の通りです。

  1. ルートマップでフィルタするルート情報を特定する
  2. 特定のネイバーへルートマップを適用する
  3. BGPルートを再送受信する

ルートマップによるBGPルートフィルタの設定コマンド

フィルタするためのルートマップを作成し、特定のBGPネイバーへ適用します。設定コマンドは以下の通りです。

BGPルートフィルタ ルートマップ

(config)#route-map <mat-tag> {permit | deny} [<seq-num>]
(config-route-map)#match <condition>
(config-route-map)#set <action>

(config)#router bgp <AS>
(config-router)#neighbor <ip-address> route-map <map-tag> {in|out}

<map-tag> : 任意のルートマップ名
permit | deny : permitまたはdenyを指定
<seq-num> : シーケンス番号。省略すると「10」
<condition> : 条件
<action> : 追加の処理
<AS> : AS番号
<ip-address> : BGPネイバーのIPアドレス

<map-tag>は、ルートマップの名前です。あまり長くしすぎないでわかりやすいルートマップ名を決めてください。<seq-num>は処理の順序です。<seq-num>が小さい順から処理を行います。

permit | deny でBGPルートを許可または拒否します。そして、match <condition>でフィルタ対象のBGPルートを特定します。標準/拡張ACL、ディストリビュートリスト、AS_PATH ACLを参照できます。その他の条件を設定することもできます。matchを省略すると、すべてです。

さらに、set <action>でpermitしたBGPルートに追加のアクションを設定します。主にパスアトリビュートをセットします。

以降、permit | deny およびmatch、setの設定についてもう少し詳しくみていきます。

permit | deny

BGPルートをどのように扱うかは、<map-tag>のうしろのpermit|denyです。このことをきちんと理解しておきましょう。match条件で参照する標準/拡張ACL、プレフィクスリスト、AS_PATH ACLのpermit|denyはmatch条件に一致しているかどうかを意味しているだけです。match条件に一致したBGPルートを<map-tag>のあとのpermit | denyの処理をします。

ルートマップのpermitはルート情報を許可します。ルートマップをinで適用していると、ネイバーから該当のBGPルートを受信します。ルートマップをoutで適用していると、ネイバーへ該当のBGPルートをアドバタイズします。そして、denyはルート情報の拒否です。つまり、ルートマップをinで適用しているときはネイバーからアドバタイズされた該当のBGPルートを破棄します。outで適用していれば、ネイバーへ該当のBGPルートをアドバタイズしません。

match条件 標準/拡張ACL

ルートマップのmatch条件で標準/拡張ACLを参照するための設定は以下です。

ルートマップ match条件 標準/拡張ACL

(config)#route-map <mat-tag> {permit | deny} [<seq-num>]
(config-route-map)#match ip address {<ACL-num> | <ACL-name>}

<ACL-num> : 参照するACL番号
<ACL-name> : 参照するACL名

標準ACLであれば、BGPルートのネットワークアドレスだけをチェックします。

図 BGPルートフィルタ ルートマップ match条件 標準ACL
図 BGPルートフィルタ ルートマップ match条件 標準ACL

拡張ACLであれば、BGPルートのネットワークアドレス+サブネットマスクをチェックします。

 図 BGPルートフィルタ ルートマップ match条件 拡張ACL
図 BGPルートフィルタ ルートマップ match条件 拡張ACL

match条件 プレフィクスリスト

ルートマップのmatch条件でプレフィクスリストを参照するための設定は以下です。

ルートマップ match条件 プレフィクスリスト

(config)#route-map <mat-tag> {permit | deny} [<seq-num>]
(config-route-map)#match ip address prefix-list <prefix-list-name>

<prefix-list-name> : 参照するプレフィクスリスト名

プレフィクスリストを参照すると、BGPルートのネットワークアドレス+サブネットマスクをチェックします。

  図 BGPルートフィルタ ルートマップ match条件 プレフィクスリスト
図 BGPルートフィルタ ルートマップ match条件 プレフィクスリスト

match条件 AS_PATH ACL

ルートマップのmatch条件でAS_PATH ACLを参照するための設定は以下です。

ルートマップ match条件 AS_PATH ACL

(config)#route-map <mat-tag> {permit | deny} [<seq-num>]
(config-route-map)#match as-path <as-path-acl-num>

<as-path-acl-num> : AS_PATH ACL番号

AS_PATH ACLを参照すると、BGPルートのAS_PATHアトリビュートをチェックします。

   図 BGPルートフィルタ ルートマップ match条件 AS_PATH ACL
図 BGPルートフィルタ ルートマップ match条件 AS_PATH ACL

set <action>

BGPルートをフィルタするだけでなく、追加でパスアトリビュートをセットするにはset <action>の設定を行います。set <action>によって、permitされたBGPルートのパスアトリビュートをセットします。

BGPパスアトリビュートのセットに関連する主なset <action>は以下の表にまとめています。

set <action>概要
set weightWEIGTHをセットします。
set local-preferenceLOCAL_PREFをセットします。
set originORIGINをセットします。
set ip next-hopNEXT_HOPをセットします。
set metricMEDをセットします。
set as-path prependAS_PATHにプリペンドします。
set communityCOMMUNITYをセットします。
set extcommunity拡張COMMUNITYをセットします。
表 set <action> の例

暗黙のdeny

ルートマップにも標準/拡張ACL、プレフィクスリスト、AS_PATH ACLと同様に暗黙のdenyがあります。denyのシーケンスの条件しかないと、結局は暗黙のdenyによってすべてのBGPルートがdenyになってしまうので注意してください。

BGPルートの再送受信

ルートマップをネイバーに適用するだけでは、ルートフィルタは反映されません。BGPルートの再送受信が必要です。ルートマップを適用している方向によって、再送または再受信してください。特権EXECモードで次のコマンドを利用します。

BGPルート 再送受信

#clear ip bgp <ip-address> {in|out}

<ip-address> : ネイバーのIPアドレス

ルートマップによるBGPルートフィルタの確認コマンド

ルートマップによるBGPルートフィルタを確認するための主なshowコマンドを以下の表にまとめています。

コマンド概要
#show route-mapBGPルートを特定するためのルートマップを確認します。また、ルートマップで参照している標準/拡張ACL、プレフィクスリスト、AS_PATH ACLもあわせて確認してください。
#show ip protocolsBGPネイバーに適用されているルートマップを確認します。
#show ip bgpBGPテーブルを確認します。
#show ip bgp neighbor advertised-routes指定したBGPネイバーへアドバタイズするBGPルートを確認します。
#show ip bgp neighbor routes指定したBGPネイバーから受信したBGPルートを確認します。
表 ルートマップによるBGPルートフィルタの確認コマンド

まとめ

ポイント

  • ルートマップによるBGPルートフィルタの設定の流れは以下の通りです。
    • ルートマップでフィルタするルート情報を特定する
    • 特定のネイバーへルートマップを適用する
    • BGPルートを再送受信する
  • ルートマップのmatch条件で標準/拡張ACL、プレフィクスリスト、AS_PATH ACLなどを参照してフィルタするBGPルートを特定します。
  • match条件に一致したBGPルートをどのように扱うかは<map-tag>のあとの permit | deny です。

BGPの仕組み