BGP 追加パスの設定

この章では、以前のパスを新しいパスで暗黙的に置き換えずに、同じプレフィックスの同じピアリング セッションを介したマルチパスのアドバタイズメントを可能にする BGP 追加パスの設定方法について説明します。この動作により、パス ダイバーシティが向上し、Multi-Exit Discriminator(MED)の変動が減少します。

この章は、次の項で構成されています。

BGP 追加パスについて

このセクションは、次のトピックで構成されています。

概要

BGP ルータおよびルート リフレクタ(RR)は、セッションにおけるベスト パスにのみ伝播します。プレフィックス アドバタイズメントで、以前アナウンスされたプレフィックスを置き換えます(この動作は暗黙の取り消しとして知られています)。暗黙の取り消しはスケーリングには適していますが、パス ダイバーシティに影響があります。

パスの隠蔽は BGP マルチパスの効率的な使用や、スムーズな定期メンテナンスを妨げ、multi-exit discriminator(MED)の変動や最適でないホットポテト ルーティングが発生する可能性があります。ネクスト ホップが失敗した場合、ネットワークは BGP コントロール プレーンのコンバージェンスによりトラフィックが復旧するのを待たなければならないので、パスの隠蔽は迅速かつローカルの復旧の妨げになります。BGP 追加パス機能では、パス ダイバーシティを提供します。est External または Best Internal 機能は、限られた場合にパス ダイバーシティを提供します。

BGP 追加パス機能は、同じプレフィックスのマルチパスに対して、新しいパスで以前のパスを暗黙的に置き換えることなく、アドバタイズする手段を提供します。パスを隠蔽しないでパス ダイバーシティが実現されます。

パスの隠蔽の例

ここでは、パスの隠蔽が発生する過程の詳細を説明します。次の図では、BR1 および BR4 から RR1 にアドバタイズされるプレフィックス p を持つパス p1 および p2 があります。RR1 は 2 つのうちベスト パスを選択し、PE に p1 のみアドバタイズします。

図 1. RR で追加パスを非表示にする

また追加のパスを隠している RR の図では、BR2 から(パス x2 がある)BR3 にローカル プリファレンス 100 でアドバタイズされる、プレフィックス x を持つパス x1 が表示されています。BR3 にはパス x2 もありますが、ルーティング ポリシーにより、x2 ではなく RR の x1(表示されていません)をアドバタイズし、x2 のアドバタイズは抑制されます。ユーザーは BR3 で最良外部のアドバタイズメントを有効にして RR に x2 をアドバタイズできますが、この場合も RR はベスト パスのみをアドバタイズします。

最適ではないのホット ポテト ルーティングの例

内部転送コストを最小化するために、中継する ISP は(IGP コストに基づいて)最も近い出口ポイントにパケットを転送しようとします。この動作は、ホット ポテト ルーティングと呼ばれます。次の図の分散 RR クラスタ モデルでは、ロサンゼルスから発信されたトラフィックがメキシコに進む必要があることを想定しています。すべてのリンクで、IGP コストは同じです。メキシコへの出口ポイントは 2 つあり、1 つがオースティンに向かい、もう 1 つがアトランタに向かう場合、ロサンゼルスからは、アトランタよりオースティンに向かう方が IGP コストが低いため、オースティンに向けてトラフィックを送信します。RR3 がある(および RR1、RR2、RR4 および RR5 がない)場所に中央 RR が存在する集中型 RR モデルでは、RR3 から見てメキシコへの最も近い出口ポイントはアトランタとなります。ロサンゼルスからアトランタの BR に向けてトラフィックを送信し、それによって最適ではないホット ポテト ルーティングが生じることは望ましくありません。

図 2. 分散 RR クラスタ

BGP 追加パスの利点

BGP ルータおよびルート リフレクタ(RR)は、セッションにおけるベスト パスにのみ伝播します。プレフィックス アドバタイズメントで、以前アナウンスされたプレフィックスを置き換えます(この動作は暗黙の取り消しとして知られています)。

この動作は、スケーリングには適していますが、パス ダイバーシティを妨げる可能性があります(これによって脆弱になるまたは完全に無くなるおそれがあります)。同様にこの動作は、BGP マルチパスの効率的な使用や、スムーズな定期メンテナンスを妨げ、MED の変動や最適でないホットポテト ルーティングが発生する可能性があります。ネクスト ホップが失敗した場合も、ネットワークは BGP コントロール プレーンのコンバージェンスによりトラフィックが復旧するのを待たなければならないので、迅速かつローカルの復旧の妨げになります。

