例:ポリシー サブルーチンの設定
この例では、ルーティングポリシー一致条件でポリシーサブルーチンを使用する方法を示します。
要件
この例を設定する前に、デバイス初期化以外の特別な設定を行う必要はありません。
概要
デバイスR1では、 main
と呼ばれるポリシーが設定されています。
user@R1# show policy-options policy-statement main { term subroutine-as-a-match { from policy subroutine; then accept; } term nothing-else { then reject; } }
このメインポリシーは、 subroutine
と呼ばれるサブルーチンを呼び出します。
user@R1# show policy-options policy-statement subroutine { term get-routes { from protocol static; then accept; } term nothing-else { then reject; } }
ルーターは、定義された方法で main
のロジックを評価します。一致条件が from policy subroutine
の場合、ルーティング・デバイスはサブルーチンを見つけることができます。サブルーチンのすべての用語は、通常のポリシー処理ルールに従って順番に評価されます。この例では、ルーティングテーブル内のすべてのスタティックルートが、アクセプト のアクションでサブルーチンに一致します。これにより、元のポリシーまたは呼び出しポリシーに真の結果が返され、正の一致が発生したことがデバイスに通知されます。呼び出しポリシーのアクションが実行され、ルートが受け入れられます。ルーティング テーブル内の他のすべてのルートはサブルーチンに一致せず、呼び出し元のポリシーに誤った結果を返します。デバイスは main
の第 2 項を評価し、ルートを拒否します。
サブルーチン内のアクションは、実際には特定のルートを受け入れたり拒否したりしません。サブルーチンアクションは、真または偽の結果にのみ変換されます。ただし、ルートの属性を変更するアクションは、サブルーチンの結果に関係なくルートに適用されます。
AS 64510のデバイスR1には複数の顧客ルートがあり、その一部はローカルに設定された静的ルートであり、一部は内部BGP(IBGP)を介してデバイスR2およびデバイスR3から受信されます。AS 64510は、AS 64511でデバイスR4に接続されています。ポリシー main
は、デバイスR1のデバイスR4とのBGPピアリングセッションでエクスポートポリシーとして適用されます。これにより、デバイスR1はデバイスR4に自身の静的ルートのみを送信します。ポリシー main
により、デバイス R1 は内部ピアであるデバイス R2 およびデバイス R3 から受信したルートを送信しません。
ポリシー サブルーチンを使用する場合、デフォルトの EBGP エクスポート ポリシーは、学習したすべての BGP ルートをすべての EBGP ピアにアドバタイズすることであることを覚えておくことが重要です。このデフォルトポリシーは、メインポリシーとサブルーチンで有効です。したがって、この例に示すように、デフォルトの EBGP エクスポート・ポリシーを有効にしたくない場合は、メイン・ポリシーとポリシー・サブルーチンの両方で、 then reject
終了アクションを最終項として設定する必要があります。この例は、最後の then reject
項がメインポリシーまたはポリシーサブルーチンのいずれかから欠落している場合に何が起こるかを示しています。
トポロジー
図 1は、サンプルのネットワークを示しています。
CLIクイック構成は、図 1でのすべてのデバイスの設定を示しています。
セクション#configuration318__policy-subroutine-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.0.0.1/30 set interfaces fe-1/2/2 unit 0 description to_R3 set interfaces fe-1/2/2 unit 0 family inet address 10.0.0.5/30 set interfaces fe-1/2/3 unit 0 description to_R4 set interfaces fe-1/2/3 unit 0 family inet address 10.1.0.5/30 set interfaces lo0 unit 0 family inet address 192.168.0.1/32 set protocols bgp group int type internal set protocols bgp group int local-address 192.168.0.1 set protocols bgp group int neighbor 192.168.0.2 set protocols bgp group int neighbor 192.168.0.3 set protocols bgp group to_64511 type external set protocols bgp group to_64511 export main set protocols bgp group to_64511 neighbor 10.1.0.6 peer-as 64511 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/2.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement main term subroutine-as-a-match from policy subroutine set policy-options policy-statement main term subroutine-as-a-match then accept set policy-options policy-statement main term nothing-else then reject set policy-options policy-statement subroutine term get-routes from protocol static set policy-options policy-statement subroutine term get-routes then accept set policy-options policy-statement subroutine term nothing-else then reject set routing-options static route 172.16.1.16/28 discard set routing-options static route 172.16.1.32/28 discard set routing-options static route 172.16.1.48/28 discard set routing-options static route 172.16.1.64/28 discard set routing-options router-id 192.168.0.1 set routing-options autonomous-system 64510
デバイスR2
set interfaces fe-1/2/0 unit 0 description to_R1 set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.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.1.0.1/30 set interfaces lo0 unit 0 family inet address 192.168.0.2/32 set protocols bgp group int type internal set protocols bgp group int local-address 192.168.0.2 set protocols bgp group int neighbor 192.168.0.1 export send-static set protocols bgp group int neighbor 192.168.0.3 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 protocols ospf area 0.0.0.0 interface lo0.0 passive 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.2.16/28 discard set routing-options static route 172.16.2.32/28 discard set routing-options static route 172.16.2.48/28 discard set routing-options static route 172.16.2.64/28 discard set routing-options router-id 192.168.0.2 set routing-options autonomous-system 64510
デバイスR3
set interfaces fe-1/2/1 unit 0 description to_R2 set interfaces fe-1/2/1 unit 0 family inet address 10.1.0.2/30 set interfaces fe-1/2/2 unit 0 description to_R1 set interfaces fe-1/2/2 unit 0 family inet address 10.0.0.6/30 set interfaces lo0 unit 0 family inet address 192.168.0.3/32 set protocols bgp group int type internal set protocols bgp group int local-address 192.168.0.3 set protocols bgp group int neighbor 192.168.0.1 export send-static set protocols bgp group int neighbor 192.168.0.2 set protocols ospf area 0.0.0.0 interface fe-1/2/2.6 set protocols ospf area 0.0.0.0 interface fe-1/2/0.4 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement send-static from protocol static set policy-options policy-statement send-static then accept set routing-options static route 172.16.3.16/28 discard set routing-options static route 172.16.3.32/28 discard set routing-options static route 172.16.3.48/28 discard set routing-options static route 172.16.3.64/28 discard set routing-options router-id 192.168.0.3 set routing-options autonomous-system 64510
デバイス R4
set interfaces fe-1/2/3 unit 0 description to_R1 set interfaces fe-1/2/3 unit 0 family inet address 10.1.0.6/30 set interfaces lo0 unit 0 family inet address 192.168.0.4/32 set protocols bgp group ext type external set protocols bgp group ext peer-as 64510 set protocols bgp group ext neighbor 10.1.0.5 set routing-options autonomous-system 64511
手順
ステップバイステップでの手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、Junos OS CLIユーザーガイドの「設定モードでのCLIエディターの使用」を参照してください。
Device R1を設定するには:
デバイスインターフェイスを設定します。
[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.0.0.1/30 user@R1# set fe-1/2/2 unit 0 description to_R3 user@R1# set fe-1/2/2 unit 0 family inet address 10.0.0.5/30 user@R1# set fe-1/2/3 unit 0 description to_R4 user@R1# set fe-1/2/3 unit 0 family inet address 10.1.0.5/30 user@R1# set lo0 unit 0 family inet address 192.168.0.1/32
デバイスR2、デバイスR3への内部 BGP(IBGP)接続を構成します。
[edit protocols bgp group int] user@R1# set type internal user@R1# set local-address 192.168.0.1 user@R1# set neighbor 192.168.0.2 user@R1# set neighbor 192.168.0.3
デバイスR4へのEBGP接続を設定します。
[edit protocols bgp group to_64511] user@R1# set type external user@R1# set export main user@R1# set neighbor 10.1.0.6 peer-as 64511
デバイスR2、デバイスR3へのOSPF接続を構成します。
[edit protocols ospf area 0.0.0.0] user@R1# set interface fe-1/2/0.0 user@R1# set interface fe-1/2/2.0 user@R1# set interface lo0.0 passive
main
ポリシーを設定します。[edit policy-options policy-statement main term subroutine-as-a-match] user@R1# set from policy subroutine user@R1# set then accept [edit policy-options policy-statement main term nothing-else] user@R1# set then reject
subroutine
ポリシーを設定します。[edit policy-options policy-statement subroutine term get-routes] user@R1# set from protocol static user@R1# set then accept [edit policy-options policy-statement subroutine term nothing-else] user@R1# set then reject
172.16.5.0/24ネットワークへの静的ルートを構成します。
[edit routing-options static] user@R1# set route 172.16.1.16/28 discard user@R1# set route 172.16.1.32/28 discard user@R1# set route 172.16.1.48/28 discard user@R1# set route 172.16.1.64/28 discard
自律システム(AS)番号とルーターIDを設定します。
[edit routing-options] user@R1# set router-id 192.168.0.1 user@R1# set autonomous-system 64510
結果
設定モードから、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.0.0.1/30; } } } fe-1/2/2 { unit 0 { description to_R3; family inet { address 10.0.0.5/30; } } } fe-1/2/3 { unit 0 { description to_R4; family inet { address 10.1.0.5/30; } } } lo0 { unit 0 { family inet { address 192.168.0.1/32; } } }
user@R1# show protocols bgp { group int { type internal; local-address 192.168.0.1; neighbor 192.168.0.2; neighbor 192.168.0.3; } group to_64511 { type external; export main; neighbor 10.1.0.6 { peer-as 64511; } } } ospf { area 0.0.0.0 { interface fe-1/2/0.0; interface fe-1/2/2.0; interface lo0.0 { passive; } } }
user@R1# show policy-options policy-statement main { term subroutine-as-a-match { from policy subroutine; then accept; } term nothing-else { then reject; } } policy-statement subroutine { term get-routes { from protocol static; then accept; } term nothing-else { then reject; } }
user@R1# show routing-options static { route 172.6.1.16/28 discard; route 172.6.1.32/28 discard; route 172.6.1.48/28 discard; route 172.6.1.64/28 discard; } router-id 192.168.0.1; autonomous-system 64510;
デバイスの設定が完了したら、設定モードから commit
を入力します。
検証
設定が正常に機能していることを確認します。
デバイスR1でルートを検証する
目的
デバイスR1で、ルーティングテーブル内の静的ルートを確認します。
アクション
user@R1> show route protocol static inet.0: 23 destinations, 23 routes (23 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 172.16.1.16/28 *[Static/5] 1d 02:02:13 Discard 172.16.1.32/28 *[Static/5] 1d 02:02:13 Discard 172.16.1.48/28 *[Static/5] 1d 02:02:13 Discard 172.16.1.64/28 *[Static/5] 1d 02:02:13 Discard
意味
デバイスR1には4つのスタティックルートがあります。
デバイスR4へのルートアドバタイズを検証する
目的
デバイスR1上で、静的ルートがデバイスR4にアドバタイズされていることを確認します。
アクション
user@R1> show route advertising-protocol bgp 10.1.0.6 inet.0: 23 destinations, 23 routes (23 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 172.16.1.16/28 Self I * 172.16.1.32/28 Self I * 172.16.1.48/28 Self I * 172.16.1.64/28 Self I
意味
予想通り、デバイスR1はデバイスR4に対してのみ静的ルートをアドバタイズします。
デフォルトのBGPエクスポート・ポリシーでの実験
目的
ポリシーmain
またはポリシーsubroutine
から最終then reject
用語を削除するとどうなるかを確認します。
アクション
デバイスR1で、ポリシー
main
の最後の用語を無効にします。[edit policy-options policy-statement main] user@R1# deactivate term nothing-else user@R1# commit
デバイスR1で、デバイスR4にアドバタイズされているルートを確認します。
user@R1> show route advertising-protocol bgp 10.1.0.6 inet.0: 23 destinations, 23 routes (23 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 172.16.1.16/28 Self I * 172.16.1.32/28 Self I * 172.16.1.48/28 Self I * 172.16.1.64/28 Self I * 172.16.2.16/28 Self I * 172.16.2.32/28 Self I * 172.16.2.48/28 Self I * 172.16.2.64/28 Self I * 172.16.3.16/28 Self I * 172.16.3.32/28 Self I * 172.16.3.48/28 Self I * 172.16.3.64/28 Self I
これで、デバイス R1 からのすべての BGP ルートがデバイス R4 に送信されます。これは、処理がポリシー
main
に戻された後、デフォルトのBGPエクスポートポリシーが有効になるためです。デバイスR1で、ポリシー
main
の最終条件を再アクティブ化し、ポリシーsubroutine
の最終条件を非アクティブ化します。[edit policy-options policy-statement main] user@R1# activate term nothing-else [edit policy-options policy-statement subroutine] user@R1# deactivate term nothing-else user@R1# commit
デバイスR1で、デバイスR4にアドバタイズされているルートを確認します。
user@R1> show route advertising-protocol bgp 10.1.0.6 inet.0: 23 destinations, 23 routes (23 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 172.16.1.16/28 Self I * 172.16.1.32/28 Self I * 172.16.1.48/28 Self I * 172.16.1.64/28 Self I * 172.16.2.16/28 Self I * 172.16.2.32/28 Self I * 172.16.2.48/28 Self I * 172.16.2.64/28 Self I * 172.16.3.16/28 Self I * 172.16.3.32/28 Self I * 172.16.3.48/28 Self I * 172.16.3.64/28 Self I
これで、デバイス R1 からのすべての BGP ルートがデバイス R4 に送信されます。これは、処理がポリシー
main
に戻る前に、デフォルトのBGPエクスポートポリシーがポリシーsubroutine
で有効になるためです。
意味
デフォルトのBGPエクスポートポリシーが有効にならないようにするには、メインポリシーと参照されるすべてのサブルーチンに最後の then reject
項を含める必要があります。