例:無効なルートをアドバタイズするBGPの設定
デフォルトでは、BGP はアクティブなルートのみを再アドバタイズします。Junos OSがアクティブなルートとして選択しなかった場合でも、BGPによって学習された最良のルートをBGPへとルーティング・テーブルにエクスポートさせるには、次のステートadvertise-inactive
メントを含めます:
advertise-inactive;
Junos OSにおいて、BGPは、インストール済みまたはアクティブなBGPルートをアドバタイズします。これは、BGPパス選択ルールに基づいて最適なルートとして選択されたルートです。advertise-inactive
ステートメントでは、非アクティブなBGPルートを他のピアにアドバタイズすることができます。
ルーティング テーブルに 2 つの BGP ルートがあり、一方がアクティブでもう一方が非アクティブの場合、 advertise-inactive
ステートメントは非アクティブな BGP プレフィックスをアドバタイズしません。このステートメントは、別のアクティブなBGPルートが存在する場合に、非アクティブなBGPルートをアドバタイズしません。ただし、アクティブなルートがスタティックルートの場合、 advertise-inactive
ステートメントは非アクティブなBGPルートをアドバタイズします。
ルーターがルート リフレクタとして設定されている場合、 advertise-inactive
ステートメントは VRF から非アクティブなルートをアドバタイズするのに役立ちません。
Junos OSは、広告されたルートの状態にマッチするBGPエクスポートポリシーの設定もサポートしています。以下のように、アクティブまたは非アクティブなルートのいずれかを次のようにマッチすることができます。
policy-options { policy-statement name{ from state (active|inactive); } }
この修飾子は、エクスポートポリシーのコンテキストで使用される場合にのみマッチします。非アクティブなルートを広告できるプロトコル(BGP など)によってルートがアドバタイズされる場合、 state inactive
は advertise-inactive
(または advertise-external
)ステートメントの結果としてアドバタイズされたルートに一致します。
例えば、以下の設定をBGPエクスポートポリシーとして使用して、ユーザー定義コミュニティとの advertise-inactive
設定によりアドバタイズされたルートをマークすることができます。そのコミュニティーは、受信ルーターで使用し、転送テーブルからそのルートをフィルターして除外することができます。そういったメカニズムを使うことで、送信者によって転送用に使用されないアドバタイズパスが転送ループにつながるのではないかという懸念に対応できます。
user@host# show policy-options policy-statement mark-inactive { term inactive { from state inactive; then { community set comm-inactive; } } term default { from protocol bgp; then accept; } then reject; } community comm-inactive members 65536:65284;
要件
この例を設定する前に、デバイス初期化以外の特別な設定を行う必要はありません。
概要
この例では、デバイスR2には、デバイスR1とデバイスR3の2つの外部BGP(EBGP)ピアがあります。
デバイスR1には、172.16.5/24への静的ルートがあります。同様に、デバイスR2にも172.16.5/24へのスタティックルートがあります。デバイスR1は、BGPを通じて、その静的ルートに関する情報をデバイスR2に送信します。デバイスR2は、自身の静的ルートとデバイスR1から受信したBGPで学習したルートの2つのソースからの172.16.5/24に関する情報を持つようになりました。スタティックルートはBGPで学習したルートよりも優先されるため、デバイスR2ではBGPルートは非アクティブになります。通常、デバイスR2はBGPで学習した情報をデバイスR3に送信しますが、BGPルートが非アクティブであるため、デバイスR2はこれを行いません。そのため、デバイスR2で advertise-inactive
コマンドを有効にしない限り、デバイスR3には172.16.5/24に関する情報がありません。この場合、デバイスR2はBGPで学習した内容をデバイスR3に送信します。
トポロジー
図 1は、サンプルのネットワークを示しています。
CLIクイック構成は、図 1でのすべてのデバイスの設定を示しています。
セクション#configuration163__policy-advertise-inactive-stは、デバイスR2の手順を説明します。
設定
CLIクイック構成
この例をすばやく設定するには、次のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、[edit]
階層レベルのCLIにコマンドをコピー&ペーストしてください。
デバイスR1
set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.1/30 set interfaces lo0 unit 0 family inet address 192.168.0.1/32 set protocols bgp group to_R2 type external set protocols bgp group to_R2 export send-static set protocols bgp group to_R2 neighbor 10.0.0.2 peer-as 200 set policy-options policy-statement send-static term 1 from protocol static set policy-options policy-statement send-static term 1 then accept set routing-options static route 172.16.5.0/24 discard set routing-options static route 172.16.5.0/24 install set routing-options autonomous-system 100
デバイスR2
set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.2/30 set interfaces fe-1/2/1 unit 0 family inet address 10.0.0.5/30 set interfaces lo0 unit 0 family inet address 192.168.0.2/32 set protocols bgp group to_R1 type external set protocols bgp group to_R1 neighbor 10.0.0.1 peer-as 100 set protocols bgp group to_R3 type external set protocols bgp group to_R3 advertise-inactive set protocols bgp group to_R3 neighbor 10.0.0.6 peer-as 300 set routing-options static route 172.16.5.0/24 discard set routing-options static route 172.16.5.0/24 install set routing-options autonomous-system 200
デバイスR3
set interfaces fe-1/2/1 unit 0 family inet address 10.0.0.6/30 set interfaces fe-1/2/0 unit 9 family inet address 10.0.0.9/30 set interfaces lo0 unit 0 family inet address 192.168.0.3/32 set protocols bgp group ext type external set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 10.0.0.5 set routing-options autonomous-system 300
手順
ステップバイステップでの手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、Junos OS CLIユーザーガイドの 設定モードでCLIエディターを使用する を参照してください。
デバイスR2 を設定するには:
デバイスインターフェイスを設定します。
[edit interfaces] user@R2# set fe-1/2/0 unit 0 family inet address 10.0.0.2/30 user@R2# set fe-1/2/1 unit 0 family inet address 10.0.0.5/30 user@R2# set lo0 unit 0 family inet address 192.168.0.2/32
デバイスR1へのEBGP接続を設定します。
[edit protocols bgp group to_R1] user@R2# set type external user@R2# set neighbor 10.0.0.1 peer-as 100
デバイスR3へのEBGP接続を設定します。
[edit protocols bgp group to_R3] user@R2# set type external user@R2# set neighbor 10.0.0.6 peer-as 300
デバイスR3とのEBGPグループピアリングセッションに
advertise-inactive
ステートメントを追加します。[edit protocols bgp group to_R3] user@R2# set advertise-inactive
172.16.5.0/24ネットワークへの静的ルートを構成します。
[edit routing-options static] user@R2# set route 172.16.5.0/24 discard user@R2# set route 172.16.5.0/24 install
自律システム(AS)番号を設定します。
[edit routing-options] user@R2# set autonomous-system 200
結果
設定モードから、show interfaces
、show protocols
、show policy-options
、およびshow routing-options
のコマンドを入力して設定を確認します。出力結果に意図した設定内容が表示されない場合は、この例の手順を繰り返して設定を修正します。
user@R2# show interfaces fe-1/2/0 { unit 0 { family inet { address 10.0.0.2/30; } } } fe-1/2/1 { unit 0 { family inet { address 10.0.0.5/30; } } } lo0 { unit 0 { family inet { address 192.168.0.2/32; } } }
user@R2# show protocols bgp { group to_R1 { type external; neighbor 10.0.0.1 { peer-as 100; } } group to_R3 { type external; advertise-inactive; neighbor 10.0.0.6 { peer-as 300; } } }
user@R2# show routing-options static { route 172.16.5.0/24 { discard; install; } } autonomous-system 200;
デバイスの設定が完了したら、設定モードから commit
を入力します。
検証
設定が正常に機能していることを確認します。
BGPアクティブパスの検証
目的
デバイスR2では、172.16.5.0/24プレフィックスがルーティングテーブルに存在することを確認します。
アクション
user@R2> show route 172.16.5 inet.0: 7 destinations, 8 routes (7 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 172.16.5.0/24 *[Static/5] 21:24:38 Discard [BGP/170] 21:21:41, localpref 100 AS path: 100 I, validation-state: unverified > to 10.0.0.1 via fe-1/2/0.0
意味
デバイスR2は、デバイスR1とそれ自身の静的に設定されたルートの両方から172.16.5.0/24ルートを受信します。静的ルートは、アスタリスク(*)によって指定されたように、アクティブなパスです。静的ルート パスは、BGP プリファレンス(170)と比較して、ルート優先度が最も低く(5)、設定されています。したがって、スタティック ルートはアクティブになります。
外部ルートアドバタイズメントの検証
目的
デバイスR2では、172.16.5.0/24ルートがデバイスR3に対してアドバタイズされていることを確認します。
アクション
user@R2> show route advertising-protocol bgp 10.0.0.6 inet.0: 6 destinations, 7 routes (6 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path 172.16.5.0/24 Self 100 I
意味
デバイスR2は、デバイスR3に対して172.16.5.0/24ルートをアドバタイズしています
デバイスR3でのルートの検証
目的
172.16.6.0/24プレフィックスがデバイスR3のルーティングテーブルに存在することを確認します。
アクション
user@R3> show route 172.16.5.0/24 inet.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 172.16.5.0/24 *[BGP/170] 00:01:19, localpref 100 AS path: 200 100 I, validation-state: unverified > to 10.0.0.5 via fe-1/2/1.0
意味
デバイスR3には、172.16.5.0/24のBGP学習ルートがあります。
アドバタイズ非アクティブステートメントでの実験
目的
デバイスR2のBGP設定から advertise-inactive
ステートメントを削除するとどうなるかをご覧ください。
アクション
デバイスR2で、
advertise-inactive
ステートメントを無効にします。[edit protocols bgp group to_R3] user@R2# deactivate advertise-inactive user@R2# commit
デバイスR2では、172.16.5.0/24ルートがデバイスR3に対してアドバタイズされているかどうかを確認します。
user@R2> show route advertising-protocol bgp 10.0.0.6
予想通り、ルートはもうアドバタイズされなくなります。
デバイスR3で、ルーティングテーブルに172.16.5/24ルートが存在していることを確認します。
user@R3> show route 172.16.5/24
意味
デバイスR1はデバイスR2にルート172.16.5/24をアドバタイズしますが、デバイスR2にはこのプレフィックス用に手動で設定された静的ルートがあります。静的ルートは BGP ルートよりも優先されるため、デバイス R2 は BGP ルートを非アクティブなルートとしてインストールします。BGP ルートがアクティブではないため、デバイス R2 がデバイス R3 に BGP ルートを再アドバタイズすることはありません。これは、Junos OS のデフォルトの動作です。デバイスR2のBGP設定に advertise-inactive
ステートメントを追加すると、デバイスR2は非アクティブなルートを再アドバタイズします。