BGP 追加パス機能は、暗黙的に以前のパスに代わる新しいパスなしで、同じプレフィックスのマルチパスをアドバタイズする BGP の拡張機能です。これにより、パス ダイバーシティが向上し、MED の変動が減少します。

BGP 追加パスの機能

BGP 追加パス機能は、NLRI で各パスにパス ID を追加することによって実現します。パス ID は VPN のルート識別子(RD)のようなものです。ただし、パス ID はすべてのアドレス ファミリに適用できます。パス ID はピアリング セッション内で一意で、各ネットワークに生成されます。ルート アナウンスが暗黙的に以前のパスを取り消すことを防ぐために、パス ID が使用されます。追加パス機能は、ベスト パスに加えその他のパスのアドバタイズメントが可能です。追加パスは、暗黙的に以前のパスから新しいパスに代わることなく、同じプレフィックスのマルチパスをアドバタイズする機能を備えています。

BGP 追加パス機能を使用する場合は、次の 3 つの一般的な手順を実行する必要があります。

  1. デバイスが追加パスを送信、受信、または送受信するかどうかを指定します。これらはアドレス ファミリ レベルまたはネイバー レベルで行われます。セッションの確立中に、2 つの BGP ネイバーが追加パス機能(送信または受信のどちらか一方、あるいは両方を実行できるか)についてネゴシエートします。

  2. 選択基準を指定して、アドバタイズメントする候補パスのセット選択します。

  3. 示された候補パスから追加パスのセットをネイバーに対してアドバタイズします。

追加パスを送受信するには、追加パス機能をネゴシエートする必要があります。ネゴシエートしない場合、選択基準によりベストパス以上のパスが指定され、ネイバーが指定されたパスをアドバタイズするように設定されていても、ネゴシエートできないために選択パスは利用されず、ベストパスのみ送信されます。

追加パスの送受信を BGP に設定すると、デバイスのピアに対して追加パス機能のネゴシエーションが開始されます。この機能についてネゴシエートしたネイバーは、(他のアップデート グループ ポリシーが許可する場合)アップデート グループに追加され、この機能についてネゴシエートされていないピアとは別のアップデート グループに分類されます。したがって、追加パス機能によってネイバーのアップデート グループ メンバーシップが再計算されます。

追加パスの選択

受信機能がイネーブルの場合、追加パスとしてすべての BGP パスをアドバタイズする set path-selection all advertise コマンドを設定しない限り、最適パスのみピアにアドバタイズされます。

選択したパスの一部をアドバタイズ

パスのセットを選択する際に、別のパスのセットをアドバタイズしたい場合は注意してください。アドバタイズするパスのセットが、選択されたパスのサブセットではない場合、意図したパスがアドバタイズされません。

注意事項と制約事項

BGP の追加パスの設定には次のガイドラインと制約事項があります。

  • BGP 追加パスはダイナミックな機能としてはサポートされていません。これは OPEN に含まれますが、CAPABILITY メッセージには含まれません。設定は次のセッション確立時に有効となります。確立されたセッションが中断されることはありません。

BGP 追加パスの設定

このセクションは、次のトピックで構成されています。

アドレス ファミリごとの追加パスの設定

デバイスがアドレス ファミリ内のすべてのネイバーとの間で追加パスを送受信をできるかどうか指定するには、次の手順を実行します。

始める前に

BGP 機能が有効になっていることを確認します

手順

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

コンフィギュレーション モードに入ります。

ステップ 2

router bgp as-number

例:

switch(config)# router bgp 65000
switch(config-router)#

BGP を有効にして、ローカル BGP スピーカに自律システム番号を割り当てます。

ステップ 3

address-family ipv4 unicast

例:

switch(config-router)# address family ipv4 unicast

アドレス ファミリ設定モードを開始します。

ステップ 4

(任意) additional-paths receive

例:

switch(config-router-af)# additional-paths receive
(任意)

使用可能なピアから受信するプレフィックスの BGP 追加パスをイネーブルにします。

(注)  

 

この機能は、ネイバーで additional-paths receive disable コマンドによって明示的に無効にされない限り、指定されたアドレス ファミリのすべてのネイバーに適用され、そしてアドレス ファミリの設定が上書きされます。

