例:BGP 階層の異なるレベルでのルーティング ポリシーの適用
この例は、シンプルなネットワークトポロジーで設定された BGP を紹介し、ルーティングポリシーが BGP 設定の異なるレベルで適用された時にどのような効果があるかを説明します。
要件
この例を設定する前に、デバイス初期化以外の特別な設定を行う必要はありません。
概要
BGPでは、以下のようなポリシーを適用できます。
BGPグローバル
import
およびexport
ステートメント-これらのステートメントを階[edit protocols bgp]
層レベルに含める(ルーティング・インスタンスの場合、これらのステートメントを階[edit routing-instances routing-instance-name protocols bgp]
層レベルに含める)。export
グループimport
およびステートメント-これらのステートメントを階[edit protocols bgp group group-name]
層レベルに含める(ルーティング・インスタンスの場合、これらのステートメントを階[edit routing-instances routing-instance-name protocols bgp group group-name]
層レベルに含める)。export
ピアimport
およびステートメント-これらのステートメントを階[edit protocols bgp group group-name neighbor address]
層レベルに含める(ルーティング・インスタンスの場合は、これらのステートメントを階[edit routing-instances routing-instance-name protocols bgp group group-name neighbor address]
層レベルに含める)。
ピアレベルのorステートexport
メントimport
は、グループのorステートexport
メントを上書きimport
します。グループレベルのorステートexport
メントimport
は、グローバルなBGPのorステートexport
メントを上書きimport
します。
send-192.168.0.1
この例では、という名のポリシーsend-direct
がグローバルなレベルで適用され、という名の別のポリシーがグループレベルで適用され、という名の 3 つ目のポリシーがネイバーレベルで適用send-192.168.20.1
されています。
user@host# show protocols bgp { local-address 172.16.1.1; export send-direct; group internal-peers { type internal; export send-192.168.0.1; neighbor 172.16.2.2 { export send-192.168.20.1; } neighbor 172.16.3.3; } group other-group { type internal; neighbor 172.16.4.4; } }
重要なポイントであり、しばしば誤解され問題につながる可能性がある点は、そのような設定では、最も明示的なポリシーのみが適用されることです。ネイバーレベルのポリシーは、グループレベルのポリシーよりも明示的で、そのグループレベルのポリシーは、グローバルポリシーよりも明示的です。
ネイバー 172.16.2.2 は、send-192.168.20.1 のポリシーにのみ適用されます。ネイバー 172.16.3.3 は何らかのより具体的なものに欠けており、send-192.168.0.1 ポリシーにのみ適用されます。一方、グループ他のグループのネイバー 172.16.4.4 は、グループまたはネイバーレベルのポリシーを持っていないので、send-ダイレクトポリシーを使用します。
ネイバー 172.16.2.2 に 3 つのポリシーすべての機能を実行させる必要がある場合、他の 3 つの機能を含めた新しいネイバーレベルのポリシーを書いて適用するか、既存の 3 つのポリシーすべてをチェーンとして、ネイバー 172.16.2.2 に適用できます。
トポロジー
図 1は、サンプルのネットワークを示しています。
CLIクイック構成は、図 1でのすべてのデバイスの設定を示しています。
セクション#configuration__policy-bgp-apply-levels-stは、デバイス R1 の手順を説明します。
設定
CLIクイック構成
この例をすばやく設定するには、次のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、[edit]
階層レベルのCLIにコマンドをコピー&ペーストしてください。
デバイスR1
set interfaces fe-1/2/0 unit 0 description to-R2 set interfaces fe-1/2/0 unit 0 family inet address 10.10.10.1/30 set interfaces lo0 unit 0 family inet address 172.16.1.1/32 set protocols bgp local-address 172.16.1.1 set protocols bgp export send-direct set protocols bgp group internal-peers type internal set protocols bgp group internal-peers export send-static-192.168.0 set protocols bgp group internal-peers neighbor 172.16.2.2 export send-static-192.168.20 set protocols bgp group internal-peers neighbor 172.16.3.3 set protocols bgp group other-group type internal set protocols bgp group other-group neighbor 172.16.4.4 set protocols ospf area 0.0.0.0 interface lo0.0 passive set protocols ospf area 0.0.0.0 interface fe-1/2/0.0 set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 then accept set policy-options policy-statement send-static-192.168.0 term 1 from protocol static set policy-options policy-statement send-static-192.168.0 term 1 from route-filter 192.168.0.0/24 orlonger set policy-options policy-statement send-static-192.168.0 term 1 then accept set policy-options policy-statement send-static-192.168.20 term 1 from protocol static set policy-options policy-statement send-static-192.168.20 term 1 from route-filter 192.168.20.0/24 orlonger set policy-options policy-statement send-static-192.168.20 term 1 then accept set routing-options static route 192.168.0.1/32 discard set routing-options static route 192.168.20.1/32 discard set routing-options router-id 172.16.1.1 set routing-options autonomous-system 17
デバイスR2
set interfaces fe-1/2/0 unit 0 description to-R1 set interfaces fe-1/2/0 unit 0 family inet address 10.10.10.2/30 set interfaces fe-1/2/1 unit 0 description to-R3 set interfaces fe-1/2/1 unit 0 family inet address 10.10.10.5/30 set interfaces lo0 unit 0 family inet address 172.16.2.2/32 set protocols bgp group internal-peers type internal set protocols bgp group internal-peers local-address 172.16.2.2 set protocols bgp group internal-peers neighbor 172.16.3.3 set protocols bgp group internal-peers neighbor 172.16.1.1 set protocols bgp group internal-peers neighbor 172.16.4.4 set protocols ospf area 0.0.0.0 interface lo0.0 passive set protocols ospf area 0.0.0.0 interface fe-1/2/0.0 set protocols ospf area 0.0.0.0 interface fe-1/2/1.0 set routing-options router-id 172.16.2.2 set routing-options autonomous-system 17
デバイスR3
set interfaces fe-1/2/1 unit 0 description to-R2 set interfaces fe-1/2/1 unit 0 family inet address 10.10.10.6/30 set interfaces fe-1/2/2 unit 0 description to-R4 set interfaces fe-1/2/2 unit 0 family inet address 10.10.10.9/30 set interfaces lo0 unit 0 family inet address 172.16.3.3/32 set protocols bgp group internal-peers type internal set protocols bgp group internal-peers local-address 172.16.3.3 set protocols bgp group internal-peers neighbor 172.16.2.2 set protocols bgp group internal-peers neighbor 172.16.1.1 set protocols bgp group internal-peers neighbor 172.16.4.4 set protocols ospf area 0.0.0.0 interface lo0.0 passive set protocols ospf area 0.0.0.0 interface fe-1/2/1.0 set protocols ospf area 0.0.0.0 interface fe-1/2/2.0 set routing-options router-id 172.16.3.3 set routing-options autonomous-system 17
デバイス R4
set interfaces fe-1/2/2 unit 0 description to-R3 set interfaces fe-1/2/2 unit 0 family inet address 10.10.10.10/30 set interfaces lo0 unit 0 family inet address 172.16.4.4/32 set protocols bgp group internal-peers type internal set protocols bgp group internal-peers local-address 172.16.4.4 set protocols bgp group internal-peers neighbor 172.16.2.2 set protocols bgp group internal-peers neighbor 172.16.1.1 set protocols bgp group internal-peers neighbor 172.16.3.3 set protocols ospf area 0.0.0.0 interface lo0.0 passive set protocols ospf area 0.0.0.0 interface fe-1/2/2.0 set routing-options router-id 172.16.4.4 set routing-options autonomous-system 17
手順
ステップバイステップでの手順
次の例では、設定階層のいくつかのレベルに移動する必要があります。CLI のナビゲーションについては、CLIユーザー・ガイド の コンフィギュレーション・モードでのCLIエディタの使用を参照してください。
IS-IS デフォルトのルート ポリシーを設定します。
デバイスインターフェイスを設定します。
[edit interfaces] user@R1# set fe-1/2/0 unit 0 description to-R2 user@R1# set fe-1/2/0 unit 0 family inet address 10.10.10.1/30 user@R1# set lo0 unit 0 family inet address 172.16.1.1/32
インターフェイス上で、OSPF または別の内部ゲートウェイ プロトコル(IGP)を有効にします。
[edit protocols OSPF area 0.0.0.0] user@R1# set interface lo0.0 passive user@R1# set interface fe-1/2/0.0
スタティックルートを設定します。
[edit routing-options] user@R1# set static route 192.168.0.1/32 discard user@R1# set static route 192.168.20.1/32 discard
ルーティング ポリシーを有効にします。
[edit protocols policy-options] user@R1# set policy-statement send-direct term 1 from protocol direct user@R1# set policy-statement send-direct term 1 then accept user@R1# set policy-statement send-static-192.168.0 term 1 from protocol static user@R1# set policy-statement send-static-192.168.0 term 1 from route-filter 192.168.0.0/24 orlonger user@R1# set policy-statement send-static-192.168.0 term 1 then accept user@R1# set policy-statement send-static-192.168.20 term 1 from protocol static user@R1# set policy-statement send-static-192.168.20 term 1 from route-filter 192.168.20.0/24 orlonger user@R1# set policy-statement send-static-192.168.20 term 1 then accept
BGP を設定し、エクスポート ポリシーを適用します。
[edit protocols bgp] user@R1# set local-address 172.16.1.1 user@R1# set protocols bgp export send-direct user@R1# set group internal-peers type internal user@R1# set group internal-peers export send-static-192.168.0 user@R1# set group internal-peers neighbor 172.16.2.2 export send-static-192.168.20 user@R1# set group internal-peers neighbor 172.16.3.3 user@R1# set group other-group type internal user@R1# set group other-group neighbor 172.16.4.4
ルーター ID と AS(自律システム)番号を設定します。
[edit routing-options] user@R1# set router-id 172.16.1.1 user@R1# set autonomous-system 17
デバイスの設定が完了したら、設定をコミットします。
[edit] user@R1# commit
結果
設定モードから、show interfaces
、show protocols
、show policy-options
、およびshow routing-options
のコマンドを発行して設定を確認します。出力結果に意図した設定内容が表示されない場合は、この例の手順を繰り返して設定を修正します。
user@R1# show interfaces fe-1/2/0 { unit 0 { description to-R2; family inet { address 10.10.10.1/30; } } } lo0 { unit 0 { family inet { address 172.16.1.1/32; } } }
user@R1# show protocols bgp { local-address 172.16.1.1; export send-direct; group internal-peers { type internal; export send-static-192.168.0; neighbor 172.16.2.2 { export send-static-192.168.20; } neighbor 172.16.3.3; } group other-group { type internal; neighbor 172.16.4.4; } } ospf { area 0.0.0.0 { interface lo0.0 { passive; } interface fe-1/2/0.0; } }
user@R1# show policy-options policy-statement send-direct { term 1 { from protocol direct; then accept; } } policy-statement send-static-192.168.0 { term 1 { from { protocol static; route-filter 192.168.0.0/24 orlonger; } then accept; } } policy-statement send-static-192.168.20 { term 1 { from { protocol static; route-filter 192.168.20.0/24 orlonger; } then accept; } }
user@R1# show routing-options static { route 192.168.0.1/32 discard; route 192.168.20.1/32 discard; } router-id 172.16.1.1; autonomous-system 17;
検証
設定が正常に機能していることを確認します。
BGP ルートラーニングの検証
目的
ルーティング テーブルを確認して、BGP エクスポート ポリシーが期待通りに機能していることを確認してください。
アクション
user@R1> show route protocol direct inet.0: 11 destinations, 11 routes (11 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 172.16.1.1/32 *[Direct/0] 1d 22:19:47 > via lo0.0 10.10.10.0/30 *[Direct/0] 1d 22:19:47 > via fe-1/2/0.0
user@R1> show route protocol static inet.0: 11 destinations, 11 routes (11 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 192.168.0.1/32 *[Static/5] 02:20:03 Discard 192.168.20.1/32 *[Static/5] 02:20:03 Discard
user@R2> show route protocol bgp inet.0: 11 destinations, 11 routes (11 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 192.168.20.1/32 *[BGP/170] 02:02:40, localpref 100, from 172.16.1.1 AS path: I, validation-state: unverified > to 10.10.10.1 via fe-1/2/0.0
user@R3> show route protocol bgp inet.0: 11 destinations, 11 routes (11 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 192.168.0.1/32 *[BGP/170] 02:02:51, localpref 100, from 172.16.1.1 AS path: I, validation-state: unverified > to 10.10.10.5 via fe-1/2/1.0
user@R4> show route protocol bgp inet.0: 9 destinations, 11 routes (9 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 172.16.1.1/32 [BGP/170] 1d 20:38:54, localpref 100, from 172.16.1.1 AS path: I, validation-state: unverified > to 10.10.10.9 via fe-1/2/2.0 10.10.10.0/30 [BGP/170] 1d 20:38:54, localpref 100, from 172.16.1.1 AS path: I, validation-state: unverified > to 10.10.10.9 via fe-1/2/2.0
意味
デバイス R1 は、コマshow route protocol direct
ンドに 2 つのダイレクト ルートを表示します。172.16.1.1/32 および 10.10.10.0/30 です。show route protocol static
コマンドは、2 つのスタティック ルートを表示します。192.168.0.1/32 および 192.168.20.1/32 です。
デバイス R2 で、show route protocol bgp
コマンドが、デバイス R2 が BGP で学習した唯一のルートが 192.168.20.1/32 ルートであることを示しています。
デバイス R3 で、show route protocol bgp
コマンドが、デバイス R3 が BGP で学習した唯一のルートが 192.168.0.1/32 ルートであることを示しています。
デバイス R4 で、show route protocol bgp
コマンドが、デバイス R4 が BGP で学習した唯一のルートが 172.16.1.1/32 および 10.10.10.0/30 ルートであることを示しています。
BGP ルート受信の検証
目的
デバイス R1 から受信した BGP ルートを確認することで、BGP のエクスポート ポリシーが期待通りに機能していることを確認してください。
アクション
user@R2> show route receive-protocol bgp 172.16.1.1 inet.0: 11 destinations, 11 routes (11 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 192.168.20.1/32 172.16.1.1 100 I
user@R3> show route receive-protocol bgp 172.16.1.1 inet.0: 11 destinations, 11 routes (11 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 192.168.0.1/32 172.16.1.1 100 I
user@R4> show route receive-protocol bgp 172.16.1.1 inet.0: 9 destinations, 11 routes (9 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path 172.16.1.1/32 172.16.1.1 100 I 10.10.10.0/30 172.16.1.1 100 I
意味
デバイス R2 で、route receive-protocol bgp 172.16.1.1
コマンドは、デバイス R2 がデバイス R1 から 1 つの BGP ルート192.168.20.1/32 のみを受け取ったことを示しています。
デバイス R3 で、コマンドroute receive-protocol bgp 172.16.1.1
は、デバイス R3 が デバイス R1 から 1 つの BGP ルート 192.168.0.1/32 のみを受け取ったことを示しています。
デバイスR4で、コマンドroute receive-protocol bgp 172.16.1.1
は、デバイス R4 がデバイス R1 から 2 つの BGP ルート 172.16.1.1/32 および 10.10.10.0/30 を受け取ったことを示しています。
要約すると、BGP の異なる CLI 階層に複数のポリシーが適用される場合、最も具体的なアプリケーションのみが評価され、より非具体的な他のアプリケーションは除外されます。このポイントは理にかなっているように見えますが、ルーターの設定時には忘れられがちです。ネイバーレベルのポリシーがグローバルポリシーまたはグループレベルのポリシーと組み合わされていると勘違いして、ポリシーの動作が予想と異なるのに気づくのです。