内容

はじめに

前提条件

要件

使用するコンポーネント

背景説明

表記法

設定

ネットワーク図

条件付きアドバタイズメント機能の設定

設定を検証する

例 1

例 2

例 3

関連情報

はじめに

このドキュメントでは、ボーダーゲートウェイプロトコル(BGP)条件付きアドバタイズメント機能を設定および確認する方法について説明します。

前提条件

要件

次の項目に関する専門知識があることが推奨されます。

- BGP ケース スタディ

使用するコンポーネント

このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな（デフォルト）設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。

背景説明

ボーダー ゲートウェイ プロトコル（BGP）条件付きアドバタイズメント機能を使用すると、BGP テーブルの中に別のプレフィックスが存在しているかどうかに応じて、ルート アドバタイズメントの新たな制御が可能になります。

このドキュメントで説明されているBGP条件付きアドバタイズメント機能は、Cisco IOS®ソフトウェアリリース11.1および11.2で導入され、以降のリリースで使用できます。

通常、ルートは別のパスの有無に関わらず伝播されます。BGP 条件付きアドバタイズメント機能では、neighbor advertise-map コマンドの non-exist-map および advertise-map キーワードを使用して、ルート プレフィックスごとにルートを追跡します。non-exist-map コマンドの出力に該当するルート プレフィックスがない場合、advertise-map コマンドで指定されたルートがアナウンスされます。この機能は、マルチホーム ネットワークで、いずれかのプロバイダーからアドバタイズされたプレフィックスを、他のプロバイダーからの情報が存在しない場合にのみ提供する場合に役立ちます。

条件付き BGP アナウンスは、BGP ルータがピアに送信する通常のアナウンスと併せて送信されます。

表記法

表記法の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。

設定

このセクションでは、このドキュメントで説明する機能を設定するために必要な情報を提供しています。

注：このドキュメントで使用されているコマンドの詳細を調べるには、Cisco IOS Command Lookupツールを使用してください。シスコの内部ツールおよび情報にアクセスできるのは、登録ユーザのみです。

ネットワーク図

このドキュメントでは、次の図で示されるネットワーク設定を使用しています。

ここでは、R103 のループバック インターフェイスを使用して 192.168.50.0/24 を R102 にアナウンスします。R102にはBGPネットワーク172.16.16.0/24があり、デフォルトで外部BGP(eBGP)ピアであるR101とR103の両方にアナウンスされます。

ネットワーク構成

BGP 条件付きアドバタイズメント機能を使用することで、R102 で以下のタスクに対応できます。

- 192.168.50.0/24がR102のBGPテーブルに存在する場合は、172.16.16.0/24ネットワークをR101にアドバタイズしないでください。

- 192.168.50.0/24がR102のBGPテーブルに存在しない場合は、172.16.16.0/24ネットワークをR101にアドバタイズします。

Cisco IOS 12.2T以降のバージョンでは、exist-mapキーワードを使用して次のタスクも実行できます。

- 192.168.50.0/24がR102 BGPテーブルに存在する場合は、172.16.16.0/24ネットワークをR101にアドバタイズします。

- 192.168.50.0/24がR102 BGPテーブルに存在しない場合は、172.16.16.0/24ネットワークをR101にアドバタイズしないでください。

条件付きアドバタイズメント機能の設定

このドキュメントでは、次のコンフィギュレーションを使用します。

注：この例では、non-exist-mapキーワードについて説明します。exist-map キーワードを使用する方法もこれと同様です。

R102

hostname R102

!

interface Loopback0

ip address 172.16.16.1 255.255.255.0

!

interface Serial8/0

ip address 10.10.10.2 255.255.255.0

!

interface Serial9/0

ip address 10.10.20.2 255.255.255.0

!

router bgp 2

bgp log-neighbor-changes

network 172.16.16.0 mask 255.255.255.0

network 172.31.130.0

neighbor 10.10.10.1 remote-as 1

neighbor 10.10.10.1 advertise-map ADVERTISE non-exist-map NON-EXIST

!--- Advertises the routes matched in the route-map ADVERTISE (172.16.16.0/24)

!--- only if the routes matched in route-map NON-EXIST (192.168.50.0/24)

!--- do not exist in the BGP table.