ステップ 5

(任意) additional-paths send

例:

switch(config-router-af)# additional-paths send
(任意)

使用可能なピアに送信するプレフィックスの BGP 追加パスをイネーブルにします。

(注)  

 

この機能は、ネイバーで additional-paths send disable コマンドによって明示的に無効にされない限り、指定されたアドレス ファミリのすべてのネイバーに適用され、そしてアドレス ファミリの設定が上書きされます。

ステップ 6

(任意) additional-paths selection route-map

例:

switch(config-router-stmp)# exit
switch(config-router)#
(任意)

プレフィックスの追加パス選択機能を設定します。

ステップ 7

(任意) end

例:

switch(config-router-af)# end
(任意)

特権 EXEC モードに戻ります。

ネイバーごとの追加パスの設定

特定のネイバーが追加のパスを送受信できるかどうかを設定するには、次の手順を実行します。

始める前に

BGP 機能を有効にしていることを確認します(BGP 機能のイネーブル化のセクションを参照してください)。

手順

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

コンフィギュレーション モードに入ります。

ステップ 2

router bgp as-number

例:

switch(config)# router bgp 65000
switch(config-router)#

BGP を有効にして、ローカル BGP スピーカに自律システム番号を割り当てます。

ステップ 3

neighbor { ipv4-address | ipv4-prefix/length } [ remote-as { as-num } [. as-num ]]

BGP ネイバー(ルータ、VRF)を設定し、ネイバー コンフィギュレーション モードを開始します。

ステップ 4

address-family ipv4 unicast

例:

switch(config-router)# address family ipv4 unicast

アドレス ファミリ設定モードを開始します。

ステップ 5

(任意) capability additional-paths receive [disable]

例:

switch(config-router-af)# capability additional-paths receive
(任意)

指定されたネイバーの追加パス受信機能を設定します。

(注)  

 

このコマンドは、アドレス ファミリのレベルで設定されたすべての送受信機能を上書きします。

ステップ 6

(任意) capability additional-paths send [disable]

例:

switch(config-router-af)# capability additional-paths send
(任意)

指定されたネイバーの追加パス送信機能を設定します。

(注)  

 

このコマンドは、アドレス ファミリのレベルで設定されたすべての送受信機能を上書きします。

ステップ 7

(任意) end

例:

switch(config-router-af)# end
(任意)

特権 EXEC モードに戻ります。

ピア ポリシー テンプレートを使用した追加パスの設定

この設定作業では、追加パスを送受信する機能および選択基準をアドレス ファミリに設定してから、テンプレートを設定します。

始める前に

BGP 機能を有効にしていることを確認します(BGP 機能の有効化のセクションを参照してください)。

手順

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

コンフィギュレーション モードに入ります。

ステップ 2

router bgp as-number

例:

switch(config)# router bgp 65000
switch(config-router)#

BGP を有効にして、ローカル BGP スピーカに自律システム番号を割り当てます。

ステップ 3

template peer-policy template-name

例:

switch(config-router)# template peer-policy rr-client-ptl #

ポリシー テンプレート コンフィギュレーション モードを開始し、ピア ポリシー テンプレートを作成します。

ステップ 4

(任意) capability additional-paths receive [disable]

例:

switch(config-router-af)# capability additional-paths receive
(任意)

指定されたネイバーの追加パス受信機能を設定します。

(注)  

 

このコマンドは、アドレス ファミリのレベルで設定されたすべての送受信機能を上書きします。

ステップ 5

(任意) capability additional-paths send [disable]

例:

switch(config-router-af)# capability additional-paths send
(任意)

指定されたネイバーの追加パス送信機能を設定します。

(注)  

 

このコマンドは、アドレス ファミリのレベルで設定されたすべての送受信機能を上書きします。

ステップ 6

exit

例:

switch(config-router-ptmp)# exit

ポリシー テンプレート コンフィギュレーション モードを終了し、ルータ コンフィギュレーション モードに戻ります。

ステップ 7

neighbor { ipv4-address | ipv4-prefix/length } [ remote-as { as-num } [. as-num ]]

BGP ネイバー(ルータ、VRF)を設定し、ネイバー コンフィギュレーション モードを開始します。

ステップ 8

(任意) address-family ipv4 unicast

例:

switch(config-router)# address family ipv4 unicast
(任意)

