例:ASパスの先頭付加のルーティングポリシーの設定
この例では、BGPによってアドバタイズされる特定のルートの先頭にASパスを追加するように、ルーティングポリシーを設定する方法を示しています。
要件
開始する前に、ルーターのインターフェイスとプロトコルが正しく設定されていることを確認してください。このドキュメントで使用するインターフェイスとBGPプロトコルの設定を提供します。
この例は、Junosリリース22.1R1で更新され、再検証されました。
概要
この例では、 prependpolicy1 というルーティングポリシーと prependterm1という用語を作成します。ルーティングポリシーは、マスク長が指定されたマスクと同じかそれ以上の場合、172.16.0.0/12、192.168.0.0/16、10.0.0.0/8プレフィックスに一致するルートに、AS番号65001を3回先頭に付加します。結果、ルートのマスク長が指定されたネットワーク マスクと同じかそれより長い場合に一致が発生します。 prependpolicy1 ポリシーは、AS 65001のR1からAS番号65000のR2にアドバタイズされたBGPルートにエクスポートポリシーとして適用されます。指定されたプレフィックス範囲に一致しないルートには、ASパスの先頭付加は行われません。
トポロジー
トポロジーでは、EBGPピアリングはR1とR2の間で設定されます。10.1.23.0/24サブネットアドレスへの直接インターフェイスピアリングが使用されます。R1はAS番号65001に属し、R2にアドバタイズされるときに、特定の一致ルートセットの前にAS番号を付加するように設定されています。
ASパスにAS番号を追加することで、ルートが転送対象として選択される可能性が低くなります。これは、AS 65001の所有者が、AS 65000の運用担当者から受信するイングレストラフィックの量を減らすために行う場合があります。
この例では、エクスポートポリシーを介してASパスを先頭に追加する方法を示しています。また、インポートポリシーを使用して、属性操作用のルートでマッチングすることもできます。一般的には、ローカルAS番号のみをルートの先頭に追加することがベストプラクティスです。リモートネットワークに属するAS番号を先頭に追加すると、予期しない結果が生じる可能性があります。
BGPパス選択の詳細については、 BGPパス選択についてを参照してください。
設定
手順
CLIクイックコンフィグレーション
このセクションでは、R1デバイスの設定に焦点を当てます。この例で使用したすべてのデバイスの完全な設定については、付録を参照してください。
この例をすばやく設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、[ edit] 階層レベルのCLIにコマンドをコピー&ペーストします。
この例では、R1 の未使用インターフェイスに 3 つのテストプレフィックスを割り当てています。4番目のテストプレフィックスは、R1のループバックアドレスに割り当てられます。これにより、BGPにアドバタイズできる4つの直接ルートが提供されます。当社のポリシーでは、 protocol direct ステートメントと route-filter ステートメントの組み合わせを使用して、パスの先頭にAS付加されるプレフィックスを制御します。
set system host-name R1 set interfaces xe-0/0/0:1 unit 0 family inet address 10.1.23.1/24 set interfaces xe-0/0/0:0 unit 0 family inet address 10.255.1.1/30 set interfaces xe-0/0/0:0 unit 0 family inet address 172.16.0.1/24 set interfaces xe-0/0/0:0 unit 0 family inet address 10.200.1.1/24 set interfaces lo0 unit 0 family inet address 192.168.0.1/32 set policy-options policy-statement prependpolicy1 term prependterm1 from protocol direct set policy-options policy-statement prependpolicy1 term prependterm1 from route-filter 172.16.0.0/16 orlonger set policy-options policy-statement prependpolicy1 term prependterm1 from route-filter 192.168.0.0/24 orlonger set policy-options policy-statement prependpolicy1 term prependterm1 from route-filter 10.255.1.0/24 orlonger set policy-options policy-statement prependpolicy1 term prependterm1 then as-path-prepend "65001 65001 65001" set policy-options policy-statement prependpolicy1 term prependterm1 then accept set policy-options policy-statement prependpolicy1 term else from protocol direct set policy-options policy-statement prependpolicy1 term else from route-filter 10.200.0.0/16 orlonger set policy-options policy-statement prependpolicy1 term else then accept set routing-options autonomous-system 65001 set routing-options router-id 192.168.0.1 set protocols bgp group ebgp type external set protocols bgp group ebgp export prependpolicy1 set protocols bgp group ebgp peer-as 65000 set protocols bgp group ebgp neighbor 10.1.23.2
ステップバイステップの手順
以下の手順では、設定階層のさまざまなレベルに移動する必要があります。その方法の詳細については、『Junos OS CLIユーザーガイド』の「設定モードでCLIエディタを使用する」を参照してください。
特定のルートの先頭にAS番号を追加するルーティングポリシーを作成するには:
-
ピアリングおよびループバックインターフェイスを設定します。
user@R1# [edit] set interfaces xe-0/0/0:1 unit 0 family inet address 10.1.23.1/24 set interfaces lo0 unit 0 family inet address 192.168.0.1/32
-
AS番号、RID、および外部BGPピアグループを設定します。次のステップで prependpolicy1 ポリシーを定義します。このポリシーは、R1 によってアドバタイズされるルートに影響を与えるエクスポート ポリシーとして適用されます。
user@R1# [edit] set routing-options autonomous-system 65001 set routing-options router-id 192.168.0.1 set protocols bgp group ebgp type external set protocols bgp group ebgp export prependpolicy1 set protocols bgp group ebgp peer-as 65000 set protocols bgp group ebgp neighbor 10.1.23.2
-
prependpolicy1ポリシーを設定します。ルート フィルター ステートメントへのスイッチを使用すると
or-longerマスク長が指定されたマスクと同じかそれより長い場合に一致させることができます。exactなどのその他のオプションは、プレフィックス長とマスク長が等しい場合にのみ一致します。else項は、prependterm1項に一致しないルートが、else項に一致することによってパスを先頭に追加せずにASどのようにアドバタイズされるかを示します。user@R1# [edit] set policy-options policy-statement prependpolicy1 term prependterm1 from protocol direct set policy-options policy-statement prependpolicy1 term prependterm1 from route-filter 172.16.0.0/16 orlonger set policy-options policy-statement prependpolicy1 term prependterm1 from route-filter 192.168.0.0/24 orlonger set policy-options policy-statement prependpolicy1 term prependterm1 from route-filter 10.255.1.0/24 orlonger set policy-options policy-statement prependpolicy1 term prependterm1 then as-path-prepend "65001 65001 65001" set policy-options policy-statement prependpolicy1 term prependterm1 then accept set policy-options policy-statement prependpolicy1 term else from protocol direct set policy-options policy-statement prependpolicy1 term else from route-filter 10.200.0.0/16 orlonger set policy-options policy-statement prependpolicy1 term else then accept
注:複数のAS番号を入力する場合は、各番号をスペースで区切る必要があります。AS番号の文字列を二重引用符で囲みます。
-
テストルートを定義します。サンプルトポロジーでは、運用上稼働している未使用のインターフェイスにプレフィックスを割り当てます。これにより、エクスポートポリシーの動作をテストするためにBGPがアドバタイズする直接ルートが提供されます。
user@R1# [edit] set interfaces xe-0/0/0:0 unit 0 family inet address 10.255.1.1/30 set interfaces xe-0/0/0:0 unit 0 family inet address 172.16.0.1/24 set interfaces xe-0/0/0:0 unit 0 family inet address 10.200.1.1/24
結果
設定モードから show policy-options、 show protocols bgp、 show routing-options、 show interfaces コマンドを入力して、設定を確認します。出力に意図した設定が表示されない場合は、この例の設定手順を繰り返して修正します。
user@R1#[edit]
user@R1# show policy-options
policy-statement prependpolicy1 {
term prependterm1 {
from {
protocol direct;
route-filter 172.16.0.0/16 orlonger;
route-filter 192.168.0.0/24 orlonger;
route-filter 10.255.1.0/24 orlonger;
}
then {
as-path-prepend "65001 65001 65001";
accept;
}
}
term else {
from {
protocol direct;
route-filter 10.200.0.0/16 orlonger;
}
then accept;
}
}
[edit]
user@R1# show protocols bgp
group ebgp {
type external;
export direct;
peer-as 65000;
neighbor 10.1.23.2;
}
[edit]
user@R1# show routing-options
autonomous-system 65001;
router-id 192.168.0.1
user@R1# show interfaces xe-0/0/0:0
unit 0 {
family inet {
address 10.255.1.1/30;
address 172.16.0.1/24;
address 10.200.1.1/24;
}
}
[edit]
user@R1# show interfaces xe-0/0/0:1
unit 0 {
family inet {
address 10.1.23.1/24;
}
}
[edit]
user@R1# show interfaces lo0
unit 0 {
family inet {
address 192.168.0.1/32;
}
}
R1デバイスの設定が完了したら、設定モードから コミット を入力します。
検証
設定が正常に機能していることを確認するには、以下のタスクを実行します。
AS先頭付加ポリシーの検証
目的
デバイスにポリシーが設定されていること、および先頭に AS 番号を付加する適切なルートが指定されていることを確認します。
アクション
動作モードから、show policy prependpolicy1コマンドを入力します。
user@R1> show policy prependpolicy1
Policy prependpolicy1: [CHANGED/RESOLVED/]
Term prependterm1:
from proto Direct
route filter:
172.16.0.0/16 orlonger
192.168.0.0/24 orlonger
10.255.1.0/24 orlonger
then aspathprepend 65001 65001 65001 accept
Term else:
from proto Direct
route filter:
10.200.0.0/16 orlonger
then accept
ポリシーは、正しい一致条件とアクションを表示します。
ルーティング ポリシー アプリケーションと BGP ピアリングの検証
目的
ルーティングポリシーがEBGPピアグループへのエクスポートポリシーとして適用されていることを確認します。このステップでは、R2へのBGPセッションが正しく確立されていることを確認します。
アクション
動作モードから、 show bgp neighbor 10.1.23.2 コマンドを入力します。
user@R1> show bgp neighbor 10.1.23.2 Peer: 10.1.23.2+49642 AS 65000 Local: 10.1.23.1+179 AS 65001 Group: ebgp Routing-Instance: master Forwarding routing-instance: master Type: External State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ prependpolicy1 ] Options: <PeerAS Refresh> Options: <GracefulShutdownRcv> Holdtime: 90 Preference: 170 Graceful Shutdown Receiver local-preference: 0 Number of flaps: 1 Last flap event: RecvNotify Error: 'Cease' Sent: 0 Recv: 1 Peer ID: 192.168.0.2 Local ID: 192.168.0.1 Active Holdtime: 90 . . . Input messages: Total 2498 Updates 1 Refreshes 0 Octets 47510 Output messages: Total 2500 Updates 3 Refreshes 0 Octets 47620 Output Queue[1]: 0 (inet.0, inet-unicast)
コマンド出力は、BGPセッションが確立され、R1が prependpolicy1 ポリシーをエクスポートとして適用したことを確認します。
ASパスの先頭付加を確認する
目的
エクスポートポリシーが、一致するルートの先頭にAS番号を付加する設計として機能することを確認します。
アクション
動作モードから、R2で show route protocol bgp コマンドを入力します。または、R1で show route advertising-protocol bgp 10.1.23.2 を使用して、R2にアドバタイズするルートに関する詳細を表示します。
user@R2> show route protocol bgp
inet.0: 14 destinations, 14 routes (14 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.200.1.0/24 *[BGP/170] 00:04:46, localpref 100
AS path: 65001 I, validation-state: unverified
> to 10.1.23.1 via xe-0/0/0:0.0
10.255.1.0/30 *[BGP/170] 00:04:46, localpref 100
AS path: 65001 65001 65001 65001 I, validation-state: unverified
> to 10.1.23.1 via xe-0/0/0:0.0
172.16.0.0/24 *[BGP/170] 00:04:46, localpref 100
AS path: 65001 65001 65001 65001 I, validation-state: unverified
> to 10.1.23.1 via xe-0/0/0:0.0
192.168.0.1/32 *[BGP/170] 00:04:46, localpref 100
AS path: 65001 65001 65001 65001 I, validation-state: unverified
> to 10.1.23.1 via xe-0/0/0:0.0
ルートには、予想される AS パスの先頭が付加されることが示されています。10.200.1.0/24ルートには、AS番号65001のインスタンスが1つしかないことに注意してください。このルートは、prependpolicy1ポリシーのprependterm1にあるルートフィルターステートメントと一致しないため、先頭付加は行われません。
R1がR2にアドバタイズするBGPルートのビューは、念のために提供されています。
user@R1> show route advertising-protocol bgp 10.1.23.2
inet.0: 16 destinations, 16 routes (16 active, 0 holddown, 0 hidden)
Prefix Nexthop MED Lclpref AS path
* 10.200.1.0/24 Self I
* 10.255.1.0/30 Self 65001 65001 65001 [65001] I
* 172.16.0.0/24 Self 65001 65001 65001 [65001] I
* 192.168.0.1/32 Self 65001 65001 65001 [65001] I
付録 完全な設定
R1のフルコンフィグレーション
set system host-name R1 set interfaces xe-0/0/0:0 unit 0 family inet address 10.255.1.1/30 set interfaces xe-0/0/0:0 unit 0 family inet address 172.16.0.1/24 set interfaces xe-0/0/0:0 unit 0 family inet address 10.200.1.1/24 set interfaces xe-0/0/0:1 unit 0 family inet address 10.1.23.1/24 set interfaces lo0 unit 0 family inet address 192.168.0.1/32 set policy-options policy-statement prependpolicy1 term prependterm1 from protocol direct set policy-options policy-statement prependpolicy1 term prependterm1 from route-filter 172.16.0.0/16 orlonger set policy-options policy-statement prependpolicy1 term prependterm1 from route-filter 192.168.0.0/24 orlonger set policy-options policy-statement prependpolicy1 term prependterm1 from route-filter 10.255.1.0/24 orlonger set policy-options policy-statement prependpolicy1 term prependterm1 then as-path-prepend "65001 65001 65001" set policy-options policy-statement prependpolicy1 term prependterm1 then accept set policy-options policy-statement prependpolicy1 term else from protocol direct set policy-options policy-statement prependpolicy1 term else from route-filter 10.200.0.0/16 orlonger set policy-options policy-statement prependpolicy1 term else then accept set routing-options router-id 192.168.0.1 set routing-options autonomous-system 65001 set protocols bgp group ebgp type external set protocols bgp group ebgp export prependpolicy1 set protocols bgp group ebgp peer-as 65000 set protocols bgp group ebgp neighbor 10.1.23.2
R2のフルコンフィグレーション
set system host-name R2 set interfaces xe-0/0/0:0 unit 0 family inet address 10.1.23.2/24 set interfaces lo0 unit 0 family inet address 192.168.0.2/32 set routing-options router-id 192.168.0.2 set routing-options autonomous-system 65000 set protocols bgp group ebgp type external set protocols bgp group ebgp peer-as 65001 set protocols bgp group ebgp neighbor 10.1.23.1