はじめに
このドキュメントでは、Border Gateway Protocol(BGP)でのAccumulated Interior Gateway Protocol(AIGP)メトリックとその使用例について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- BGP
- シームレスなマルチプロトコルラベルスイッチング(MPLS)ネットワーク
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。稼働中のネットワークで作業を行う場合、コマンドの影響について十分に理解したうえで作業してください。
背景説明
このセクションでは、AIGPメトリックの概要と、その使用に関する重要な考慮事項について説明します。
ご存知のように、IGPはInterior Gateway Protocol(内部ゲートウェイプロトコル)の略で、単一の管理ドメイン内で動作するルーティングプロトコルのグループを表します。IGPは、メトリック値に基づいてパス選択を決定します。
BGPは、多数の独立した自律システム(AS)を介したルーティングを提供するように設計されており、各管理装置間の調整は限られているか、まったくありません。メトリックを使用してパス選択の決定を行いません。ただし、1つの管理で複数の連続したBGPネットワークを実行する展開もあります。このような場合、BGPがIGPと同様にメトリックに基づいてパスを選択することは、その単一の管理ドメイン内で望ましい場合があります。
累積Interior Gateway Protocol属性
AIGPメトリック(RFC7311で定義)は、オプションの非推移的BGPパス属性です。AIGP属性の値フィールドは、Type/Length/Value要素(TLV)のセットとして定義されます。BGP AIGP TLVには、累積IGPメトリックが含まれます。
注:オプションの非推移的なアトリビュート(AIGPなど)をサポートしていないBGPルータは、このようなアトリビュートを削除して、他のBGPピアに渡さないようにする必要があります。AIGPメトリックは、完全に異なる自律システム間(内部AS境界を越えるだけ)での推移的なものではありません。
使用例
1. マルチASNネットワーク
現在では、単一の管理ドメイン内に多数のネットワークがあり、さまざまな理由から複数のASNに分割されています。これには多くの理由が考えられます。
- IGPスケール
- あるプロバイダーネットワークは別のネットワークプロバイダーが購入しましたが、まだ内部でBGP ASNをマージしていません
- ビジネス部門ごとに個別のネットワークが内部に存在する
- サブASとのBGPコンフェデレーション
- シームレスMPLSなど
このようなネットワークでは、BGPがIGPメトリックに基づいて決定を行い、ノードが2つの異なるASNにある場合でも、BGPが2つのノード間で最短のエンドツーエンドのパスを選択できるようにしておくと役立ちます。
たとえば、ABCネットワークは、ASN 1とASN 2の2つのBGP ASNに分割されます。これらはASBRでピアリングしており、リンクIGPコストは帯域幅を表しています。ここでの目標は、PE11とPE21の間にエンドツーエンドの最適なパスを確立することです。
マルチASNネットワーク(AIGPなし)
注:
- RR1/2でAdd-pathが有効になっていて、PExに向けて両方のNHをアドバタイズすると仮定します。
- 前述のシナリオで使用されているデバイスはすべてCisco IOS-XEで動作します。
PE11#sh bgp ipv4 unicast 10.0.21.21/32
BGP routing table entry for 10.0.21.21/32, version 20
Paths: (2 available, best #2, table default)
Not advertised to any peer
Refresh Epoch 3
2
192.168.0.12 (metric 211) from 192.168.11.11 (192.168.11.11)
Origin IGP, metric 0, localpref 100, valid, internal
Originator: 192.168.0.12, Cluster list: 192.168.11.11
rx pathid: 0x1, tx pathid: 0
Refresh Epoch 3
2
192.168.0.11 (metric 201) from 192.168.11.11 (192.168.11.11)
Origin IGP, metric 0, localpref 100, valid, internal, best
Originator: 192.168.0.11, Cluster list: 192.168.11.11
rx pathid: 0x0, tx pathid: 0x0
トポロジ(PE11、PE32、ASBR1x、ASBR2x、RR1、RR2上)でAiGPが有効になっている場合、PE11はエンドツーエンドIGPコストが最も低いパスを選択します。
AIGPを使用したマルチASNネットワーク
コンフィギュレーション
PEx、ASBRx、RRn:
AIGP機能設定:
router bgp ASN
neighbor <NBR_IP> aigp
!
注:BGPピアリングがドロップし、再確立されて、この新しい機能がネゴシエートされます。そのため、メンテナンス時間帯に実行することをお勧めします。
プレフィクスのAIGPメトリックをアドバタイズします。
PE21:
route-map SET_AIGP permit 10
set aigp-metric igp-metric
!
router bgp 2
address-family {ipv4|ipv6} unicast
network 10.0.21.21 mask 255.255.255.255 route-map SET_AIGP
!
検証
PE11#sh bgp ipv4 unicast 10.0.21.21/32
BGP routing table entry for 10.0.21.21/32, version 21
Paths: (2 available, best #2, table default)
Not advertised to any peer
Refresh Epoch 3
2
192.168.0.11 (metric 201) from 192.168.11.11 (192.168.11.11)
Origin IGP, aigp-metric 501, metric 0, localpref 100, valid, internal
Originator: 192.168.0.11, Cluster list: 192.168.11.11
rx pathid: 0x1, tx pathid: 0
Refresh Epoch 3
2
192.168.0.12 (metric 211) from 192.168.11.11 (192.168.11.11)
Origin IGP, aigp-metric 201, metric 0, localpref 100, valid, internal, best
Originator: 192.168.0.12, Cluster list: 192.168.11.11
rx pathid: 0x0, tx pathid: 0x0
2. シームレスMPLS(シングルASN)
大規模なサービスプロバイダーのコアネットワークでは、通常、トランスポートネットワークを複数の異なるIGPドメインに分割し、BGPラベル付きユニキャストを使用してつなぎ合わせ、エンドツーエンドのラベル付きスイッチドパス(LSP)を提供します。境界ルータは、BGP LU AFでネクストホップ自身(NHS)を実行します。
IGP/LDPは、ローカルエリアまたはドメイン内でのみプレフィックスまたはラベル情報を伝送します。次に、BGPはエリア境界でルートをBGPに再配布することにより、すべてのリモートエリア/ドメインにプレフィックス/ラベルを伝送します。その後、LSPを使用してルート/ラベルがアドバタイズされます。ルートのネクストホップは、各ABRからローカルルータに向かって変更されるため、エリアやドメインの境界を越えてIGPルートをリークする必要がなくなります。
このトポロジ図では、2つのIGPドメイン(COREおよびAccess-1)に分割された単一のBGPドメインがあります。各リンクの横に表示される数字は、そのリンクのIGPコスト/メトリックを表します。
AIGPを使用しないシームレスなMPLSネットワーク
課題:PS-Core(CSR15に接続)からeNB/gNB(CSR15に接続)へのダウンワードトラフィックは、eNB/gNB(CSR15に接続)からPS-Coreへの上向きトラフィックに比べて非対称で最適でないパスを通っているため、モビリティトラフィックで遅延の問題が発生しています。
観察
- 主に、同じ集約ルータが複数のアクセスドメインの共通の境界ルータとして機能する地理的境界シナリオで見られます(前述の図のAGG102など)。
- 上りトラフィックには、セルサイトルータ(CSR)ルータが最も近い境界ルータを選択します。たとえば、CSR15はAGG102をネクストホップとして選択します。
- 下方へのトラフィックに対しては、サービス集約ルータ(SAR)は最も近い境界ルータも選択します。たとえば、SAR150ではAGG101(コスト180 < 200)が選択されます。
デバイスログ – 初期
アップストリームトラフィック:SAR150へのCSR15
RP/0/0/CPU0:CSR15#traceroute mpls ipv4 10.0.2.150/32 so 10.0.2.15
Tracing MPLS Label Switched Path to 10.0.2.150/32, timeout is 2 seconds
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no rx label,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
0 10.15.102.15 MRU 1500 [Labels: explicit-null/16150 Exp: 0/0]
L 1 10.15.102.102 MRU 1500 [Labels: 16150 Exp: 0] 0 ms !!!! AGG102
. 2 * !!!! P112 does not have a route to CSR15
! 3 10.112.150.150 20 ms !!!! SAR150
ダウンストリームトラフィック – SAR150からCSR15
RP/0/0/CPU0:SAR150#traceroute mpls ipv4 10.0.2.15/32 source 10.0.2.150
Tracing MPLS Label Switched Path to 10.0.2.15/32, timeout is 2 seconds
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no rx label,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
0 10.101.150.150 MRU 1500 [Labels: explicit-null/16015 Exp: 0/0]
L 1 10.101.150.101 MRU 1500 [Labels: 16015 Exp: 0] 10 ms !!! AGG101
L 2 10.11.101.11 MRU 1500 [Labels: 16015 Exp: 0] 10 ms !!! CSR11
L 3 10.11.12.12 MRU 1500 [Labels: 16015 Exp: 0] 10 ms !!! CSR12
L 4 10.12.13.13 MRU 1500 [Labels: 16015 Exp: 0] 20 ms !!! CSR13
L 5 10.13.14.14 MRU 1500 [Labels: explicit-null Exp: 0] 30 ms !!! CSR14
! 6 10.14.15.15 30 ms !!! CSR15
AIGPソリューション
ここでの目標は、SARルータとCSRルータの間にエンドツーエンドの最適なパスを確立することです。SARルータからCSRルータまでの距離の計算には、BGPラベル付きユニキャスト(RFC 3107)が使用されています。各コアリンクで使用可能な帯域幅はIGPコストにマッピングされるため、BGPは各PE間でこのコストを正しく伝送する必要があります。この機能は、AiGPを使用して実現されます。
AIGPを使用したシームレスMPLSネットワークAIGPを使用したシームレスMPLSネットワーク
注:
- RR1/2、AGG、CSR、およびSARデバイスでAdd-pathが有効になっていて、両方のNHをアドバタイズすると仮定します。
- 前述のシナリオで使用されているすべてのデバイスは、Cisco IOS-XRベースです。
コンフィギュレーション
AiGPパスアトリビュート機能は、BGPピア間で合意されている必要があります。AiGPメトリックは、AiGP対応ピア間のプレフィックスアドバタイズメントにのみ含まれます。 AIGP機能は、個々のBGPピアと特定のBGPアドレスファミリに対して設定されます。
router bgp ASN
neighbor <NBR_IP>
address-family ipv4 unicast
aigp [disable]
AIGPメトリックは32ビット(0 ~ 4,294,967,295)の値です。これは、再配布中、network文を介したルート発信中、またはルートマップ/ルートポリシーを使用したプレフィクスの受信中に設定できます。
route-policy AIGP_POLICY
set aigp-metric igp-cost
end-policy
!
router bgp ASN
address-family {ipv4|ipv6} unicast
network <NETWORK/MASK> route-policy AIGP_POLICY
or
redistribute {ospf|isis} {process-id} route-policy AIGP_POLICY metric VALUE
!
注:
- 再配布されたルートの場合、AiGPアトリビュートに割り当てられた値は、ルートへのiGPネクストホップの値、またはルートポリシーによって設定された値です。
- BGPに再配布されるスタティックルートでは、割り当てられる値は、ルートへのネクストホップの値か、ルートポリシーによって設定された値になります。
- ルートはnetwork文を通じてBGPにインポートされます。割り当てられる値は、ルートへのネクストホップの値、またはルートポリシーによって設定された値です。
サンプル コンフィギュレーション
CSR15:
! Additional config lines related to AIGP are marked in RED color
route-policy SID($SID)
set label-index $SID
set aigp-metric igp-cost
end-policy
!
router bgp 1
address-family ipv4 unicast
network 10.0.2.15/32 route-policy SID(15)
neighbor-group RR
address-family ipv4 labeled-unicast
aigp
!
!
!
注:すべてのBGPピアリングデバイスで同様の設定が行われています。
デバイスログ:AIGP実装後
ダウンストリームトラフィック – SAR150からCSR15
RP/0/0/CPU0:SAR150#sh bgp ipv4 labeled-unicast 10.0.2.15/32
BGP routing table entry for 10.0.2.15/32
Versions:
Process bRIB/RIB SendTblVer
Speaker 411 411
Local Label: 16015
Last Modified: Oct 24 11:05:26.796 for 00:00:04
Paths: (2 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
Local
10.0.2.102 (metric 200) from 10.0.2.100 (10.0.2.15)
Received Label 16015
Origin IGP, metric 0, localpref 100, aigp metric 20, valid, internal, best, group-best, labeled-unicast
Received Path ID 1, Local Path ID 1, version 410
Originator: 10.0.2.15, Cluster list: 10.0.2.100, 10.0.2.102
Total AIGP metric 220
Label-Index: 15
Path #2: Received by speaker 0
Not advertised to any peer
Local
10.0.2.101 (metric 180) from 10.0.2.100 (10.0.2.15)
Received Label 16015
Origin IGP, metric 0, localpref 100, aigp metric 60, valid, internal, backup, add-path, labeled-unicast
Received Path ID 8, Local Path ID 7, version 411
Originator: 10.0.2.15, Cluster list: 10.0.2.100, 10.0.2.101
Total AIGP metric 240
Label-Index: 15
RP/0/0/CPU0:SAR150#traceroute mpls ipv4 10.0.2.15/32 so 10.0.2.150
Tracing MPLS Label Switched Path to 10.0.2.15/32, timeout is 2 seconds
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no rx label,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
0 10.112.150.150 MRU 1500 [Labels: 16102/16015 Exp: 0/0]
L 1 10.112.150.112 MRU 1500 [Labels: explicit-null/16015 Exp: 0/0] 10 ms !!! P112
L 2 10.102.112.102 MRU 1500 [Labels: explicit-null Exp: 0] 10 ms !!! AGG102
! 3 10.15.102.15 20 ms !!! CSR15
アップストリームトラフィック:SAR150へのCSR15
RP/0/0/CPU0:CSR15#traceroute mpls ipv4 10.0.2.150/32 source 10.0.2.15
Tracing MPLS Label Switched Path to 10.0.2.150/32, timeout is 2 seconds
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no rx label,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
0 10.15.102.15 MRU 1500 [Labels: explicit-null/16150 Exp: 0/0]
L 1 10.15.102.102 MRU 1500 [Labels: 16150 Exp: 0] 10 ms !!! AGG102
. 2 * !!! P112 does not have a route to CSR15
! 3 10.112.150.150 30 ms !!! SAR150
考慮事項
- IGPコストの変更(リンクカットなどによる物理トポロジの変更など)に伴い、BGPでも対応する変更が発生します。これにより、BGPルートのチャーンが発生する可能性があります。このコンバージェンスは、重大ではないイベントに対して設定されているBGPネクストホップトリガーの遅延値によっても異なります。
- AiGPの導入により、BGPのベストパス選択が変更されます。BGP AIGPをBGPローカルプリファレンスの後、AS_PATHアトリビュートの前に配置するそのため、AS_PATHプリペンドに関する既存のポリシーがある場合、それらのポリシーを再検討する必要があります。
- AIGPメトリックを持つパスと持たないパスの2つのパスがある場合、BGPは常にAIGPメトリックを持つパスを優先します。
AIGPを無視
Border Gateway Protocol(BGP;ボーダーゲートウェイプロトコル)を実行しているデバイスでも、2つのパス間の最適パス選択プロセスでAIGPメトリックを無視するように設定できます。この場合、一方のパスにAIGPメトリックがない必要があります。ルータコンフィギュレーションモードでbgp bestpath aigp ignoreコマンドを使用する。デバイスをデフォルトの動作に戻すには、このコマンドのno形式を使用します。
[no] bgp bestpath aigp ignore
デフォルトでは、BGPは常にAIGPメトリックを持つパスを優先します。AIGPメトリックがあるパスとAIGPメトリックがないパスの2つのパスが存在する場合にbgp bestpath aigp ignoreコマンドを実行すると、どちらのパスにもAIGPメトリックがない場合と同様に、BGPでベストパスの計算が実行されます。
結論
BGP AIGP属性は、特定のニッチなユースケースを解決するために開発されていますが、慎重に使用する必要があります。
関連情報