はじめに
このドキュメントでは、ボーダー ゲートウェイ プロトコル(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 で以下のタスクに対応できます。
Cisco IOS 12.2T以降のバージョンでは、exist-mapキーワードを使用して次のタスクにも対応できます。
条件付きアドバタイズメント機能の設定
このドキュメントでは、次のコンフィギュレーションを使用します。
注:次の例では、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テーブルに存在しない
手順は次のとおりです。
1. 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
2. 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.
3. 条件付きアドバタイズメントの開始にかかる時間を確認します。
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がアドバタイズから撤回に変わる仕組み
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にアナウンスすると予想されます。ただし、プレフィックス192.168.50.0/24は(R101から学習した)R102 BGPテーブルに存在し続けるため、non-exist map のプレフィックスはR102 BGPテーブルにまだ存在しているため、条件付きアドバタイズメントは中断されます。
条件付きアドバタイズメントがキックインできるように、プレフィックス192.168.50.0/24がAS3への直接接続(R102からR103)のみから学習されるようにするには、直接接続から学習したプレフィックス192.168.50.0/24のAS_PATH(この場合はAS 3)と一致するmatch as_pathステートメントをnon-exist mapの下に追加します。 この例での正規表現は ^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
! |
関連情報