セグメントルーティング
Juniper Cloud-Native Routerは、セグメントルーティング(SR-MPLSおよびSRv6)をサポートしています。このトピックを読んで、サポートされている機能を理解してください。
セグメントルーティング(SR)は、ソースルーティングの最新の変種で、中間ルーターからネットワーク状態情報を削除し、代わりに転送プレーンのパケットヘッダーにパス状態情報を追加することで、ネットワークを簡素化します。パケットがSR ingressノードに到着すると、ingressノードはパケットにポリシーを適用します。ポリシーは、パケットを宛先へのSRパスに関連付けます。SRパスは、SR ingressノードをSR egressノードに接続するセグメントの順序指定済みリストです。この SR パスは、リンク帯域幅、最小パス遅延など、さまざまな制約を満たすように設計できます。
セグメントルーティングでは、転送プレーンでMPLSまたはIPv6のいずれかを活用できます。セグメントルーティングでMPLS転送プレーンを使用する場合、SR-MPLSと呼ばれます。SR-MPLS は、IPv4 と IPv6 の両方のアンダーレイをサポートします。セグメントルーティングがIPv6転送プレーンを活用する場合、SRv6と呼ばれます。詳細については、 SR-MPLS Day One Book および SRv6 Day One Book をご覧ください。
セグメントルーティングは、次世代のネットワーク機能仮想化(NFV)ベースのTelcoクラウド、5G、クラウドWAN、およびコンテンツ配信ネットワーク(CDN)のデータセンターを相互接続するためのトランスポートトンネリング技術として使用できます。以下のユースケースにおいて、複数のメリットが期待できます。
-
トラフィックエンジニアリング:セグメントルーティングは、ネットワークの状態に基づいてトラフィックを効率的かつ動的に誘導し、ロードバランシング、混雑の回避、帯域幅の利用効率の向上を可能にします。その結果、ネットワークパフォーマンスとユーザーエクスペリエンスが向上します。
-
ネットワークスライシング:セグメントルーティングは、異なるサービスやテナントを同じ物理インフラ上で共存させることで、仮想化されたネットワークスライスを作成します。各ネットワークスライスに固有の転送ポリシーとリソースを設定することができるため、多様なアプリケーションに対して分離と柔軟性を高めることができます。
-
サービス機能チェイニング:セグメントルーティングにより、パケットがファイアウォールやロードバランシングなどのネットワークサービスのシーケンスを通過する、柔軟で動的なサービス機能チェイニングが可能になります。パケットフローの特定パスを定義することで、サービスの導入を簡素化し、オンデマンドのサービスチェイニングを可能にします。
-
モバイルネットワーク— セグメントルーティングは、効率的なパス選択と低遅延を可能にすることで、モバイルネットワークのトラフィックルーティングとハンドオーバー手順を最適化します。
SR-MPLS
Cloud-Native Routerは、IPv4とIPv6の両方のアンダーレイでSR-MPLSをサポートしています。Cloud-Native Routerは、SR-MPLSネットワークに送信ルーター、受信ルーター、トランジットルーターとして参加できます。最後から2番目のホップポッピング(PHP)の有無、オーバーレイECMP、および明示的/暗黙的なNULLの有無にかかわらず、SR-MPLSの実装をサポートします。セグメントルーティング フレキシブルアルゴリズム (Flex-Algo)は、Cloud-Native Routerリリース24.1以降でサポートされています。詳細については、 セグメントルーティング(IS-IS) を参照してください。
JCNR での SR-MPLS の設定
次のトポロジーについて考えてみます。
このネットワークでルーティングをセグメント化しますPE1はイングレスCloud-Native Routerノード、PはトランジットCloud-Native Routerノード、PE2はegress Cloud-Native Routerノードです。すべてのノードに共通のセグメントルーティンググローバルブロック(SRGB)範囲を設定します。すべてのノードには、IPv4 と IPv6 の両方のセグメント ID(ノード SID)が割り当てられます。
コンフィグレットリソースを使用して、cRPDポッドを設定します。
- Cloud-Native Router Ingress(PE1)設定
- Cloud-Native Routerトランジット(P)設定
- Cloud-Native Router Egress(PE2)設定
- JCNRでのSR-MPLS設定の検証
- Cloud-Native Router転送プレーンでの設定の確認
Cloud-Native Router Ingress(PE1)設定
以下の設定で、Cloud-Native Router Ingress(PE1)ルーターを設定します。
インターフェイスを設定します。
set interfaces ens192 unit 0 family inet address 172.16.0.11/24 set interfaces ens192 unit 0 family inet6 address 172::11/64 set interfaces ens192 unit 0 family iso set interfaces ens192 unit 0 family mpls set interfaces lo0 unit 0 family inet address 192.168.1.11/32 set interfaces lo0 unit 0 family inet6 address 192::11/128 set interfaces lo0 unit 0 family iso address 49.0002.0190.0160.0019.00 set interfaces lo0 unit 0 family mpls
IS-IS を設定します。
set protocols isis interface ens192 set protocols isis interface lo0.0 set protocols isis level 1 disable
ルーティングオプションを設定します。
set routing-options route-distinguisher-id 192.168.1.11 set routing-options router-id 192.168.1.11 set routing-options autonomous-system 64512
インターフェイスにMPLSプロトコルを設定します。
set protocols mpls ipv6-tunneling set protocols mpls interface ens192 set protocols mpls interface lo0.0
BGP ネイバーを設定します。
set protocols bgp group sr_mpls type internal set protocols bgp group sr_mpls multihop set protocols bgp group sr_mpls local-address 192.168.1.11 set protocols bgp group sr_mpls family inet-vpn unicast set protocols bgp group sr_mpls family inet6-vpn unicast set protocols bgp group sr_mpls local-as 64512 set protocols bgp group sr_mpls neighbor 192.168.3.13
SRGBの開始ラベルとインデックス範囲を設定します。
set protocols isis source-packet-routing srgb start-label 16000 set protocols isis source-packet-routing srgb index-range 23999
IPv4 および IPv6 ノード セグメント ID を設定します。
set protocols isis source-packet-routing node-segment ipv4-index 11 set protocols isis source-packet-routing node-segment ipv6-index 111
必要に応じて、明示的な null ラベルを設定します。
set protocols isis source-packet-routing explicit-null
Cloud-Native Routerトランジット(P)設定
Cloud-Native Router トランジット(P)ルーターを以下の設定で設定します。
インターフェイスを設定します。
set interfaces ens192 unit 0 family inet address 172.16.0.12/24 set interfaces ens192 unit 0 family inet6 address 172::12/64 set interfaces ens192 unit 0 family iso set interfaces ens192 unit 0 family mpls set interfaces ens224 unit 0 family inet address 172.16.1.12/24 set interfaces ens224 unit 0 family inet6 address 172::112/64 set interfaces ens224 unit 0 family iso set interfaces ens224 unit 0 family mpls set interfaces lo0 unit 0 family inet address 192.168.2.12/32 set interfaces lo0 unit 0 family inet6 address 192::12/128 set interfaces lo0 unit 0 family iso address 49.0002.0190.0160.0020.00 set interfaces lo0 unit 0 family mpls
IS-IS を設定します。
set protocols isis interface ens192 set protocols isis interface ens224 set protocols isis interface lo0.0 set protocols isis level 1 disable
ルーティングオプションを設定します。
set routing-options route-distinguisher-id 192.168.2.12 set routing-options router-id 192.168.2.22 set routing-options autonomous-system 64512
インターフェイスにMPLSプロトコルを設定します。
set protocols mpls interface ens192 set protocols mpls interface lo0.0 set protocols mpls interface ens224
SRGBの開始ラベルとインデックス範囲を設定します。
set protocols isis source-packet-routing srgb start-label 16000 set protocols isis source-packet-routing srgb index-range 23999
IPv4 および IPv6 ノード セグメント ID を設定します。
set protocols isis source-packet-routing node-segment ipv4-index 11 set protocols isis source-packet-routing node-segment ipv6-index 111
Cloud-Native Router Egress(PE2)設定
以下の設定で、Cloud-Native Router Egress(PE2)ルーターを設定します。
インターフェイスを設定します。
set interfaces ens192 unit 0 family inet address 172.16.1.13/24 set interfaces ens192 unit 0 family inet6 address 172::13/64 set interfaces ens192 unit 0 family iso set interfaces ens192 unit 0 family mpls set interfaces lo0 unit 0 family inet address 192.168.3.13/32 set interfaces lo0 unit 0 family inet6 address 192::13/128 set interfaces lo0 unit 0 family iso address 49.0002.0190.0160.0021.00 set interfaces lo0 unit 0 family mpls
IS-IS を設定します。
set protocols isis interface ens192 set protocols isis interface lo0.0 set protocols isis level 1 disable
ルーティングオプションを設定します。
set routing-options route-distinguisher-id 192.168.3.13 set routing-options router-id 192.168.3.13 set routing-options autonomous-system 64512
インターフェイスにMPLSプロトコルを設定します。
set protocols mpls ipv6-tunneling set protocols mpls interface ens192 set protocols mpls interface lo0.0
BGP ネイバーを設定します。
set protocols bgp group sr_mpls type internal set protocols bgp group sr_mpls multihop set protocols bgp group sr_mpls local-address 192.168.3.13 set protocols bgp group sr_mpls family inet-vpn unicast set protocols bgp group sr_mpls family inet6-vpn unicast set protocols bgp group sr_mpls local-as 64512 set protocols bgp group sr_mpls neighbor 192.168.1.11
SRGBの開始ラベルとインデックス範囲を設定します。
set protocols isis source-packet-routing srgb start-label 16000 set protocols isis source-packet-routing srgb index-range 23999
IPv4 および IPv6 ノード セグメント ID を設定します。
set protocols isis source-packet-routing node-segment ipv4-index 13 set protocols isis source-packet-routing node-segment ipv6-index 113
必要に応じて、明示的な null ラベルを設定します。
set protocols isis source-packet-routing explicit-null
JCNRでのSR-MPLS設定の検証
次のコマンドを使用して、 cRPDのSRv6設定を確認できます。
user@pe1> show isis database detail
IS-IS level 1 link-state database:
IS-IS level 2 link-state database:
pe1.00-00 Sequence: 0x125, Checksum: 0xce5c, Lifetime: 590 secs
IPV4 Index: 11, IPV6 Index: 111
Node Segment Blocks Advertised:
Start Index : 0, Size : 23999, Label-Range: [ 16000, 39998 ]
IS neighbor: node2.02 Metric: 10
LAN IPv4 Adj-SID: 16, Weight: 0, Neighbor: node3, Flags: --VL--
LAN IPv6 Adj-SID: 17, Weight: 0, Neighbor: node3, Flags: F-VL--
IP prefix: 172.16.0.0/24 Metric: 10 Internal Up
IP prefix: 192.168.1.11/32 Metric: 0 Internal Up
V6 prefix: 172::/64 Metric: 10 Internal Up
V6 prefix: 192::11/128 Metric: 0 Internal Up
V6 prefix: fe80::50c8:9dff:fee2:4655/128 Metric: 0 Internal Up
pe1.02-00 Sequence: 0x11f, Checksum: 0x4305, Lifetime: 468 secs
IS neighbor: node2.00 Metric: 0
IS neighbor: node3.00 Metric: 0
p.00-00 Sequence: 0x83, Checksum: 0xcd5e, Lifetime: 506 secs
IPV4 Index: 12, IPV6 Index: 112
Node Segment Blocks Advertised:
Start Index : 0, Size : 23999, Label-Range: [ 16000, 39998 ]
IS neighbor: node2.02 Metric: 10
LAN IPv4 Adj-SID: 16, Weight: 0, Neighbor: node2, Flags: --VL--
LAN IPv6 Adj-SID: 17, Weight: 0, Neighbor: node2, Flags: F-VL--
IS neighbor: node3.02 Metric: 10
LAN IPv4 Adj-SID: 20, Weight: 0, Neighbor: node4, Flags: --VL--
LAN IPv6 Adj-SID: 21, Weight: 0, Neighbor: node4, Flags: F-VL--
IP prefix: 172.16.0.0/24 Metric: 10 Internal Up
IP prefix: 172.16.1.0/24 Metric: 10 Internal Up
IP prefix: 192.168.2.12/32 Metric: 0 Internal Up
V6 prefix: 172::/64 Metric: 10 Internal Up
V6 prefix: 192::12/128 Metric: 0 Internal Up
V6 prefix: fe80::50e4:70ff:fe46:76dd/128 Metric: 0 Internal Up
p.02-00 Sequence: 0x78, Checksum: 0xf2e5, Lifetime: 1156 secs
IS neighbor: node3.00 Metric: 0
IS neighbor: node4.00 Metric: 0
pe2.00-00 Sequence: 0x76, Checksum: 0xb5bf, Lifetime: 644 secs
IPV4 Index: 13, IPV6 Index: 113
Node Segment Blocks Advertised:
Start Index : 0, Size : 23999, Label-Range: [ 16000, 39998 ]
IS neighbor: node3.02 Metric: 10
LAN IPv4 Adj-SID: 16, Weight: 0, Neighbor: node3, Flags: --VL--
LAN IPv6 Adj-SID: 17, Weight: 0, Neighbor: node3, Flags: F-VL--
IP prefix: 172.16.1.0/24 Metric: 10 Internal Up
IP prefix: 192.168.3.13/32 Metric: 0 Internal Up
V6 prefix: 172::/64 Metric: 10 Internal Up
V6 prefix: 192::13/128 Metric: 0 Internal Up
V6 prefix: fe80::3c1e:39ff:fe28:1a8a/128 Metric: 0 Internal Up
user@pe1> show route table inet.3
inet.3: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
192.168.2.12/32 *[L-ISIS/14] 1d 01:20:51, metric 10
> to 172.16.0.12 via ens192
192.168.3.13/32 *[L-ISIS/14] 1d 00:59:01, metric 20
> to 172.16.0.12 via ens192, Push 16013
user@p> show route table mpls.0
mpls.0: 20 destinations, 20 routes (20 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
0 *[MPLS/0] 1d 02:05:44, metric 1
Receive
1 *[MPLS/0] 1d 02:05:44, metric 1
Receive
2 *[MPLS/0] 1d 02:05:44, metric 1
Receive
13 *[MPLS/0] 1d 02:05:44, metric 1
Receive
16 *[L-ISIS/14] 1d 01:12:40, metric 0
> to 172.16.0.11 via ens192, Pop
16(S=0) *[L-ISIS/14] 1d 01:12:40, metric 0
> to 172.16.0.11 via ens192, Pop
17 *[L-ISIS/14] 1d 01:12:40, metric 0
> to fe80::250:56ff:fea9:5f96 via ens192, Pop
17(S=0) *[L-ISIS/14] 1d 01:12:40, metric 0
> to fe80::250:56ff:fea9:5f96 via ens192, Pop
20 *[L-ISIS/14] 1d 01:13:06, metric 0
> to 172.16.1.13 via ens224, Pop
20(S=0) *[L-ISIS/14] 1d 01:13:06, metric 0
> to 172.16.1.13 via ens224, Pop
21 *[L-ISIS/14] 1d 01:13:06, metric 0
> to fe80::250:56ff:fea9:5dc via ens224, Pop
21(S=0) *[L-ISIS/14] 1d 01:13:06, metric 0
> to fe80::250:56ff:fea9:5dc via ens224, Pop
16011 *[L-ISIS/14] 1d 01:00:38, metric 10
> to 172.16.0.11 via ens192, Swap 0
16011(S=0) *[L-ISIS/14] 1d 01:12:40, metric 10
> to 172.16.0.11 via ens192, Pop
16013 *[L-ISIS/14] 1d 01:00:24, metric 10
> to 172.16.1.13 via ens224, Swap 0
16013(S=0) *[L-ISIS/14] 1d 01:12:57, metric 10
> to 172.16.1.13 via ens224, Pop
16111 *[L-ISIS/14] 1d 01:00:38, metric 10
> to fe80::250:56ff:fea9:5f96 via ens192, Swap 2
16111(S=0) *[L-ISIS/14] 1d 01:12:40, metric 10
> to fe80::250:56ff:fea9:5f96 via ens192, Pop
16113 *[L-ISIS/14] 1d 01:00:24, metric 10
> to fe80::250:56ff:fea9:5dc via ens224, Swap 2
16113(S=0) *[L-ISIS/14] 1d 01:12:57, metric 10
> to fe80::250:56ff:fea9:5dc via ens224, Pop
Cloud-Native Router転送プレーンでの設定の確認
各 PE ノードで vRouter を経由するトラフィック フローを確認します。
user@pe1# mpls --dump
MPLS Input Label Map
Label NextHop
-------------------
0 26
1 26
2 26
13 26
16 27
17 28
16012 27
16013 29
16112 28
16113 30
user@pe1# mpls --get 16013 MPLS Input Label Map Label NextHop ------------------- 16013 29
user@pe1# nh --get 29
Id:29 Type:Tunnel Fmly: AF_MPLS Rid:0 Ref_cnt:2 Vrf:0
Flags:Valid, Policy, Etree Root, MPLS,
Oif:1 Len:14 Data:00 50 56 a9 10 fa 00 50 56 a9 5f 96 88 47 Number of Transport Labels:1 Transport Labels:16013,
user@pe1# mpls --get 16
MPLS Input Label Map
Label NextHop
-------------------
16 27
user@pe1# nh --get 27
Id:27 Type:Encap Fmly:AF_INET/6 Rid:0 Ref_cnt:6 Vrf:0
Flags:Valid, Policy, Etree Root,
EncapFmly:0806 Oif:1 Len:14
Encap Data: 00 50 56 a9 10 fa 00 50 56 a9 5f 96
SRv6
SRv6 は、SRH(セグメントルーティング ヘッダー)と呼ばれる新しい IPv6 拡張ヘッダーを持つ IPv6 アンダーレイに適用されるセグメント ルーティング パラダイムです。SRv6 は、既存の IPv6 転送技術を活用して、セグメント識別子 (SID) とも呼ばれるネットワーク プログラミング命令をエンコードします。SRv6では、SIDがIPv6アドレスとして表されますが、SIDはSR-MPLSラベルとしてエンコードされるSR-MPLSと比べると、IPv6アドレスとして表されます。SRv6 SIDは128ビットで、次のコンポーネントで構成されています。
| コンポーネント |
形容 |
|---|---|
| ロケータ |
SRv6 ノードのアドレスを識別する SID の最初の部分。これは、親ノードへのルートを提供するネットワーク アドレスであり、IS-IS プロトコルによって inet6.0 テーブルにインストールされます。IS-IS はセグメントを親ノードにルーティングし、親ノードは SID の 2 番目の部分で定義された機能を実行します。長さは 64 ビットです。 |
| 機能 |
ノード (ロケーターによって識別される) が実行する機能を定義する SID の 2 番目の部分 (次のような)。 終了: プレフィックス SID の SRv6 インスタンス化のエンドポイント関数 [RFC8402] End.X: 隣接 SID の SRv6 インスタンス化のための L3 クロスコネクト機能を持つエンドポイント [RFC8402] End.DT4:グローバルまたはIPv4 L3VPNのSRv6インスタンス化のためのカプセル化解除と特定のIPv4テーブルルックアップ機能を備えたエンドポイント(SRv6アンダーレイを介したトランスポートIPv4サービス) End.DT6: グローバルまたは IPv6 L3VPN の SRv6 インスタンス化のためのカプセル化解除と特定の IPv6 テーブル ルックアップ機能を備えたエンドポイント(SRv6 アンダーレイを介したトランスポート IPv6 サービス) End.DT46: グローバル、IPv4 または IPv6 L3VPN の SRv6 インスタンス化のためのカプセル化解除と特定の IP テーブル ルックアップ機能を備えたエンドポイント(SRv6 アンダーレイを介して IPv4 と IPv6 の両方のサービスを転送)。IPv4 および IPv6 プレフィックス間で共有されます。 終了 SID の動作は、最後から 2 番目のセグメント ポップ(PSP)、最終セグメント ポップ(USP)、最終セグメントのカプセル化解除(USD)などのフレーバーで指定できます。 Function コンポーネントの長さは 16 ビットです。 |
| 引数 |
転送アクションに関する追加情報を提供する可変長フィールド。最大 48 ビット長です。 |
BBBB:BBBB:<uSID1>:<uSID2>:<uSID3>:<uSID4>:<uSID5>:<uSID6>
ここで、 BBBB:BBBB/32 はSRドメイン内でオペレーターによって割り当てられたプレフィックスまたはブロックを表します。 /16, /32、 /48、 /64 ブロックなど、さまざまなプレフィックス長がサポートされています。 /32 ブロックが最も一般的に使用されます。ブロックは、グローバル識別子ブロック (GIB) またはローカル識別子ブロック (LIB) のいずれかです。GIBは、SRv6導入用に特別に指定されたパブリックアドレス空間または予約済みアドレス空間から割り当てられた、グローバルで一意のuSIDの範囲を表しています。LIBはSRドメイン内の特定のネットワークノードによって割り当てられ、ノードのローカルコンテキスト内でのみ適用できます。 uSIDx は、GIB または LIB からの個々の 16 ビット uSID を表します。uSID には、次の機能が実装されています。
-
uN: 最終的な宛先 (End) にマップされるマイクロノード SID。
-
uA:隣接関係固有の動作を持つマイクロ隣接関係-SID(End.X)
-
uDT: ドメイン固有の情報であるマイクロサービス SID(End.DT4、End.DT6、End.DT46)
Cloud-Native Routerは、次のSRv6機能をサポートしています。
| 機能 |
筆記 |
|---|---|
| SRv6 L3VPN と uSID |
uSIDタイプ:グローバルuSID、ローカルuSID 宛先アドレスでの uSID エンコード |
| ブロックとuSIDのサイズ | /16、/32、/48、/64 ブロックのサポート |
| Cloud-Native Router SRv6のノードタイプとマイクロインストラクション |
イングレス: 宛先アドレスの SRv6 カプセル化(SRH は不要) トランジット: IngressノードがJCNRの場合のIPv6転送。Ingressノードが非JCNRの場合のシフト&フォワード Egress:SIDサービス機能を分離して実行する |
| SR エンドポイント(関数) |
End、End.X、End.DT4、End.DT6、および End.DT46 |
| uSIDの動作 | uN、uDT |
| 障害回復 |
コントロールプレーンが開始する障害回復(ネクストホップとしての代替パス) |
| 特徴 |
形容 |
|---|---|
| IS-IS 経由の SRv6 uSID アンダーレイ トンネル |
IS-IS は、アドバタイズされたロケータにベスト エフォート トンネルを起動し、inet6.3 テーブルでプログラムします。 |
| ECMP パスを使用した IS-IS 経由の SRv6 uSID アンダーレイ トンネル |
IS-IS は、アドバタイズされたロケータにベスト エフォート トンネルを起動し、inet6.3 テーブルでプログラムします。トンネルは、ECMP 転送パスを持つことができます。 |
| uN SIDでアドバタイズされたBGPインターネットプレフィックスのルート |
uN SIDでアドバタイズされたBGPインターネットプレフィックスは、対応するロケーター(SRv6 uSIDアンダーレイトンネル)上で解決されます。アンダーレイ ルートは、1 つのゲートウェイまたは ECMP を持つことができます。 |
| uN SIDでアドバタイズされたBGPインターネットプレフィックスのマルチパスルート |
複数の Provide Edge(PE)ルーターが同じインターネットプレフィックス(マルチホーミング)を発信し、イングレスPEでBGPマルチパスにつながる可能性があります。各マルチパス ルートは、単一のゲートウェイまたは ECMP を持つアンダーレイ SRv6 トンネル上で解決されます。 |
| uN SIDでアドバタイズされたL3VPNプレフィックスのルート |
uN SID でアドバタイズされた L3VPN プレフィックスは、対応するロケータ(SRV6 uSID アンダーレイ トンネル)上で解決されます。これらのアンダーレイ ルートは、単一のゲートウェイを持つか、ECMP を持つことができます。 |
| uN SIDでアドバタイズされたL3VPNプレフィックスのマルチパスルート |
複数の PE が同じ L3VPN プレフィックス(マルチホーミング)から発信され、入力 PE で BGP マルチパスが発生する可能性があります。各マルチパス ルートは、単一のゲートウェイまたは ECMP を持つアンダーレイ SRv6 トンネル上で解決されます。 |
| フレックスアルゴリズムIS-ISトンネルを介したBGPインテントルート |
フレックス アルゴリズムの uSID は、SRv6 アンダーレイ トンネルを作成して IS-IS 経由でアドバタイズできます。BGP インターネット プレフィックスと uSID の L3VPN プレフィックスは、アンダーレイ トンネル上で解決できます。これらのプレフィックスは、(カラーコミュニティが付加されていない)非インテントである可能性があります。プレフィックスは、inet6.3テーブルにインストールされたSRV6アンダーレイトンネル上で解決されます。 |
| フォールバックメカニズムを備えたフレックスアルゴリズムIS-ISトンネル上のBGPインテントルート |
フレックス アルゴリズムの uSID は、SRv6 アンダーレイ トンネルを作成して IS-IS 経由でアドバタイズできます。BGP インターネット プレフィックスと uSID を持つ L3VPN プレフィックスは、アンダーレイ トンネル上で解決できます。これらのプレフィックスは、インテント(カラーコミュニティが付加されたもの)にすることができます。プレフィックスは、 junos-rti-tc-<color>.inet6.3 テーブルにインストールされたSRv6アンダーレイトンネル上で解決されます(カラーは、プレフィックスでアドバタイズされたカラーコミュニティのカラーに対応します)。プレフィックス解決が junos-rti-tc-<color>.inet6.3 テーブル上で行われない場合は、inet6.3 テーブルにインストールされているフレックスアルゴリズムアンダーレイトンネル上で解決できるため、フォールバック メカニズムが提供されます。 |
| uN SIDのプログラミングと、uN SIDルートに基づいたパケット転送のサポート |
inet6.0テーブルでは、uN SIDルートのプログラミングをサポートしています。これにより、宛先アドレスの一部として uN SID を持つパケットの転送が容易になります。セグメントルーティングヘッダー(SRH)を持つパケットは、現在サポートされていないことに注意してください。 |
| サポートされている SID 機能 |
uN SID シフトおよびルックアップ (フレーバータイプ IPv4 の uDT IPv6 の uDT IPv4 および IPv6 の uDT |
| ロケーターの要約と漏洩 |
ロケーターの要約と漏洩は、SR-MPLSと比較したSRv6の長所です。L1-L2 は、他のレベルからのロケーターを要約し、それらを別のレベルにリークする場合があります。ロケーターの漏洩は、要約がなくても発生する可能性があります。 |
JCNR での SRv6 の設定
次のトポロジーについて考えてみます。
ホスト 10.1.1.1/32 と 10.2.2.2/32 間の SRv6 トンネルを介した通信を有効にします。PE1 はイングレス Cloud-Native Router ノード、P はトランジット クラウドネイティブ ルーター ノード、PE2 はエグレス Cloud-Native Router ノードです。PE1、P、およびPE2は、IS-ISを介してuSID(図を参照)をアドバタイズし、BGPを介してオーバーレイプレフィックスを相互にアドバタイズします。CE1は、イングレスノード(PE1)へのパケットフローを開始します。PE1 は、送信元パケットを SRv6 ヘッダーでカプセル化し、宛先アドレスをエグレス ノード(PE2)の uSID に設定します。Cloud-Native Routerはこのトポロジーのイングレスノードであるため、トランジットノード(P)は単にIPv6パケットを転送します。エグレスノード(PE2)は、マイクロサービスSID(uDT)で設定されており、パケットのカプセル化を解除し、特定のIPテーブルを検索してパケットをCE2にルーティングします。
Cloud-Native RouterのSRv6の設定には、 マイクロSIDブロック 設定、 マイクロSIDロケータ 設定、 IS-ISのマイクロノードSID(uN)設定 、 BGPのマイクロサービスSID(uDT)設定が含まれます。
SRv6のJCNRコントロールプレーンを設定します。簡潔にするために、この例では、エグレスクラウドネイティブルーターノード(PE2)の設定について説明します。他のノードの構成も同様です。
micro-SIDブロックを構成し、オプションでローカル静的SIDの最大数を構成します(デフォルト値は0で、静的uSIDを使用する場合は構成する必要があります)。
user@PE2# set routing-options source-packet-routing srv6 block blk16_1 2001:db8::/32 user@PE2# set routing-options source-packet-routing srv6 block blk16_1 local-micro-sid maximum-static-sids 2000
マイクロSIDロケーターを設定します。
user@PE2# set routing-options source-packet-routing srv6 locator myloc 2001:db8:4600::/48 user@PE2# set routing-options source-packet-routing srv6 locator myloc micro-sid block-name blk16_1 user@PE2# set routing-options source-packet-routing srv6 locator myloc micro-sid flavor none
IS-ISでマイクロノードSID(uN SID)を設定して、ロケータTLVとマイクロノードSIDをアドバタイズします。
user@PE2# set protocols isis source-packet-routing srv6 locator myloc micro-node-sid
マイクロサービス SID を設定するには、2 つの方法があります。1つ目はBGPのみで、BGPインスタンスごとにdt4、dt6、dt46 uSIDの1セットを設定できます。uSID は、静的または動的に割り振ることができます。2つ目の方法は、マイクロサービスSIDの取得元となるプレフィックスまたはロケーターが使用するマイクロサービスSIDを指定するようにエクスポートポリシーを設定することです。BGP は
non-defaultキーワードで設定します。各メソッドの例を以下に示します。dt4、dt6、および dt46 uSID のセットには、そのうちの 1 つだけを使用する必要があります。IPv4 サービス向けの静的なデフォルト マイクロサービス-SID。静的uSIDは、ステップ1で定義された
maximum-static-sids範囲内にある必要があることに注意してください。user@PE2# set routing-instances pe-2 protocols bgp source-packet-routing srv6 locator myloc micro-dt4-sid 0xF831
IPv4 サービスに自動割り当てされたデフォルトのマイクロサービス-SID を設定します。
user@PE2# set routing-instances pe-2 bgp source-packet-routing srv6 locator myloc micro-dt4-sid
BGPエクスポートポリシーでデフォルト以外のmicro-service-SIDを設定します。
user@PE2# set routing-instances pe-2 bgp source-packet-routing srv6 locator myloc micro-dt4-sid non-default
user@PE2# set policy-options policy-statement EXPORT_BGP_SRV6 term 1 then srv6 locator myloc user@PE2# set policy-options policy-statement EXPORT_BGP_SRV6 term 1 then srv6 micro-dt4-sid
SRv6サービスをアドバタイズするようにBGPを設定します。ファミリー
inetの例を以下に示します。user@PE2# set protocols bgp group CNIv6 family inet unicast advertise-srv6-service user@PE2# set protocols bgp group CNIv6 family inet unicast accept-srv6-service
JCNR での SRv6 設定の検証
次のコマンドを使用して、 cRPDのSRv6設定を確認できます。
user@host> show srv6 block blk16_1
Block: blk16_1
Block Prefix: 2001:db8::, Block length: 32, Micro-sid length: 16
Global Micro SIDs:
Static SID range: 0x0-0xDFFF, Dynamic SID range: -
Allocated static SID count: 1, Allocated dynamic SID count: 0
Available static SID count: 57343, Available dynamic SID count: 0
Local Micro SIDs:
Static SID range: 0xF830-0xFFFF, Dynamic SID range: 0xE000-0xFFFF
Allocated static SID count: 0, Allocated dynamic SID count: 0
Available static SID count: 2000, Available dynamic SID count: 8192
user@host> show srv6 locator Locator: myloc Locator prefix: 2001:db8:4600::, Locator length: 48 Block length: 32, Node length: 16 Function length: 16, Argument length: 0 Micro SID Locator, Flavor [ None ] Micro SID Block Name: blk16_1
user@host> show isis overview
Instance: master
Router ID: 10.1.1.1
IPv6 Router ID: ::10.1.1.1
...
Source Packet Routing (SPRING): Enabled
Node Segments: Disabled
SRv6: Enabled
Locator: 2001:db8:4600::/48, Algorithm: 0
micro-node-SID: 2001:db8:4600::, Flavor: None
...
user@host> show isis database extensive
IS-IS level 1 link-state database:
...
SRv6 Locator: 2001:db8:4600::/48, Metric: 0, MTID: 0, Flags: 0x0, Algorithm: 0
SRv6 SID: 2001:db8:4600::, Flavor: None
sid-structure-sub-sub-tlv: Block-length:32, Node-length:16
...
Cloud-Native Router転送プレーン経由でパケットフローを検証
各 PE ノードで vRouter を経由するトラフィック フローを確認します。
イングレスSRv6ノード(PE1)
[user@PE1 /]# flow --match 10.1.1.1 Flow table(size 161218560, entries 629760) Entries: Created 300 Added 300 Deleted 400 Changed 600Processed 300 Used Overflow entries 0 (Created Flows/CPU: 0 0 0 0 0 0 0 0 0 0 0 72 87 72 69)(oflows 0) Action:F=Forward, D=Drop N=NAT(S=SNAT, D=DNAT, Ps=SPAT, Pd=DPAT, L=Link Local Port) Other:K(nh)=Key_Nexthop, S(nh)=RPF_Nexthop Flags:E=Evicted, Ec=Evict Candidate, N=New Flow, M=Modified Dm=Delete Marked TCP(r=reverse):S=SYN, F=FIN, R=RST, C=HalfClose, E=Established, D=Dead Stats:Packets/Bytes Listing flows matching ([10.1.1.1]:*) Index Source:Port/Destination:Port Proto(V) ----------------------------------------------------------------------------------- 231600<=>349580 10.1.1.1:1024 6 (98) 10.2.2.2:1024 (Gen: 3, K(nh):98, Action:F, Flags:, TCP:, QOS:-1, S(nh):0, Stats:77632/8228992, SPort 63335, TTL 0, Sinfo 22.0.0.0) 349580<=>231600 10.2.2.2:1024 6 (98) 10.1.1.1:1024 (Gen: 3, K(nh):98, Action:F, Flags:, TCP:, QOS:-1, S(nh):623, Stats:0/0, SPort 63397, TTL 0, Sinfo 0.0.0.0)[user@PE1 /]# rt --get 10.2.2.2/32 --vrf 98 Match 10.2.2.2/32 in vRouter inet4 table 0/98/unicast Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, Ml=MAC-IP learnt route vRouter inet4 routing table 0/98/unicast Destination PPL Flags Label Nexthop Stitched MAC(Index) 10.2.2.0/24 0 LPT - 623 -
[user@PE1 /]# nh --get 623 Id:623 Type:Tunnel Fmly:AF_INET6 Rid:0 Ref_cnt:2 Vrf:0 Flags:Valid, Policy, Etree Root, SRv6, Oif:2 Len:14 Data:40 a6 b7 a0 ef f1 50 7c 6f 48 9c 89 86 dd Sip: abcd:44:44:44::44 Block Len:32 Block: 2001:db8:: Number of Containers:1 Container Dips:[1]: 2001:db8:4600:e001::10.2.2.2/32へのトラフィックのネクストホップは、宛先 IP:
2001:db8:4600:e001::(エグレスノードのuSID)のSRv6トンネルであることに注意してくださいトランジット SRv6 ノード(P)
[user@P /]# flow --match 2001:db8:4600:e001:: Flow table(size 161218560, entries 629760) Entries: Created 300 Added 300 Deleted 400 Changed 600Processed 300 Used Overflow entries 0 (Created Flows/CPU: 0 0 0 0 0 0 0 0 0 0 0 72 87 72 69)(oflows 0) Action:F=Forward, D=Drop N=NAT(S=SNAT, D=DNAT, Ps=SPAT, Pd=DPAT, L=Link Local Port) Other:K(nh)=Key_Nexthop, S(nh)=RPF_Nexthop Flags:E=Evicted, Ec=Evict Candidate, N=New Flow, M=Modified Dm=Delete Marked TCP(r=reverse):S=SYN, F=FIN, R=RST, C=HalfClose, E=Established, D=Dead Stats:Packets/Bytes Listing flows matching ([2001:db8:4600:e001::]:*) Index Source:Port/Destination:Port Proto(V) ----------------------------------------------------------------------------------- 137640<=>238208 abcd:44:44:44::44:0 4 (0) 2001:db8:4600:e001:::0 (Gen: 1, K(nh):0, Action:F, Flags:, QOS:-1, S(nh):0, Stats:81560/11907760, SPort 53031, TTL 0, Sinfo 0.0.0.0) 238208<=>137640 2001:db8:4600:e001:::0 4 (0) abcd:44:44:44::44:0 (Gen: 1, K(nh):0, Action:F, Flags:, QOS:-1, S(nh):0, Stats:0/0, SPort 55361, TTL 0, Sinfo 0.0.0.0)[user@P /]# rt --get 2001:db8:4600:e001::/128 --vrf 0 --family inet6 rt --get fcbb:bb01:4600:e001::/128 --vrf 0 --family inet6 Match fcbb:bb01:4600:e001::/128 in vRouter inet6 table 0/0/unicast Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, Ml=MAC-IP learnt route vRouter inet6 routing table 0/0/unicast Destination PPL Flags Label Nexthop Stitched MAC(Index) 2001:db8:4600::/48 0 T - 80 -
[user@P /]# nh --get 80 Id:80 Type:Encap Fmly:AF_INET/6 Rid:0 Ref_cnt:11 Vrf:0 Flags:Valid, Policy, Etree Root, EncapFmly:0806 Oif:7 Len:14 Encap Data: 50 7c 6f 48 83 79 40 a6 b7 a0 f9 3bP は IPv6 パケットのみを転送することに注意してください。
エグレスSRv6ノード(PE2)
[root@PE2 /]# rt --get 2001:db8:4600:e001::/128 --vrf 0 --family inet6 Match 2001:db8:4600:e001::/128 in vRouter inet6 table 0/0/unicast Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, Ml=MAC-IP learnt route vRouter inet6 routing table 0/0/unicast Destination PPL Flags Label Nexthop Stitched MAC(Index) 2001:db8:4600:e001::/80 0 T - 72 -
[root@PE2 /]# nh --get 72 Id:72 Type:Vrf_Translate Fmly:AF_INET6 Rid:0 Ref_cnt:7 Vrf:19 Flags:Valid, Etree Root, SRv6, Vrf:19[root@PE2 /]# rt --get 10.2.2.2/32 --vrf 19 Match 10.2.2.2/32 in vRouter inet4 table 0/19/unicast Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, Ml=MAC-IP learnt route vRouter inet4 routing table 0/19/unicast Destination PPL Flags Label Nexthop Stitched MAC(Index) 10.2.2.2/32 0 PT - 776 -
[root@PE2 /]# nh --get 776 Id:776 Type:Encap Fmly:AF_INET/6 Rid:0 Ref_cnt:2 Vrf:19 Flags:Valid, Policy, Etree Root, EncapFmly:0806 Oif:21 Len:14 Encap Data: 00 10 94 00 04 1e 50 7c 6f 48 77 64エグレス PE は、デフォルト テーブルで uSID IPv6 アドレスを検索することに注意してください。完全一致のネクストホップは、
Vrf_Translateに設定されています。指定されたVRFで10.2.2.2/32IP アドレスを検索し、パケットをCE2にルーティングします。