BGP最適ルートリフレクション
BGP最適ルート反映の理解
BGPが最適経路選択を実行する際、複数の属性を定義された順序で評価します。これらのステップの1つは、ネクストホップが最もメトリックの低いIGPを通じて解決されるパスを優先することです。この比較は、パス選択を決定するルーターの視点から実行されます。
BGP パス選択の詳細については、「 BGP パス選択について」を参照してください。
ルートリフレクタがポイントオブプレゼンス単位で導入されているネットワークでは、この動作は通常、望ましい転送結果を生み出します。各ルートリフレクタは、クライアントの転送トポロジーと密接に一致するIGPコストに基づいて、クライアントへのルートを反映します。
ただし、大規模ネットワークでは、ルートリフレクタは、複数の地理的な場所に分散しているクライアントピアと非クライアントピアにサービスを提供する場合があります。これらの導入では、BGPパス選択時に使用されるIGPメトリックは、受信クライアントの視点ではなく、ルートリフレクタの場所からのトポロジーを反映します。
その結果、ルートリフレクタにとって最適に見えるルートが、すべてのクライアントにとって最適な転送パスを表しているとは限りません。この不一致は、BGPパス選択が正しく動作していても、最適ではないトラフィックフォワーディングにつながる可能性があります。
BGP最適ルートリフレクションは、ルートリフレクタのローカルビューのみに依存するのではなく、反映されたルートを受信するクライアントのIGPトポロジーにパス選択をよりよく合わせるようにすることで、この制限に対処します。
RFC 9107で説明されているBGP最適経路リフレクション(BGP-ORR)を設定し、IS-ISおよびOSPFをルートリフレクタの内部ゲートウェイプロトコル(IGP)として設定し、BGP-ORRクライアントグループに最適経路をアドバタイズすることができます。これは、ルートリフレクタの視点ではなく、クライアントの視点から最短のIGPメトリックを使用することで実現されます。
同一または類似のIGPトポロジーを共有するクライアントグループは、1つのBGPピアグループとしてグループ化できます。optimal-route-reflectionを設定して、そのBGPピアグループでBGP-ORRを有効にすることができます。また、リフレクタノードの1つをBGPピアグループのプライマリノード(igp-primary)として設定し、そのプライマリノードからのIGPメトリックを使用して最適なパスを選択し、同じBGPピアグループのクライアントにアドバタイズすることもできます。オプションで、プライマリリフレクタノード(igp-primary)がダウンした場合や到達できない場合に使用されるバックアップノード(igp-backup)として、別のリフレクタノードを選択することもできます。
BGP-ORR を有効にするには、[edit protocols bgp group group-name] 階層レベルに optimal-route-reflection ステートメントを含めます。
BGP-ORR は、BGP ルート解決に IGP が使用されている場合にのみ機能します。ルート解決に MPLS/LDP/RSVP を使用している場合、BGP-ORR は機能しません。
BGP-ORR が機能するためには、BGP プレフィックスが IGP を介して解決される必要があります。通常のレイヤー 3 VPN、レイヤー 2 VPN、VPLS、MVPN、EVPN などのシナリオでは、プレフィックスは inet.3 上で解決されます。inet.3では、プレフィックスのプロトコルネクストホップの主要ルートは、RSVPまたはLDP(IS-ISやOSPFのようなIGPプロトコルではありません)のいずれかになります。BGP-ORR が機能するためには、レイヤー 3 VPN、レイヤー 2 VPN、VPLS、MVPN、EVPN のプレフィックスのルート解決に inet.0 を使用するようにルーターを設定する必要があります。以下のコマンドで、これを行うことができます。
-
レイヤー 3 VPN プレフィックスの場合:
user@host# set routing-options resolution rib bgp.l3vpn.0 resolution-ribs inet.0
-
レイヤー 2 VPN、または VPLS プレフィックスの場合:
user@host# set routing-options resolution rib bgp.l2vpn.0 resolution-ribs inet.0
-
EVPN プレフィックスの場合:
user@host# set routing-options resolution rib bgp.evpn.0 resolution-ribs inet.0
-
MVPN プレフィックスの場合:
user@host# set routing-options resolution rib bgp.mvpn.0 resolution-ribs inet.0
別の方法は、IGPルートをinet.3にリークして、inet.3の主要ルートにすることです。
以下の CLI 階層を使用して BGP-ORR を設定します。
[edit protocols bgp]
group group-name{
optimal-route-reflection {
igp-primary ipv4-address;
igp-backup ipv4-address;
}
}
関連項目
ルートリフレクタでBGP最適経路を広告するための設定
ルートリフレクタの内部ゲートウェイプロトコル(IGP)としてIS-ISおよびOSPFを使用したBGP最適経路リフレクション(BGP-ORR)を設定し、BGP-ORRクライアントグループに最適なパスをアドバタイズすることができます。これは、ルートリフレクタの視点ではなく、クライアントの視点から最短のIGPメトリックを使用することで実現されます。
BGP-ORR を有効にするには、[edit protocols bgp group group-name] 階層レベルに optimal-route-reflection ステートメントを含めます。
同一または類似のIGPトポロジーを共有するクライアントグループは、1つのBGPピアグループとしてグループ化できます。 optimal-route-reflection を設定して、そのBGPピアグループでBGP-ORRを有効にすることができます。
BGP-ORRを設定するには:
以下のCLIコマンドを使用して、BGP-ORRの設定を監視し、トラブルシューティングします。
show bgp group—BGP-ORRのプライマリおよびバックアップ設定を表示します。show isis bgp-orr—IS-IS BGP-ORRメトリック(RIB)を表示します。show ospf bgp-orr—OSPF BGP-ORRメトリック(RIB)を表示します。show ospf route—OSPFルーティングテーブルのエントリを表示しますshow route—ルーティングテーブル内のアクティブなエントリを表示します。show route advertising protocol bgp peer—ルートがBGP-ORRルールに従ってアドバタイズされているかどうかを確認します。
関連項目
例:BGPネットワークにおける最適ルートリフレクションの設定
この例では、ルートリフレクタでOSPFを内部ゲートウェイプロトコル(IGP)として最適なルートリフレクションを設定し、BGPクライアントグループに最適なパスをアドバタイズします。ルートリフレクタは、クライアントの視点から最短のIGPメトリックを使用して最適なルートを計算します。
この例は、当社のコンテンツテストチームが検証済みです。
| 可読性スコア |
64.26 |
| 読書時間 |
30分 |
| 設定時間 |
30分 |
- 前提条件の例
- 始める前に
- 機能の概要
- トポロジーの概要
- トポロジー図
- RRでの最適ルートリフレクションの設定
- 検証
- すべてのデバイスでコマンドを設定する
- すべてのデバイスでshow configuration output
前提条件の例
| ハードウェア要件 |
MXシリーズルーター5台。 |
| ソフトウェア要件 |
Junos OSリリース15.2R1以降 |
始める前に
| 利点 |
|
| 詳細はこちら |
|
| ハンズオンエクスペリエンス |
|
| 詳細はこちら |
機能の概要
通常、同じBGP自律システム内のルーターは、互いにルートを交換します。IBGPはフルメッシュ接続を必要としますが、これは面倒で時間がかかります。フルメッシュを維持することは、大規模な展開ではうまく拡張できません。ルートリフレクタは、フルメッシュを作成する代わりに、内部ピアから学習したルートを他の内部ピアに再アドバタイズするため、フルメッシュ設定が簡素化されます。ルートリフレクションには、ルートリフレクタがすべての内部ピアで完全にメッシュ化されている必要があります。類似したIGPトポロジーを共有するクライアントグループは、1つのBGPピアグループとしてグループ化できます。リフレクタノードの1つを、BGPピアグループのプライマリノードおよびオプションのバックアップノードとして設定します。最適ルートリフレクションはIGPでのみ機能し、ルート解決にMPLSLDPまたはRSVPを使用する場合は機能しません。
| 使用されたテクノロジー |
ルーティングプロトコル:OSPF、BGP |
| 一次検証タスク |
|
トポロジーの概要
デバイスRRは、ORR(最適ルートリフレクション)を使用したルートリフレクタです。デバイスR1はイングレスPE、デバイスR2およびR3はエグレスPEです。ORR が設定されている場合、RR はルートを最適に反映します。OSPFはIGPとして設定されており、デバイス間にIBGPピアリングがあります。
説明のために、R1-to-R3メトリックを100に増やし、デバイスR2とR3に同じプレフィックス10.10.10.0/24をアドバタイズさせます。R1では、「show route」出力に、プロトコルネクストホップ(egress PE)としてR2が含まれているはずです。RRでBGP-ORR設定を無効にし、同じ手順を繰り返すと、R3がアドバタイズされたプレフィックスのエグレスPEであることがわかります。
| ホスト名 |
役割 |
機能 |
|---|---|---|
| RR | RRはルート反映として設定され、最適なルートリフレクションで設定されています。 | RR は OSPF と内部 BGP で設定されています。RRは、ルートを最適に反映します。RRは、R1のビューではなく、R1のビューに基づいてルートを最適に反映します。 |
| R1 | デバイスはイングレスPEです | OSPFはIGPとして設定され、BGPはデバイス間の内部BGPピアリング用に設定されます。 |
| R2、R3、R11 |
これらのデバイスがエグレスPEです。 |
OSPFは、IGPおよび内部BGPとして設定されます。 |
トポロジー図
BGP
RRでの最適ルートリフレクションの設定
検証
| コマンド | 検証タスク |
|---|---|
| show bgp group | 割り当てられたBGP最適ルートリフレクタの検証 |
| show ospf bgp-orr | 設定されたOSPF BGP-Optimalルートリフレクタメトリックを確認します |
| show route advertising-protocol bgp | ルートがルートリフレクタによって最適にアドバタイズされていることを確認します |
- 割り当てられたBGP-ORRを確認します
- ルーティング情報ベース(RIB)で設定されたOSPF BGP-ORRメトリックを確認します
- ルートがルートリフレクタによって最適にアドバタイズされていることを確認します
割り当てられたBGP-ORRを確認します
目的
BGP-ORRのプライマリおよびバックアップとして割り当てられた設定済みのBGPグループとデバイスを表示します。
アクション
動作モードから、 show bgp group コマンドを実行して、割り当てられたBGP-ORRを確認します。
View the configured BGP group and devices assigned as primary and backup for BGP-ORR.
user@RR> show bgp group
Group Type: Internal AS: 65412 Local AS: 65412
Name: Client Index: 0 Flags: <>
Options: <Cluster>
Options: <GracefulShutdownRcv>
Holdtime: 90 Preference: 0
Graceful Shutdown Receiver local-preference: 0
Optimal route reflection: igp-primary 192.168.0.1 igp-backup 192.168.0.11
Total peers: 4 Established: 4
192.168.0.1+59852
192.168.0.2+56933
192.168.0.3+52883
192.168.0.11+65170
inet.0: 1/2/2/0
Default eBGP mode: advertise - accept, receive - accept
Groups: 1 Peers: 4 External: 0 Internal: 4 Down peers: 0 Flaps: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0
2 1 0 0 0 0
意味
出力には、設定されたプライマリおよびバックアップ最適ルートリフレクタとそのループバックアドレスが含まれます。
ルーティング情報ベース(RIB)で設定されたOSPF BGP-ORRメトリックを確認します
目的
ルーティング情報ベース(RIB)で設定されたOSPF BGP-ORRメトリックを確認します
アクション
動作モードから、 show ospf bgp-orr コマンドを実行します。
user@RR> show ospf bgp-orr
Topology default Route Table:
BGP ORR Peer Group: Client
Primary: 192.168.0.1, active
Backup: 192.168.0.11
Prefix Path Route Metric
Type Type
192.168.0.2 Intra Router 1
192.168.0.3 Intra Router 2
192.168.0.10 Intra Router 1
192.168.0.11 Intra Router 1
10.0.10.0/24 Intra Network 1
10.0.11.0/24 Intra Network 1
10.0.12.0/24 Intra Network 1
10.0.13.0/24 Intra Network 3
10.0.20.0/24 Intra Network 2
10.0.30.0/24 Intra Network 2
192.168.0.1/32 Intra Network 0
192.168.0.2/32 Intra Network 1
192.168.0.3/32 Intra Network 2
192.168.0.10/32 Intra Network 1
192.168.0.11/32 Intra Network 1
意味
出力には、プライマリおよびバックアップ最適ルートリフレクタに割り当てられたメトリックが表示されます。
ルートがルートリフレクタによって最適にアドバタイズされていることを確認します
目的
BGP-ORRルールに従ってルートがアドバタイズされているかどうかを確認します。
アクション
動作モードから、 show route advertising-protocol bgp コマンドを実行します。
user@RR> show route advertising-protocol bgp 192.168.0.1
inet.0: 22 destinations, 23 routes (22 active, 0 holddown, 0 hidden)
Prefix Nexthop MED Lclpref AS path
* 10.10.10.0/24 192.168.0.2 100 I
user@R1> show route 10.10.10.0/24
inet.0: 23 destinations, 24 routes (23 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.10.10.0/24 *[BGP/170] 00:01:38, localpref 100, from 192.168.0.10
AS path: I, validation-state: unverified
> to 10.0.12.2 via ge-0/0/2.0
意味
出力は、RR で BGP ORR が有効になっている場合、デバイス R2 の BGP アドレスがネクストホップとして選択されることを示しています。
RR で BGP ORR 設定を無効にすると、デバイス R3 がデバイス R1 に到達するために選択されたエグレス PE として選択されます。
[edit]
user@RR# show | compare rollback 1
[edit protocols bgp group Client]
! inactive: optimal-route-reflection { ... }
user@R1> show route 10.10.10.0/24
inet.0: 22 destinations, 22 routes (22 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.10.10.0/24 *[BGP/170] 00:00:01, localpref 100, from 192.168.0.10
AS path: I, validation-state: unverified
> to 10.0.13.2 via ge-0/0/3.0
意味
出力は、RR で BGP ORR が非アクティブ化された場合に、デバイス R3 の BGP アドレスがネクストホップとして選択されることを示しています。
すべてのデバイスでコマンドを設定する
この例をすばやく設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、[edit]階層レベルのCLIにコマンドをコピー&ペーストします。
RR
set system host-name RR set system ports console log-out-on-disconnect set interfaces ge-0/0/0 unit 0 description "Connected to R2" set interfaces ge-0/0/0 unit 0 family inet address 10.0.20.1/24 set interfaces ge-0/0/1 unit 0 description "Connected to R3" set interfaces ge-0/0/1 unit 0 family inet address 10.0.30.1/24 set interfaces ge-0/0/2 unit 0 description "Connected to R1" set interfaces ge-0/0/2 unit 0 family inet address 10.0.10.1/24 set interfaces lo0 unit 0 family inet address 192.168.0.10/32 set routing-options router-id 192.168.0.10 set routing-options autonomous-system 65412 set protocols bgp group Client type internal set protocols bgp group Client local-address 192.168.0.10 set protocols bgp group Client family inet unicast set protocols bgp group Client cluster 192.168.0.10 set protocols bgp group Client peer-as 65412 set protocols bgp group Client optimal-route-reflection igp-primary 192.168.0.1 set protocols bgp group Client optimal-route-reflection igp-backup 192.168.0.11 set protocols bgp group Client neighbor 192.168.0.1 set protocols bgp group Client neighbor 192.168.0.2 set protocols bgp group Client neighbor 192.168.0.3 set protocols bgp group Client neighbor 192.168.0.11 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
R1(イングレスPE)
set system host-name R1 set interfaces ge-0/0/0 unit 0 description "Connected to RR" set interfaces ge-0/0/0 unit 0 family inet address 10.0.10.2/24 set interfaces ge-0/0/1 unit 0 description "Connected to R11" set interfaces ge-0/0/1 unit 0 family inet address 10.0.11.1/24 set interfaces ge-0/0/2 unit 0 description "Connected to R2" set interfaces ge-0/0/2 unit 0 family inet address 10.0.12.1/24 set interfaces ge-0/0/3 unit 0 description "Connected to R3" set interfaces ge-0/0/3 unit 0 family inet address 10.0.13.1/24 set interfaces lo0 unit 0 family inet address 192.168.0.1/32 set routing-options router-id 192.168.0.1 set routing-options autonomous-system 65412 set protocols bgp group Client type internal set protocols bgp group Client local-address 192.168.0.1 set protocols bgp group Client family inet unicast set protocols bgp group Client neighbor 192.168.0.10 peer-as 65412 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable set protocols ospf area 0.0.0.0 interface ge-0/0/3.0 metric 100
R2
set system host-name R2 set interfaces ge-0/0/0 unit 0 description "Connected to RR" set interfaces ge-0/0/0 unit 0 family inet address 10.0.20.2/24 set interfaces ge-0/0/1 unit 0 description "Connected to R1" set interfaces ge-0/0/1 unit 0 family inet address 10.0.12.2/24 set interfaces lo0 unit 0 family inet address 192.168.0.2/32 set policy-options policy-statement export-static term 1 from protocol static set policy-options policy-statement export-static term 1 from route-filter 10.10.10.0/24 exact set policy-options policy-statement export-static term 1 then accept set routing-options router-id 192.168.0.2 set routing-options autonomous-system 65412 set routing-options static route 10.10.10.0/24 discard set protocols bgp group Client type internal set protocols bgp group Client local-address 192.168.0.2 set protocols bgp group Client family inet unicast set protocols bgp group Client export export-static set protocols bgp group Client neighbor 192.168.0.10 peer-as 65412 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
R3
set system host-name R3 set interfaces ge-0/0/0 unit 0 description "Connected to RR" set interfaces ge-0/0/0 unit 0 family inet address 10.0.30.2/24 set interfaces ge-0/0/1 unit 0 description "Connected to R1" set interfaces ge-0/0/1 unit 0 family inet address 10.0.13.2/24 set interfaces lo0 unit 0 family inet address 192.168.0.3/32 set policy-options policy-statement export-static term 1 from protocol static set policy-options policy-statement export-static term 1 from route-filter 10.10.10.0/24 exact set policy-options policy-statement export-static term 1 then accept set routing-options router-id 192.168.0.3 set routing-options autonomous-system 65412 set routing-options static route 10.10.10.0/24 discard set protocols bgp group Client type internal set protocols bgp group Client local-address 192.168.0.3 set protocols bgp group Client family inet unicast set protocols bgp group Client export export-static set protocols bgp group Client neighbor 192.168.0.10 peer-as 65412 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
R11
set system host-name R11 set interfaces ge-0/0/0 unit 0 description "Connected to R1" set interfaces ge-0/0/0 unit 0 family inet address 10.0.11.2/24 set interfaces lo0 unit 0 family inet address 192.168.0.11/32 set routing-options router-id 192.168.0.11 set routing-options autonomous-system 65412 set protocols bgp group Client type internal set protocols bgp group Client local-address 192.168.0.11 set protocols bgp group Client family inet unicast set protocols bgp group Client neighbor 192.168.0.10 peer-as 65412 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
すべてのデバイスでshow configuration output
RR およびその他のデバイスでコマンド出力を表示します。
RR
interfaces {
ge-0/0/0 {
unit 0 {
description "Connected to R2";
family inet {
address 10.0.20.1/24;
}
}
}
ge-0/0/1 {
unit 0 {
description "Connected to R3";
family inet {
address 10.0.30.1/24;
}
}
}
ge-0/0/2 {
unit 0 {
description "Connected to R1";
family inet {
address 10.0.10.1/24;
}
}
}
lo0 {
unit 0 {
family inet {
address 192.168.0.10/32;
}
}
}
}
routing-options {
router-id 192.168.0.10;
autonomous-system 65412;
}
protocols {
bgp {
group Client {
type internal;
local-address 192.168.0.10;
family inet {
unicast;
}
cluster 192.168.0.10;
peer-as 65412;
optimal-route-reflection {
igp-primary 192.168.0.1;
igp-backup 192.168.0.11;
}
neighbor 192.168.0.1;
neighbor 192.168.0.2;
neighbor 192.168.0.3;
neighbor 192.168.0.11;
}
}
ospf {
area 0.0.0.0 {
interface all;
interface fxp0.0 {
disable;
}
}
}
}
イングレスデバイスR1
R1
interfaces {
ge-0/0/0 {
unit 0 {
description "Connected to RR";
family inet {
address 10.0.10.2/24;
}
}
}
ge-0/0/1 {
unit 0 {
description "Connected to R11";
family inet {
address 10.0.11.1/24;
}
}
}
ge-0/0/2 {
unit 0 {
description "Connected to R2";
family inet {
address 10.0.12.1/24;
}
}
}
ge-0/0/3 {
unit 0 {
description "Connected to R3";
family inet {
address 10.0.13.1/24;
}
}
}
lo0 {
unit 0 {
family inet {
address 192.168.0.1/32;
}
}
}
}
routing-options {
router-id 192.168.0.1;
autonomous-system 65412;
}
protocols {
bgp {
group Client {
type internal;
local-address 192.168.0.1;
family inet {
unicast;
}
neighbor 192.168.0.10 {
peer-as 65412;
}
}
}
ospf {
area 0.0.0.0 {
interface all;
interface fxp0.0 {
disable;
}
interface ge-0/0/3.0 {
metric 100;
}
}
}
}
デバイスR2
R2
interfaces {
ge-0/0/0 {
unit 0 {
description "Connected to RR";
family inet {
address 10.0.20.2/24;
}
}
}
ge-0/0/1 {
unit 0 {
description "Connected to R1";
family inet {
address 10.0.12.2/24;
}
}
}
lo0 {
unit 0 {
family inet {
address 192.168.0.2/32;
}
}
}
}
policy-options {
policy-statement export-static {
term 1 {
from {
protocol static;
route-filter 10.10.10.0/24 exact;
}
then accept;
}
}
}
routing-options {
router-id 192.168.0.2;
autonomous-system 65412;
static {
route 10.10.10.0/24 discard;
}
}
protocols {
bgp {
group Client {
type internal;
local-address 192.168.0.2;
family inet {
unicast;
}
export export-static;
neighbor 192.168.0.10 {
peer-as 65412;
}
}
}
ospf {
area 0.0.0.0 {
interface all;
interface fxp0.0 {
disable;
}
}
}
}
デバイスR3
R3
interfaces {
ge-0/0/0 {
unit 0 {
description "Connected to RR";
family inet {
address 10.0.30.2/24;
}
}
}
ge-0/0/1 {
unit 0 {
description "Connected to R1";
family inet {
address 10.0.13.2/24;
}
}
}
lo0 {
unit 0 {
family inet {
address 192.168.0.3/32;
}
}
}
}
policy-options {
policy-statement export-static {
term 1 {
from {
protocol static;
route-filter 10.10.10.0/24 exact;
}
then accept;
}
}
}
routing-options {
router-id 192.168.0.3;
autonomous-system 65412;
static {
route 10.10.10.0/24 discard;
}
}
protocols {
bgp {
group Client {
type internal;
local-address 192.168.0.3;
family inet {
unicast;
}
export export-static;
neighbor 192.168.0.10 {
peer-as 65412;
}
}
}
ospf {
area 0.0.0.0 {
interface all;
interface fxp0.0 {
disable;
}
}
}
}
デバイスR11
R11
interfaces {
ge-0/0/0 {
unit 0 {
description "Connected to R1";
family inet {
address 10.0.11.2/24;
}
}
}
lo0 {
unit 0 {
family inet {
address 192.168.0.11/32;
}
}
}
}
routing-options {
router-id 192.168.0.11;
autonomous-system 65412;
}
protocols {
bgp {
group Client {
type internal;
local-address 192.168.0.11;
family inet {
unicast;
}
neighbor 192.168.0.10 {
peer-as 65412;
}
}
}
ospf {
area 0.0.0.0 {
interface all;
interface fxp0.0 {
disable;
}
}
}
}