アドレス ファミリ設定モードを開始します。

ステップ 9

inherit peer-policy template-name sequence-number

例:

switch(config-router-neighbor-af)# inherit peer-policy rr-client-ptl 10

ネイバーが設定を継承できるように、ピア ポリシー テンプレートをこのネイバーに送信します。

ステップ 10

(任意) end

例:

switch(config-router-af)# end
(任意)

特権 EXEC モードに戻ります。

追加パスのフィルタリングおよび設定操作

必要に応じて、アドバタイズされる候補である追加パスのプレフィックスを照合することで、アドバタイズされるパスをフィルタ処理するためにルート マップを使用できます(これらのプレフィックスは、additional-paths selection コマンドを使用して設定します)。

また、必要に応じて、ルート マップを通過したこれらのパスに対して実行するアクションを設定することもできます。このタスクでは set metric コマンドを使用していますが、このタスクには記載されていない他の set コマンドも使用できます。

ネイバーがネイバーから同じルートを受信している場合は、 all でマークされたパス(一意のネクスト ホップを持つすべてのパス)のメトリックを設定します。ネイバー 2001:DB8::1037 が別のネイバーから同じルートを受信しているとします。ローカル デバイスから受信されたルートはメトリックが 565 で、メトリックが 700 の別のデバイスからのルートが存在する可能性があります。メトリックが 565 のルートは、メトリックが 700 のルートよりも優先されます。

手順

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

コンフィギュレーション モードに入ります。

ステップ 2

route-map map-name [ deny | permit ] [ sequence-number ]

例:

switch(config)# route-map add_path4 permit 10

あるルーティング プロトコルから別のルーティング プロトコルにルートを再配布するルート マップと条件を定義します。

ステップ 3

set path-selection all advertise

例:

switch(config-route-map)# set path-selection all advertise

受信機能がイネーブルの場合、ピアに追加パスとしてすべての BGP パスをアドバタイズします。

ステップ 4

set metric metric-value

例:

switch(config-route-map)# set metric 500

一致基準を満たす追加パスのメトリックを設定します。

  • 他の設定コマンドを使用して、ルート マップを通過したパスに対してアクションを実行することもできます。

ステップ 5

(任意) end

例:

switch(config-router-af)# end
(任意)

特権 EXEC モードに戻ります。

BGP 追加パスの設定例

このセクションは、次のトピックで構成されています。

BGP 追加パスの送受信機能

R1

この例では、R1 のアドレスは 2001:db8::1045 です。ネイバー R2 のアドレスは 2001:db8::1037 です。R2 から R1 に additional-paths を含む更新が送信されます(すべてのパスがアドバタイズされます)。R2 が追加パスの送信のみ可能で追加パスを受信しないため、更新はアドバタイズされる標準の BGP ベストパスのみ R1 から R2 に送信されます。

route-map add_path4 permit 10
set metric 500
set path-selection all advertise
!!
router bgp 1
address-family ipv6 unicast
additional-paths send
additional-paths receive
additional-paths selection route-map add_path4
neighbor 2001:db8::1037
address-family ipv6 unicast
capability additional-paths send
capability additional-paths receive

R2

route-map add_path4 permit 10
set metric 500
set path-selection all advertise
!!
router bgp 2
address-family ipv6 unicast
additional-paths selection route-map add_path4
neighbor 2001:db8::1045
address-family ipv6 unicast
capability additional-paths send

ピア ポリシー テンプレートを使用する BGP 追加パス

次の例は、IP アドレス 2001:db8::1037 のネイバーが、rr-client-pt1 という名前のテンプレートによって有効になった追加パスの送受信機能を持っていることを示しています。

router bgp 65000
address-family ipv6 unicast
additional-paths send
additional-paths receive
additional-paths selection route-map add_path4
neighbor 2001:db8::1037
address-family ipv6 unicast
inherit peer-policy rr-client-pt1 10
template peer-policy rr-client-pt1
capability additional-paths send
capability additional-paths receive

BGP 追加パスの設定の確認

BGP 追加パスの設定に関する情報を表示するには、次のコマンドを使用します。

コマンド

目的

show ip bgp [ip-address]

BGP テーブル内のエントリを表示します。

show ip bgp neighbors [ip-address [ advertise-routes ]]

設定されたネイバーおよび各ネイバーに固有の他の情報を表示します。