動的ルーティングポリシーについて
設定変更をコミットするために必要な検証プロセスには、かなりのオーバーヘッドと時間がかかる場合があります。例えば、20,000行の ルーティングポリシーの1行のプレフィックスを変更する場合、コミットに最大 20秒かかることがあります。ルーティングポリシーの変更をはるかに迅速にコミットできると便利です。
Junos OS リリース 9.5 以降では、標準設定データベースで要求されるのと同じ検証の対象とならない動的データベースでルーティング ポリシーと特定のルーティングポリシー オブジェクトを設定できます。その結果、動的データベースへの変更のコミットにかかる時間は、標準設定データベースの場合よりもはるかに短くなります。その後、標準データベースで設定するルーティングポリシーでこれらのポリシーとポリシーオブジェクトを参照できます。BGPは、動的データベースで設定されたポリシーやポリシーオブジェクトを参照するルーティングポリシーを適用できる唯一のプロトコルです。動的データベースで設定されたオブジェクトに基づいてルーティングポリシーを設定してコミットした後、動的データベースの設定を変更することで、既存のルーティングポリシーをすばやく更新できます。
Junos OS は動的データベースへの設定変更を検証しないため、この機能を使用する場合は、コミットする前にすべての設定変更をテストして検証する必要があります。
動的データベースでのルーティング ポリシーとポリシー オブジェクトの設定
Junos OS リリース9.5以降では、設定データベース、 動的データベースがサポートされており、標準設定データベースと同様の方法で編集できますが、設定変更をコミットするための同じ検証プロセスの対象ではありません。その結果、設定変更のコミットにかかる時間が大幅に短縮されます。動的データベースで定義されたポリシーとポリシーオブジェクトは、標準設定で設定されたルーティングポリシーで参照できます。動的データベースは、 /var/run/db/juniper.dyn ディレクトリに保存されます。
動的データベースを設定するには、 configure dynamic コマンドを入力して動的データベースの設定モードに入ります。
user@host> configure dynamic Entering configuration mode [edit dynamic] user@host#
この動的設定データベースでは、 [edit policy-options] 階層レベルで以下のステートメントを設定できます。
-
as-path name -
as-path-group group-name -
community community-name -
condition condition-name -
prefix-list prefix-list-name -
policy-statement policy-statement-name
[edit dynamic]階層レベルでは、他の設定はサポートされていません。
policy-statement policy-statement-nameステートメントを使用して、標準設定データベースの場合と同様にルーティングポリシーを設定します。
動的データベースの設定モードを終了するには、[edit dynamic]階層内の任意のレベルから exit configuration-mode コマンドを発行するか、最上位レベルから exit コマンドを使用します。
動的データベース設定に基づくルーティング ポリシーの設定
標準設定モードでは、動的データベースの[edit dynamic]階層レベルで設定されたポリシーとポリシーオブジェクトを参照するルーティングポリシーを設定できます。動的データベース設定を参照するルーティングポリシーを定義するには、[edit policy-options policy-statement policy-statement-name]階層レベルでdynamic-dbステートメントを含めます。
[edit policy-options]
policy-statement policy-statement-name {
dynamic-db;
}
動的データベース内のこれらのオブジェクトの設定に基づいて、特定のポリシーオブジェクトを定義することもできます。動的データベースに基づいてポリシーオブジェクトを定義するには、[edit policy-options]階層レベルで以下のステートメントとともにdynamic-dbステートメントを含めます。
-
as-path name -
as-path-group group-name -
community community-name -
condition condition-name -
prefix-list prefix-list-name
標準設定では、動的データベースで設定されたオブジェクトを参照する標準設定で設定したポリシーオブジェクトを参照するルーティングポリシーを定義することもできます。
例えば、標準設定モードでは、動的データベースで設定されたプレフィックスリスト(prefix-list pl2という名前も付く)を参照するプレフィックスリストprefix-list pl2を設定します。
[edit policy-options]
prefix-list pl2 {
dynamic-db; # Reference a prefix list configured in the dynamic database.
}
次に、 prefix-list pl2を含む標準設定でルーティングポリシーを設定します。
[edit policy-options]
policy-statement one {
term term1 {
from {
prefix-list pl2; # Include the prefix list configured in the standard configuration
# database, but which references a prefix list configured in the dynamic database.
}
then accept;
}
then reject;
}
prefix-list pl2の設定を更新する必要がある場合は、[edit dynamic]階層レベルを使用して動的データベース設定で更新します。これにより、プレフィックスリストへのコミット設定変更を、標準の設定データベースよりも迅速に行うことができます。
Junos OSをJunos OSリリース 9.4以前にダウングレードする場合は、まず動的データベースを参照するルーティングポリシーを削除する必要があります。つまり、 dynamic-db ステートメントで設定されたルーティングポリシーまたはポリシーオブジェクトを削除する必要があります。
BGPへの動的ルーティングポリシーの適用
BGPは、動的データベース設定を参照するルーティングポリシーを適用できる唯一のルーティングプロトコルです。これらのポリシーは、標準設定で適用する必要があります。動的ポリシーは、BGPエクスポートまたはインポートポリシーに適用できます。また、グローバル、グループ、またはネイバー階層レベルで適用することもできます。
BGPエクスポートポリシーを適用するには、[edit protocols bgp]、[edit protocols bgp group group-name]、または[edit protocols bgp group group-name neighbor address]階層レベルでexport [ policy-names ]ステートメントを含めます。
[edit]
protocols
bgp {
export [ policy-names ];
}
}
BGPインポートポリシーを適用するには、[edit protocols bgp]、[edit protocols bgp group group-name]、または[edit protocols bgp group group-name neighbor address]階層レベルでimport [ policy-names ]ステートメントを含めます。
[edit]
protocols
bgp {
import [ policy-names ];
}
}
動的データベースで設定されたポリシーを参照する、 [edit policy-options policy-statement] 階層レベルの標準設定で設定されたポリシー名を1つ以上含めます。
NSRルーティングエンジンスイッチオーバー後のBGPピアリングセッションの再確立の防止
アクティブノンストップルーティング(NSR)を有効にしている場合、動的データベースはバックアップルーティングエンジンと同期されません。その結果、バックアップのルーティングエンジンに切り替えた場合、切り替え時にプライマリルーティングエンジンで実行されているインポートおよびエクスポートポリシーが利用できなくなる可能性があります。そのため、スイッチオーバーが発生するとすぐに、BGPピアリングセッションが自動的に再確立されないようにしたい場合があります。
アクティブなノンストップルーティングスイッチオーバー後、指定した期間、または手動でセッションを再確立するまで、BGPピアリングセッションを再確立しないように、ルーターを設定することができます。[edit protocols bgp]、[edit protocols bgp group group-name]、または[edit protocols bgp group group-name neighbor address]階層レベルでidle-after-switch-over (seconds | forever)ステートメントを含めます。
[edit]
bgp {
protocols {
idle-after-switch-over (seconds | never);
}
}
seconds,の場合は、1〜 4,294,967,295(2、32 – 1)の 値を指定します。BGPピアリングセッションは、指定された期間が過ぎるまで再確立されません。foreverオプションを指定した場合、clear bgp neighborコマンドを発行するまでBGPピアリングセッションは確立されません。