セグメントルーティング
ジュニパークラウドネイティブルーターは、セグメントルーティング(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)ベースの通信事業者クラウド、5G、クラウドWAN、コンテンツ配信ネットワーク(CDN)向けにデータセンターを相互接続するためのトランスポートトンネリング技術として使用できます。以下のユースケースで複数のメリットが得られます。
-
トラフィックエンジニアリング:セグメントルーティングは、ネットワークの状態に基づいてトラフィックを効率的かつ動的にステアリングし、ロードバランシング、輻輳の回避、帯域幅の使用率の向上を可能にします。その結果、ネットワークパフォーマンスとユーザーエクスペリエンスが向上します。
-
ネットワークスライシング:セグメントルーティングは、異なるサービスやテナントを同じ物理インフラストラクチャ上に共存させることで、仮想化されたネットワークスライスを作成します。各ネットワーク スライスには、独自のフォワーディング ポリシーとリソースを含めることができ、多様なアプリケーションに対して高度な分離と柔軟性を提供します。
-
サービス機能チェイニング:セグメントルーティングにより、柔軟かつ動的なサービス機能チェイニングが可能になります。パケットは、ファイアウォール、ロードバランシングなどの一連のネットワークサービスを通過します。サービスの導入を簡素化し、パケットフローの特定のパスを定義することで、オンデマンドのサービスチェイニングを可能にします。
-
モバイルネットワーク:セグメントルーティングは、効率的なパス選択と遅延の削減を可能にすることで、モバイルネットワークのトラフィックルーティングとハンドオーバー手順を最適化します。
SR-MPLS
Cloud-Native Routerは、IPv4とIPv6アンダーレイの両方でSR-MPLSをサポートします。クラウドネイティブルーターは、SR-MPLSネットワークの送信、受信、またはトランジットルーターとして参加できます。SR-MPLS実装は、PHP(最後から2番目のホップポッピング)の有無にかかわらず、オーバーレイECMPの有無にかかわらず、明示的/暗黙的NULLをサポートします。セグメントルーティング フレキシブルアルゴリズム (フレックスアルゴ)は、クラウドネイティブルーターリリース24.1以降でサポートされています。詳細については、 セグメントルーティング(IS-IS) を参照してください。
JCNRでのSR-MPLSの設定
次のトポロジーを考えてみましょう。
このネットワークでルーティングをセグメント化したいと考えていますPE1はingressクラウドネイティブルーターノード、Pはトランジットクラウドネイティブルーターノード、PE2はegressクラウドネイティブルーターノードです。すべてのノードに共通のセグメントルーティンググローバルブロック(SRGB)範囲を設定します。すべてのノードには、IPv4とIPv6の両方のセグメントID(ノードSID)が割り当てられます。
コンフィグレットリソースを使用して、cRPDポッドを設定します。
- クラウドネイティブルーターイングレス(PE1)の設定
- クラウドネイティブルータートランジット(P)設定
- クラウドネイティブルーターエグレス(PE2)の設定
- JCNRでのSR-MPLS設定の確認
- クラウドネイティブルーターの転送プレーンでの設定を検証する
クラウドネイティブルーターイングレス(PE1)の設定
以下の設定でクラウドネイティブルーターイングレス(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
クラウドネイティブルータートランジット(P)設定
クラウドネイティブルータートランジット(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
クラウドネイティブルーターエグレス(PE2)の設定
以下の設定でクラウドネイティブルーターエグレス(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
クラウドネイティブルーターの転送プレーンでの設定を検証する
各 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がSR-MPLSラベルとしてエンコードされているSR-MPLSと比較すると、SIDは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)などのフレーバーで指定できます。 関数コンポーネントの長さは 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機能をサポートしています。
| 機能 |
筆記 |
|---|---|
| uSIDを使用したSRv6 L3VPN |
uSIDタイプ:グローバルuSID、ローカルuSID 宛先アドレスのuSIDエンコーディング |
| ブロックとuSIDのサイズ | /16、/32、/48、/64ブロックのサポート |
| クラウドネイティブルーターSRv6ノードタイプとマイクロインストラクション |
Ingress:宛先アドレスでの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アンダーレイトンネル)上で解決されます。アンダーレイルートは、単一のゲートウェイまたはECMPを持つことができます。 |
| uN SIDでアドバタイズされるBGPインターネットプレフィックスのマルチパスルート |
複数の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 経由でアドバタイズできます。uSIDを含むBGPインターネットプレフィックスとL3VPNプレフィックスは、アンダーレイトンネル上で解決できます。これらのプレフィックスは、(カラーコミュニティが付加されていない)非インテントにすることができます。プレフィックスは、inet6.3テーブルにインストールされたSRV6アンダーレイトンネル上で解決されます。 |
| フォールバックメカニズムを備えたフレックスアルゴリズムのIS-ISトンネルを介したBGPインテントルート |
フレックス アルゴリズム uSID は、SRv6 アンダーレイ トンネルが作成された IS-IS 経由でアドバタイズできます。uSIDを含むBGPインターネットプレフィックスとL3VPNプレフィックスは、アンダーレイトンネル上で解決できます。これらのプレフィックスは、(カラーコミュニティを付けた状態で)インテントにすることができます。プレフィックスは、 junos-rti-tc-<color>.inet6.3 テーブルにインストールされたSRv6アンダーレイトンネル上で解決されます。ここで、カラーはプレフィックスでアドバタイズされたカラーコミュニティ内のカラーに対応しています。プレフィックス解決が junos-rti-tc-<color>.inet6.3 テーブル上で行われない場合、inet6.3テーブルにインストールされたflex-algorithmアンダーレイトンネル上で解決できるため、フォールバックメカニズムが提供されます。 |
| 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の設定
次のトポロジーを考えてみましょう。
SRv6トンネルを介して、ホスト10.1.1.1/32と10.2.2.2/32間の通信を有効にしたいと考えています。PE1はingressクラウドネイティブルーターノード、Pはトランジットクラウドネイティブルーターノード、PE2はegressクラウドネイティブルーターノードです。PE1、P、およびPE2は、IS-IS経由でuSID(図を参照)を相互にBGP経由でオーバーレイプレフィックスとともにアドバタイズします。CE1は、イングレスノード(PE1)へのパケットフローを開始します。PE1は、送信元パケットをSRv6ヘッダーでカプセル化し、宛先アドレスをエグレスノード(PE2)のuSIDに設定します。Cloud-Native Routerはこのトポロジーのingressノードであるため、トランジットノード(P)は単にIPv6パケットを転送します。エグレスノード(PE2)は、マイクロサービスSID(uDT)でパケットのカプセル化を解除し、特定のIPテーブルを検索してパケットをCE2にルーティングするように設定されています。
Cloud-Native RouterのSRv6の設定には、 マイクロSIDブロック 設定、 マイクロSIDロケータ 設定、 IS-ISのマイクロノードSID(uN)設定 、 BGPのマイクロサービスSID(uDT)設定が含まれます。
SRv6の JCNRコントロールプレーンを設定します 。簡潔にするために、この例では、egress Cloud-Native Routerノード(PE2)の設定について説明します。他のノードの設定も同様です。
-
マイクロ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
-
micro-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インスタンスごとに1セットのdt4、dt6、dt46 uSIDを設定できます。uSIDは、静的または動的に割り当てることができます。2つ目の方法は、エクスポートポリシーを設定して、マイクロサービスSIDを導き出すためにプレフィックスまたはロケーターが使用するマイクロサービスSIDを指定することです。BGPは、
non-defaultキーワードで設定します。各方法の例を以下に示します。dt4、dt6、dt46 uSIDのセットには、そのうちの1つだけを使用する必要があります。-
IPv4 サービス用の静的なデフォルトの micro-service-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
...
クラウドネイティブルーターの転送プレーン経由でパケットフローを検証
各 PE ノード上の vRouter を介してトラフィックフローを検証します。
-
Ingress 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 パケットのみを転送することに注意してください。
-
Egress 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に設定されています。指定されたVRF10.2.2.2/32宛先IPアドレスを検索し、パケットをCE2にルーティングします。