neighbor 10.10.20.3 remote-as 3

!

ip route 172.31.130.0 255.255.0.0 Null0

!

access-list 60 permit 172.16.16.0 0.0.0.255

access-list 65 permit 192.168.50.0 0.0.0.255

!

route-map NON-EXIST permit 10

match ip address 65

!

route-map ADVERTISE permit 10

match ip address 60

!

R103

hostname R103

!

interface Loopback0

ip address 192.168.50.1 255.255.255.0

!

interface Serial9/0

ip address 10.10.20.3 255.255.255.0

!

router bgp 3

bgp log-neighbor-changes

network 192.168.50.0

neighbor 10.10.20.2 remote-as 2

!

R101

hostname R101

!

interface Loopback0

ip address 10.200.200.1 255.255.255.0

!

interface Serial8/0

ip address 10.10.10.1 255.255.255.0

!

router bgp 1

bgp log-neighbor-changes

network 10.200.200.0

neighbor 10.10.10.2 remote-as 2

!

設定を検証する

例 1

次の例では、192.168.50.0/24がR102 BGPテーブルにある場合のBGPの状態を確認しています。

設定を検証する

最初に、192.168.50.0/24がR102 BGPテーブルに存在するかどうかを確認します。

R102#show ip bgp

BGP table version is 6, local router ID is 172.16.16.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal

Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path

*> 172.16.16.0/24   0.0.0.0                  0         32768 i

*> 172.31.130.0     0.0.0.0                  0         32768 i

*> 192.168.50.0     10.10.20.3               0             0 3 i

*> 10.200.200.0     10.10.10.1               0             0 1 i

192.168.50.0/24がR102 BGPテーブルに存在するため、R102は172.16.16.0/24をR101にアドバタイズできません。

R102#show ip bgp neighbors 10.10.10.1 advertised-routes

BGP table version is 6, local router ID is 172.16.16.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal

Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path

*> 172.31.130.0      0.0.0.0                  0         32768 i

*> 192.168.50.0     10.10.20.3               0             0 3 i

!--- Note 172.16.16.0/24 is not advertised to neighbor 10.10.10.1.

R102#show ip bgp 172.16.16.0

BGP routing table entry for 172.16.16.0/24, version 6

