概要

特定のネイバーから学習したBGPルートのより詳細なルートを生成できます。BGPルートの条件付き生成について解説します。

関連記事

BGPルートの条件付き生成を設定するには、プレフィクスリスト、ルートマップの設定を理解していることが前提です。プレフィクスリストおよびルートマップの設定について、以下の記事もあわせてご覧ください。

BGPルートの条件付き生成とは

特定のネイバーから学習したBGPルートについて、より詳細なルートを生成することができます。これをルートの条件付き生成(Conditional Route Injection)と呼びます。

図  BGPルートの条件付き生成
図 BGPルートの条件付き生成

BGPルートの条件付き生成の設定

ルートの条件付き生成には、bgp inject-map exist-mapコマンドを使います。コマンドの構文は次の通りです。

BGPルートの条件付き生成の設定

(config)#router bgp <AS>
(config-router)#bgp inject-map <route-map-name> exist-map <route-map-name>

<AS>:AS番号
inject-map <route-map-name>:exist-mapの条件を満足したときに生成するより詳細なルートの指定をルートマップで行います。
exist-map <route-map-name>:ルートマップで指定した特定のネイバーからルートを受信すれば条件を満足します。

ルートの条件付き生成では、exist-mapで指定したネイバーから受信した特定のルートをトラッキングします。exist-mapで指定したネイバーからの特定のルートがBGPテーブル上にあれば条件を満足します。exist-mapのルートマップ内でmatch条件によってネイバーとルートを指定します。

条件を満足すると、inject-mapで指定したルートを生成してBGPテーブルに載せます。inject-mapで指定するルートはexist-mapのより詳細なルート(more specific route)に限られます。生成する詳細ルートの指定は、ルートマップ内のset ip address prefix-listで行います。

図 bgp inject-map exist-mapコマンド
図 bgp inject-map exist-mapコマンド

生成されたルートはshow ip bgp injected-pathsやshow ip bgp <address>で確認できます。

条件付き生成の確認コマンド

R1#show ip bgp injected-paths
BGP table version is 6, local router ID is 199.1.1.1
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
*> 100.1.1.0/30     172.16.1.11                            0 ?
*> 100.1.1.4/30     172.16.1.11                            0 ?
R1#show ip bgp 100.1.1.0/30
BGP routing table entry for 100.1.1.0/30, version 5
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to non peer-group peers:
  3.3.3.3
  Local, (injected path from 100.1.1.0/24)
    172.16.1.11 from 172.16.1.11 (111.1.1.11)
      Origin incomplete, localpref 100, valid, external, best

BGPルートの条件付き生成の設定例

次のネットワーク構成でルートの条件付き生成を確認します。

図 ルートの条件付き生成の確認
図 ルートの条件付き生成の確認

この図のR1において、ISP1から100.1.1.0/24を受信したら、R1であらたに100.1.1.0/30と100.1.1.4/30を生成します。R1では次のような設定を行います。

R1 bgp inject-map exist-mapの設定

ip prefix-list ISP1 permit 172.16.1.11/32
ip prefix-list ROUTE permit 100.1.1.0/24
!
route-map EXIST permit 10
 match ip address prefix-list ROUTE
 match ip route-source prefix-list ISP1
!
ip prefix-list MORE_SPECIFIC permit 100.1.1.0/30
ip prefix-list MORE_SPECIFIC permit 100.1.1.4/30
!
route-map INJECT
 set ip address prefix-list MORE_SPECIFIC
!
router bgp 100
 bgp inject-map INJECT exist-map EXIST

この設定について、もう少し詳しく見ていきます。まず、条件に当たるexist-mapのルートマップの設定をみていきます。

R1 exist-mapの設定

ip prefix-list ISP1 permit 172.16.1.11/32
ip prefix-list ROUTE permit 100.1.1.0/24
!
route-map EXIST permit 10
 match ip address prefix-list ROUTE
 match ip route-source prefix-list ISP1

ルートマップ「EXIST」を作成し、その中でmatch条件によってネイバーとルートを指定しています。ネイバーの指定はmatch ip route-source prefix-listで行います。ルートの指定はmatch ip address prefix-listで行います。そして、実際のネイバーの指定のため「ISP1」という名前のプレフィクスリストとルートの指定の「ROUTE」というプレフィクスリストを作成しています。

次に条件を満たしたときに生成するルートのinject-mapで使うルートマップの設定を見ます。

R1 inject-mapの設定

ip prefix-list MORE_SPECIFIC permit 100.1.1.0/30
ip prefix-list MORE_SPECIFIC permit 100.1.1.4/30
!
route-map INJECT
 set ip address prefix-list MORE_SPECIFIC

ルートマップ「INJECT」を作成し、その中でset ip address prefix-listによって、実際に生成するルートを指定するプレフィクスリストを関連づけています。プレフィクスリストは「MORE_SPECIFIC」という名前でexist-mapの条件である100.1.1.0/24のより詳細なルートとして100.1.1.0/30と100.1.1.4/30を指定しています。

最後に、作成したルートマップをbgp inject-map exist-mapで適用しています。

bgp inject-map exit-map コマンド

router bgp 100
 bgp inject-map INJECT exist-map EXIST
図 ルートの条件付き生成 設定のまとめ
図 ルートの条件付き生成 設定のまとめ

また、R1でshow ip bgp injected-pathsおよび生成ルートの詳細を確認すると、次のようになります。

R1 show ip bgp injected-paths、生成されたルートの詳細

R1#show ip bgp injected-paths
BGP table version is 6, local router ID is 199.1.1.1
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
*> 100.1.1.0/30     172.16.1.11                            0 ?
*> 100.1.1.4/30     172.16.1.11                            0 ?
R1#show ip bgp 100.1.1.0
BGP routing table entry for 100.1.1.0/30, version 5
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to non peer-group peers:
  3.3.3.3
  Local, (injected path from 100.1.1.0/24)
    172.16.1.11 from 172.16.1.11 (111.1.1.11)
      Origin incomplete, localpref 100, valid, external, best
R1#show ip bgp 100.1.1.4
BGP routing table entry for 100.1.1.4/30, version 6
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to non peer-group peers:
  3.3.3.3
  Local, (injected path from 100.1.1.0/24)
    172.16.1.11 from 172.16.1.11 (111.1.1.11)
      Origin incomplete, localpref 100, valid, external, best

まとめ

ポイント

  • BGPルートの条件付き生成とは、特定のBGPネイバーから受信したBGPルートのより詳細なルートを生成することです。
  • BGPルートの条件付き生成のコマンドは次の通りです。
    • (config)#router bgp <AS>
      (config-router)#bgp inject-map <route-map-name> exist-map <route-map-name>
    • exit-mapでルートマップを参照して、特定のBGPネイバーから受信する特定のBGPルートを指定します。
    • inject-mapでルートマップを参照して、生成するより詳細なBGPルートを指定します。

BGPの仕組み