Paths: (1 available, best #1, table Default-IP-Routing-Table)

Advertised to non peer-group peers:

!--- This is not advertised to R101.

10.10.20.3

Local

0.0.0.0 from 0.0.0.0 (172.16.16.1)

Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best

次に、R102 上で条件付きアドバタイズメントのステータスを調べます。

R102#show ip bgp neighbors 10.10.10.1

BGP neighbor is 10.10.10.1,  remote AS 1, external link

BGP version 4, remote router ID 10.200.200.1

BGP state = Established, up for 02:27:07

Last read 00:00:07, hold time is 180, keepalive interval is 60 seconds

!--- Output suppressed.

For address family: IPv4 Unicast

BGP table version 6, neighbor version 6

Index 1, Offset 0, Mask 0x2

Condition-map NON-EXIST, Advertise-map ADVERTISE, status: Withdraw

1 accepted prefixes consume 36 bytes

Prefix advertised 3, suppressed 0, withdrawn 1

Number of NLRIs in the update sent: max 1, min 0

!--- Output suppressed.

出力には、条件付きアドバタイズメントが撤回され、ルートマップADVERTISE に一致するネットワークがピア10.10.10.1にアナウンスされないことが示されます。

ルートマップADVERTISEに一致するルートがR101にアナウンスされないことを確認するには、R101のBGPテーブルを確認します。

R101#show ip bgp 172.16.16.0

% Network not in table

例 2

この例では、ネットワーク 192.168.50.0/24 が R102 の BGP テーブルに存在しない場合の BGP 情報の内容を確認します。

192.168.50.0/24がR102 BGPテーブルに存在しない

まず、R103 上のループバック インターフェイス 0 をシャットダウンして、R103 が 192.168.50.0/24 を R102 にアナウンスしないようにします。

R103(config)#interface loopback 0

R103(config-if)#shutdown

R103(config-if)#

03:29:36: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down

次に、R102が192.168.50.0/24を学習していないこと、およびネットワークがR102 BGPテーブルに含まれていないことを確認します。

R102#show ip bgp

BGP table version is 8, local router ID is 172.16.16.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal

Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path

*> 172.16.16.0/24   0.0.0.0                  0         32768 i

*> 172.31.130.0     0.0.0.0                  0         32768 i

*> 10.200.200.0     10.10.10.1               0         0 1 i

!--- Note 192.168.50.0/24 is not present.

条件付きアドバタイズメントの開始にかかる時間を確認します。

R102#debug ip bgp updates

*Mar  1 02:39:18.059: BGP(0): 10.10.20.3 rcv UPDATE about 192.168.50.0/24

-- withdrawn

*Mar  1 02:39:18.059: BGP(0): no valid path for 192.168.50.0/24

*Mar  1 02:39:18.079: BGP(0): nettable_walker 192.168.50.0/24 no best path

*Mar  1 02:39:18.219: BGP(0): 10.10.10.1 computing updates, afi 0, neighbor

version 10, table version 11, starting at 0.0.0.0

*Mar  1 02:39:18.219: BGP(0): 10.10.10.1 send unreachable 192.168.50.0/24

*Mar  1 02:39:18.219: BGP(0): 10.10.10.1 send UPDATE 192.168.50.0/24

-- unreachable

*Mar  1 02:39:18.219: BGP(0): 10.10.10.1 1 updates enqueued (average=27, maximum=27)

*Mar  1 02:39:18.219: BGP(0): 10.10.10.1 update run completed, afi 0, ran for 0ms,

neighbor version 10, start version 11, throttled to 11

*Mar  1 02:40:04.747: BPG(0): Condition NON-EXIST changes to Advertise

*Mar  1 02:40:04.747: BGP(0): net 172.16.16.0/24 matches ADV MAP ADVERTISE:

bump version to 12

*Mar  1 02:40:05.187: BGP(0): nettable_walker 172.16.16.0/24 route sourced

locally

*Mar  1 02:40:05.187: BGP(0): 10.10.10.1 computing updates, afi 0, neighbor

version 11, table version 12, starting at 0.0.0.0

*Mar  1 02:40:05.187: BGP(0): 10.10.10.1 172.16.16.0/24 matches advertise map

ADVERTISE, state: Advertise

*Mar  1 02:40:05.187: BGP(0): 10.10.10.1 send UPDATE (format) 172.16.16.0/24,

next 10.10.10.2, metric 0, path

*Mar  1 02:40:05.187: BGP(0): 10.10.10.1 1 updates enqueued (average=52, maximum=52)

*Mar  1 02:40:05.187: BGP(0): 10.10.10.1 update run completed, afi 0, ran for 0ms,

neighbor version 11, start version 12, throttled to 12

注：デバッグ出力は、使用しているソフトウェアのバージョンによって少し異なる場合があります。

条件付きアドバタイズメント プロセスは、60 秒間隔で実行される BGP スキャナ プロセスによってトリガーされます。つまり、条件付きアドバタイズメントが有効になるまでには最大 60 秒かかります。追跡対象のルートが BGP テーブルから削除されたタイミングと BGP スキャナのインスタンスが実行されるタイミングによっては、条件付きアドバタイズメントがそれよりも短時間で有効になる場合もあります。ネイバー 10.10.10.1 に対する R102 上での条件付きアドバタイズメントの状態を確認するには、R102 で以下のコマンドを実行します。

R102#show ip bgp neighbors 10.10.10.1

BGP neighbor is 10.10.10.1,  remote AS 1, external link

BGP version 4, remote router ID 10.200.200.1

BGP state = Established, up for 02:45:27

Last read 00:00:27, hold time is 180, keepalive interval is 60 seconds

!--- Output suppressed.

For address family: IPv4 Unicast

BGP table version 12, neighbor version 12

Index 1, Offset 0, Mask 0x2

Condition-map NON-EXIST, Advertise-map ADVERTISE, status: Advertise

1 accepted prefixes consume 36 bytes

Prefix advertised 6, suppressed 0, withdrawn 4

Number of NLRIs in the update sent: max 1, min 0

!--- Output suppressed.

次に示すように、R101 BGPテーブルとルーティングテーブルには172.16.16.0/24があります。

注：この出力例では、BGPルータがピアに送信する通常のBGPアナウンス(ネットワーク172.16.16.0/24)に加えて、条件付きBGPアナウンス(ネットワーク172.31.130.0/16)が送信されます。

R101#show ip bgp

BGP table version is 18, local router ID is 10.200.200.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal

Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path

*> 172.16.16.0/24   10.10.10.2               0             0 2 i

*> 172.31.130.0     10.10.10.2               0             0 2 i

*> 10.200.200.0     0.0.0.0                  0         32768 i

R101#show ip route bgp

172.16.0.0/24 is subnetted, 1 subnets

B       172.16.16.0 [20/0] via 10.10.10.2, 00:09:32

B    172.31.130.0/16 [20/0] via 10.10.10.2, 02:48:46

例 3

この例では、BGPがAdvertise からWithdraw に変更される様子を確認するために、R102での192.168.50.0/24ネットワークの再インストールが含まれています。

BGPがAdvertiseからWithdrawに変わる仕組み

192.168.50.0/24を再インストールするには、  no shutdown  コマンドを実行してR103上のループバックインターフェイス0を「UP」にします。

R103(config)#interface loopback 0

R103(config-if)#no shutdown

R103(config-if)#

03:49:06: %LINK-3-UPDOWN: Interface Loopback0,

changed state to up

03:49:07: %LINEPROTO-5-UPDOWN: Line protocol on

Interface Loopback0, changed state to up

!--- R102 kicks in conditional advertisement the moment the

!--- conditional network is received again.

*Mar  1 02:51:42.227: BGP(0): 10.10.20.3 rcvd UPDATE w/ attr:

nexthop 10.10.20.3, origin i, metric 0, path 3

*Mar  1 02:51:42.227: BGP(0): 10.10.20.3 rcvd 192.168.50.0/24

*Mar  1 02:51:42.247: BGP(0): Revise route installing 192.168.50.0/24 ->

10.10.20.3 to main IP table

*Mar  1 02:51:42.379: BGP(0): 10.10.10.1 computing updates, afi 0,

neighbor version 12, table version 13, starting at 0.0.0.0

*Mar  1 02:51:42.379: BGP(0): 10.10.10.1 send UPDATE (format)

192.168.50.0/24, next 10.10.10.2, metric 0, path 3

*Mar  1 02:51:42.379: BGP(0): 10.10.10.1 1 updates enqueued

(average=47, maximum=47)

*Mar  1 02:51:42.379: BGP(0): 10.10.10.1 update run completed, afi 0,

ran for 0ms, neighbor version 12, start version 13, throttled to 13

*Mar  1 02:52:09.159: BPG(0): Condition NON-EXIST changes to Withdraw

*Mar  1 02:52:09.159: BGP(0): net 172.16.16.0/24 matches ADV MAP

ADVERTISE: bump version to 14

*Mar  1 02:52:09.499: BGP(0): nettable_walker 172.16.16.0/24 route

sourced locally

*Mar  1 02:52:11.559: BGP(0): 10.10.10.1 computing updates, afi 0,

neighbor version 13, table version 14, starting at 0.0.0.0

*Mar  1 02:52:11.559: BGP(0): 10.10.10.1 172.16.16.0/24 matches advertise

map ADVERTISE, state: Withdraw

*Mar  1 02:52:11.559: BGP(0): 10.10.10.1 send unreachable 172.16.16.0/24

*Mar  1 02:52:11.559: BGP(0): 10.10.10.1 send UPDATE 172.16.16.0/24 -- unreachable

*Mar  1 02:52:11.559: BGP(0): 10.10.10.1 1 updates enqueued (average=27, maximum=27)

*Mar  1 02:52:11.559: BGP(0): 10.10.10.1 update run completed, afi 0, ran for 0ms,

neighbor version 13, start version 14, throttled to 14

R102は172.16.16.0/24をR101にアドバタイズしなくなります。

R102#show ip bgp neighbors 10.10.10.1 advertised-routes

BGP table version is 14, local router ID is 172.16.16.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal

Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path

*> 172.31.130.0     0.0.0.0                  0         32768 i

*> 192.168.50.0     10.10.20.3               0             0 3 i

!--- Note 172.16.16.0/24 is not advertised.

R102#show ip bgp neighbors 10.10.10.1

BGP neighbor is 10.10.10.1,  remote AS 1, external link

BGP version 4, remote router ID 10.200.200.1

BGP state = Established, up for 03:01:32

Last read 00:00:31, hold time is 180, keepalive interval is 60 seconds

Neighbor capabilities:

!--- Output supressed.

For address family: IPv4 Unicast

BGP table version 14, neighbor version 14

Index 1, Offset 0, Mask 0x2

Condition-map NON-EXIST, Advertise-map ADVERTISE, status: Withdraw

1 accepted prefixes consume 36 bytes

Prefix advertised 7, suppressed 0, withdrawn 5

Number of NLRIs in the update sent: max 1, min 0

!--- Output supressed.

注：実際のシナリオでは、AS1とAS3はインターネットに接続されています（グローバルBGP）。したがって、ネットワーク192.168.50.0/24は、グローバルbgpメッシュを通じてAS3からAS1(R101)のBGPテーブルに伝播される可能性があります。その場合、（AS1 と AS2 との間で同意しているポリシーによっては）AS1 がプレフィックス 192.168.50.0 を R102 に伝播することもあります。R101がグローバルBGPメッシュから学習したAS3ルートをR102に伝搬した場合、追加のチェックがnon-exist mapに配置されていなければ、条件付きアドバタイズメントが失敗する可能性があります。

条件付きアドバタイズが失敗する理由を理解するために、次のシナリオを考えてみましょう。AS1はglobal bgp mesh (GC)から192.168.50.0/24を学習して、192.168.50.0/24をAS2(R102)にアナウンスします。R102 はその直接のピアからも（R102 から R103 へのリンクで）プレフィックス 192.168.50.0/24 を学習します。R102とR103の間の直接リンクに障害が発生すると、プレフィクス192.168.50.0/24がR102のBGPテーブルに存在しなくなり、条件付きアドバタイズメントがキックインしてプレフィクス172.16.16.0/24をR101にアナウンスします。ただし、（R101から学習した）プレフィクス192.168.50.0/24はR102 BGPテーブルに存在し続けるため、non-exist mapのプレフィクスはR102 BGPテーブルにまだ存在しているため、条件付きアドバタイズメントは中断します。条件付きアドバタイズメントを起動するために、プレフィックス192.168.50.0/24がAS3への直接接続(R102 ～ R103)のみから学習されるようにするには、直接接続から学習したプレフィックス192.168.50.0/24のAS_PATH（この場合はAS 3）と一致するnon-exist map(NON-EXIST MAP)の下に match as_pathステートメントを追加します。この例での正規表現は ^3 です。正規表現の詳細については、BGP での正規表現の使用方法を参照してください。プレフィックスと一致させるのではなく、as-path とだけ一致させることはできないことに注意してください。match as-path は、一致対象のプレフィックスの一致基準を補足することしかできません。つまり、特定の AS 番号からのプレフィックスが存在しなければ、プレフィックスをネイバーにアドバタイズすることはできません。

以下に、R102 での新しい設定を示します。追加部分は太字で示されています。

R101

hostname R102

!

interface Loopback0

ip address 172.16.16.1 255.255.255.0

!

interface Serial8/0

ip address 10.10.10.2 255.255.255.0

!

interface Serial9/0

ip address 10.10.20.2 255.255.255.0

!

router bgp 2

bgp log-neighbor-changes

network 172.16.16.0 mask 255.255.255.0

network 172.31.130.0

neighbor 10.10.10.1 remote-as 1

neighbor 10.10.10.1 advertise-map ADVERTISE non-exist-map NON-EXIST

neighbor 10.10.20.3 remote-as 3

!

ip route 172.31.130.0 255.255.0.0 Null0

!

ip as-path access-list 1 permit ^3

!

access-list 60 permit 172.16.16.0 0.0.0.255

access-list 65 permit 192.168.50.0 0.0.0.255

!

route-map NON-EXIST permit 10

match ip address 65

match as-path 1

!

route-map ADVERTISE permit 10

match ip address 60

!

関連情報

- BGP：FAQ

- ボーダー ゲートウェイ プロトコルのケーススタディの確認

- シスコのテクニカルサポートとダウンロード