サマリ
- SR-MPLS で構成されたネットワークにおいて、Per-Flow Steering を実現
- IOS XR + Junos の Multi-vendor 環境で、5-tuple と IP Precedence のそれぞれを条件とした Traffic Engineering (TE) の検証に成功
この記事は Multi-AS Segment Routing 検証連載の第 8 回です。目次は こちら
概要
イノベーションセンターの三島です。本記事では Per-Flow での SR Policy 適用手法を紹介します。 SR Policy の適用については、これまでの連載記事にて宛先 prefix ごとの TE を実現する例を紹介しました。 より多様なユースケースを実現するためには prefix 単位の経路制御に加えて、アプリケーション単位や送信元単位など、様々な経路制御の実現が必要となります。 本記事ではそのような prefix 単位以外での SR Policy の適用方法を紹介します。
SR Policy の定義と適用方法
第 4 回記事でも説明しました通り SR を用いた TE (SR-TE) の実現には SR Policy を利用します。 SR Policy は、2022 年 7 月に RFC9256 として発行されています。 この RFC では、SR Policy はどのノードへ送るかを指定する Endpoint、経路を指定する Segment List、属性である Color の 3 つの要素から構成されると定義されています。
今回のテーマである SR Policy の適用方法については、RFC9256 の 8 章にて下記が紹介されています。(一部本記事用に表現を編集)
- Local BSID Matching
- パケットへ付与された BSID に基づいて対応する SR Policy を適用する手法
- Per-Destination Steering
- 宛先の経路に基づいて SR Policy を適用する手法
- 宛先の単位としては BGP で広告された prefix 単位、VRF 単位、広告元の Endpoint 単位が使用可能
- SR Policy の自動インスタンス化が可能で、第 7 回 で紹介した On-Demand Next-Hop(ODN) を使用可能
- 宛先の経路に基づいて SR Policy を適用する手法
- Per-Flow Steering
- パケットが持つ宛先以上の情報に基づいて SR Policy を適用する手法
- ingress PE の ingress interface にて match 条件を評価、パケット識別のための Forwarding Class へ分類し、Class ごとに対応する SR Policy を選択
- 各レイヤーの条件としては次のような値が使用可能
- L2 (Ethernet): destination/source/VLAN/CoS
- L3 (IP): destination/source/ToS (Differentiated Services Code Point (DSCP) / IP Precedence)
- L4 (transport): destination/source port
- パケットが持つ宛先以上の情報に基づいて SR Policy を適用する手法
- Policy-Based Steering
- ルーティングポリシーに基づいて SR Policy を適用する手法
- Policy-Based Routing の一種として実装
- ルーティングポリシーに基づいて SR Policy を適用する手法
今回の記事では Per-Flow Steering の 実現例として、 5-tuple を基にした TE と IP Precedence を基にした TE をそれぞれ検証し紹介します。
検証
本章では、あるパケットを 5-tuple、IP Precedence のそれぞれで match させ、SR Policy を適用する例を検証します。 検証環境は下記の通りです。

事前準備
IOS XR では Per-Flow Steering を適用する BGP 経路に対して特定の Color をつける必要があります。 今回は、IBGP で対向の PE から受け取る全ての経路に color 1 を付与します。
extcommunity-set opaque COLOR-1 1 end-set route-policy COLOR-1-POLICY set extcommunity color COLOR-1 end-policy router bgp 65001 neighbor-group ibgp address-family vpnv4 unicast route-policy COLOR-1-POLICY in exit
5-tuple で match させる例
まずは、5-tuple で match したパケットのみ TE を適用する例を紹介します。 本章では以下の条件で match させ、SR Policy を適用していきます。
- host1 -> host2: 送信先アドレスが 192.168.1.1 かつ、送信先ポートが 80 番
- host2 -> host1: 送信先アドレスが 192.168.0.1 かつ、送信先ポートが 80 番
また、 match したパケットは下記の経路で転送されます。その他のパケットは IGP メトリックに従って転送されます。

パケットの分類
まず PE1、PE2 にて上記で指定した条件に一致するパケットを Forwarding Class に分類するための設定をします。
PE1(IOS XR)
5-tuple を定義した ACL を match 条件 とする class-map を定義します。
ipv4 access-list TCP-ANY-ANY-192.168.1.1-80 1 permit tcp any host 192.168.1.1 eq 80 ! class-map type traffic match-all 5TUPLE-CLASSMAP match access-group ipv4 TCP-ANY-ANY-192.168.1.1-80 end-class-map
class-map と forward-class を対応させる policy-map を定義し、customer 向けの interface に attach します。
interface TenGigE0/0/0/33.100 service-policy type pbr input 5TUPLE-POLICYMAP ! policy-map type pbr 5TUPLE-POLICYMAP class type traffic 5TUPLE-CLASSMAP set forward-class 1 ! class type traffic class-default ! end-policy-map
作成した class-map と policy-map を確認します。
RP/0/RSP0/CPU0:PE1#show class-map type traffic 5TUPLE-CLASSMAP
Thu Sep 8 13:33:34.767 JST
1) ClassMap: 5TUPLE-CLASSMAP Type: traffic
Referenced by 1 Policymaps
RP/0/RSP0/CPU0:PE1#show policy-map type pbr pmap-name 5TUPLE-POLICYMAP detail
Thu Sep 8 14:24:51.531 JST
ipv4 access-list TCP-ANY-ANY-192.168.1.1-80
1 permit tcp any host 192.168.1.1 eq www
class-map type traffic match-all 5TUPLE-CLASSMAP
match access-group ipv4 TCP-ANY-ANY-192.168.1.1-80
end-class-map
!
policy-map type pbr 5TUPLE-POLICYMAP
class type traffic 5TUPLE-CLASSMAP
set forward-class 1
!
class type traffic class-default
!
end-policy-map
!
PE2(Junos)
Multifield Classifier の firewall filter を設定します。
set firewall family inet filter 5TUPLE term TCP-ANY-ANY-192.168.0.1-80 from destination-address 192.168.0.1/32 set firewall family inet filter 5TUPLE term TCP-ANY-ANY-192.168.0.1-80 from protocol tcp set firewall family inet filter 5TUPLE term TCP-ANY-ANY-192.168.0.1-80 then count 5TUPLE-COUNT set firewall family inet filter 5TUPLE term TCP-ANY-ANY-192.168.0.1-80 then forwarding-class assured-forwarding set firewall family inet filter 5TUPLE term TCP-ANY-ANY-192.168.0.1-80 then accept set firewall family inet filter 5TUPLE term DEFAULT from protocol-except tcp set firewall family inet filter 5TUPLE term DEFAULT then count DEFAULT-COUNT set firewall family inet filter 5TUPLE term DEFAULT then forwarding-class best-effort set firewall family inet filter 5TUPLE term DEFAULT then accept set interfaces xe-0/1/7 unit 100 family inet filter input 5TUPLE
作成した firewall filter を確認します。
user@PE2> show firewall filter 5TUPLE Filter: 5TUPLE Counters: Name Bytes Packets 5TUPLE-COUNT 0 0 DEFAULT-COUNT 0 0
SR Policy の定義
作成した Forwarding Class に対応する SR Policy を定義します。
PE1(IOS XR)
Explicit-Path と SR Policy を定義します。
5-tuple 条件と一致した場合の TE パスに加え、デフォルトの TE パスも定義する必要があります。
IOS XR においては、Forwarding Class ごとに分類されたパケットへの TE の適用は policy 5TUPLE-MATCH のように SR Policy を用いて行います。
segment-routing
traffic-eng
segment-list 5TUPLE-TE
index 1 mpls label 16003
index 2 mpls label 16004
index 3 mpls label 16002
!
policy FC-1
color 101 end-point ipv4 10.255.1.2
candidate-paths
preference 100
explicit segment-list 5TUPLE-TE
!
!
!
!
policy DEFAULT
color 100 end-point ipv4 10.255.1.2
candidate-paths
preference 100
dynamic
metric
type igp
!
!
!
!
!
policy 5TUPLE-MATCH
color 1 end-point ipv4 10.255.1.2
candidate-paths
preference 100
per-flow
forward-class 0 color 100
forward-class 1 color 101
forward-class default 0
作成した SR Policy を確認します。
RP/0/RSP0/CPU0:PE1# show segment-routing traffic-eng policy
Thu Sep 8 14:27:40.143 JST
SR-TE policy database
---------------------
Color: 101, End-point: 10.255.1.2
Name: srte_c_101_ep_10.255.1.2
Status:
Admin: up Operational: up for 3d02h (since Sep 5 18:15:54.714)
Candidate-paths:
Preference: 100 (configuration) (active)
Name: FC-1
Requested BSID: dynamic
Protection Type: protected-preferred
Maximum SID Depth: 10
Explicit: segment-list 5TUPLE-TE (valid)
Weight: 1, Metric Type: TE
16003 [Prefix-SID, 10.255.1.5]
16004
16002
Attributes:
Binding SID: 24023
Forward Class: Not Configured
Steering labeled-services disabled: no
Steering BGP disabled: no
IPv6 caps enable: yes
Invalidation drop enabled: no
Max Install Standby Candidate Paths: 0
Color: 100, End-point: 10.255.1.2
Name: srte_c_100_ep_10.255.1.2
Status:
Admin: up Operational: up for 3d01h (since Sep 5 18:49:30.081)
Candidate-paths:
Preference: 100 (configuration) (active)
Name: DEFAULT
Requested BSID: dynamic
Protection Type: protected-preferred
Maximum SID Depth: 10
Dynamic (valid)
Metric Type: IGP, Path Accumulated Metric: 10
16002 [Prefix-SID, 10.255.1.2]
Attributes:
Binding SID: 24025
Forward Class: Not Configured
Steering labeled-services disabled: no
Steering BGP disabled: no
IPv6 caps enable: yes
Invalidation drop enabled: no
Max Install Standby Candidate Paths: 0
Color: 1, End-point: 10.255.1.2
Name: srte_c_1_ep_10.255.1.2
Status:
Admin: up Operational: up for 00:10:21 (since Sep 8 20:17:19.421)
Candidate-paths:
Preference: 100 (configuration) (active)
Name: 5TUPLE-MATCH
Requested BSID: dynamic
Per-flow Information:
Forward PDP PDP
Class Color Status
------- ------- -------
0 100 Up
1 101 Up
Default Forward Class: 0
Attributes:
Binding SID: 24006
Forward Class: Not Configured
Steering labeled-services disabled: no
Steering BGP disabled: no
IPv6 caps enable: yes
Invalidation drop enabled: no
Max Install Standby Candidate Paths: 0
PE2(Junos)
Explicit-Path と SR Policy を定義します。
5-tuple 条件と一致した場合の TE パスに加え、デフォルトの TE パスも定義する必要があります。
Junos においては、Forwarding Class ごとに分類されたパケットへの TE の適用は 5TUPLE-FORWARDING などのように routing-options を用いて行います。
set protocols source-packet-routing segment-list 5TUPLE-TE P2 label 16004 set protocols source-packet-routing segment-list 5TUPLE-TE P1 label 16003 set protocols source-packet-routing segment-list 5TUPLE-TE PE1 label 16001 set protocols source-packet-routing source-routing-path FC-1 to 10.255.1.1 set protocols source-packet-routing source-routing-path FC-1 primary 5TUPLE-TE set protocols source-packet-routing compute-profile DYNAMIC-IGP metric-type igp set protocols source-packet-routing source-routing-path DEFAULT to 10.255.1.1 set protocols source-packet-routing source-routing-path DEFAULT primary odn_path compute DYNAMIC-IGP set class-of-service forwarding-policy next-hop-map 5TUPLE-POLICYMAP forwarding-class best-effort lsp-next-hop DEFAULT set class-of-service forwarding-policy next-hop-map 5TUPLE-POLICYMAP forwarding-class assured-forwarding lsp-next-hop FC-1 set policy-options policy-statement 5TUPLE-FORWARDING then cos-next-hop-map 5TUPLE-POLICYMAP set routing-options forwarding-table export 5TUPLE-FORWARDING
作成した SR Policy を確認します。
user@PE2> show spring-traffic-engineering lsp detail
Name: DEFAULT
Tunnel-source: Static configuration
Tunnel Forward Type: SRMPLS
To: 10.255.1.1
State: Up
Path: odn_path
Path Status: NA
Outgoing interface: NA
Auto-translate status: Disabled Auto-translate result: N/A
Compute Status:Enabled , Compute Result:success , Compute-Profile Name:DYNAMIC-IGP
Total number of computed paths: 1
Computed-path-index: 1
BFD status: N/A BFD name: N/A
TE metric: 10, IGP metric: 10
Delay metrics: Min: 16777215, Max: 16777215, Avg: 16777215
Metric optimized by type: IGP
computed segments count: 1
computed segment : 1 (computed-node-segment):
node segment label: 16001
router-id: 10.255.1.1
Name: FC-1
Tunnel-source: Static configuration
Tunnel Forward Type: SRMPLS
To: 10.255.1.1
State: Up
Path: 5TUPLE-TE
Path Status: NA
Outgoing interface: NA
Auto-translate status: Disabled Auto-translate result: N/A
Compute Status:Disabled , Compute Result:N/A , Compute-Profile Name:N/A
BFD status: N/A BFD name: N/A
Segment ID : 128
ERO Valid: true
SR-ERO hop count: 3
Hop 1 (Strict):
NAI: None
SID type: 20-bit label, Value: 16004
Hop 2 (Strict):
NAI: None
SID type: 20-bit label, Value: 16003
Hop 3 (Strict):
NAI: None
SID type: 20-bit label, Value: 16001
疎通確認
mtr を用いて経路を確認します。
host1
user@host1:~$ mtr -n -e 192.168.1.1
host1 (192.168.0.1) 2022-09-08T23:33:23+0000
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.0.254 0.0% 5 1.5 1.4 1.3 1.5 0.1
2. 192.168.1.254 0.0% 4 0.3 0.4 0.3 0.5 0.1
3. 192.168.1.1 0.0% 4 0.6 0.5 0.4 0.6 0.1
user@host1:~$ mtr -n -e -T -P 80 192.168.1.1
host1 (192.168.0.1) 2022-09-08T23:30:58+0000
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.0.254 0.0% 5 1.5 1.5 1.3 1.6 0.1
2. 10.1.1.2 0.0% 5 1.9 2.8 1.9 3.5 0.6
[MPLS: Lbl 16004 TC 0 S 0 TTL 1]
[MPLS: Lbl 16002 TC 0 S 0 TTL 1]
[MPLS: Lbl 123 TC 0 S 1 TTL 1]
3. (waiting for reply)
4. 192.168.1.254 0.0% 5 0.7 2.3 0.7 8.6 3.5
5. 192.168.1.1 0.0% 5 0.5 0.5 0.4 0.6 0.1
host2
user@host2:~$ mtr -n 192.168.0.1
host2 (192.168.1.1) 2022-09-08T23:36:14+0000
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.1.254 0.0% 5 0.5 0.5 0.3 0.6 0.1
2. 10.1.2.1 0.0% 5 1.4 1.5 1.4 1.6 0.1
3. 192.168.0.1 0.0% 5 0.4 0.5 0.4 0.5 0.0
user@host2:~$ mtr -n -T -P 80 192.168.0.1
host2 (192.168.1.1) 2022-09-08T23:35:22+0000
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.1.254 0.0% 7 0.6 1.9 0.3 10.0 3.6
2. (waiting for reply)
3. 10.1.4.1 0.0% 7 3.1 3.1 2.0 3.9 0.6
[MPLS: Lbl 16001 TC 0 S 0 TTL 1]
[MPLS: Lbl 24002 TC 0 S 1 TTL 2]
4. 10.1.1.1 0.0% 7 1.5 1.5 1.3 1.6 0.1
5. 192.168.0.1 0.0% 7 0.4 0.5 0.4 0.5 0.1
IP Precedence で match させる例
IP Precedence で match したパケットのみ TE を適用する例を紹介します。 本章では host1 と host2 間にていずれの方向にも IP Precedence == 1 で match させ、SR Policy を適用していきます。 match したパケットは下記の経路で転送されます。その他のパケットは IGP メトリックに従って転送されます。

なお、一部設定は前章での 5-tupple による TE の設定と競合するため、検証をなぞる際は別環境で行うか前章での設定を削除してから行ってください。
パケットの分類
まず PE1、PE2 にて上記で指定した条件に一致するパケットを Forwarding Class に分類するための設定をします。
PE1(IOS XR)
IP Precedence を match 条件 とする class-map を定義します。
class-map type traffic match-all IP-PRECEDENCE1 match precedence 1 end-class-map
class-map と forward-class を対応させる policy-map を定義し、customer 向けの interface に attach します。
policy-map type pbr PRECEDENCE1-POLICYMAP class type traffic IP-PRECEDENCE1 set forward-class 1 ! class type traffic class-default ! end-policy-map interface TenGigE0/0/0/33.100 service-policy type pbr input PRECEDENCE1-POLICYMAP
作成した class-map と policy-map を確認します。
RP/0/RSP0/CPU0:PE1#show class-map type traffic IP-PRECEDENCE1
Thu Sep 8 14:31:23.599 JST
1) ClassMap: IP-PRECEDENCE1 Type: traffic
Referenced by 0 Policymaps
RP/0/RSP0/CPU0:PE1#show policy-map type pbr pmap-name PRECEDENCE1-POLICYMAP detail
Thu Sep 8 14:41:12.876 JST
class-map type traffic match-all IP-PRECEDENCE1
match precedence 1
end-class-map
!
policy-map type pbr PRECEDENCE1-POLICYMAP
class type traffic IP-PRECEDENCE1
set forward-class 1
!
class type traffic class-default
!
end-policy-map
!
PE2(Junos)
Multifield Classifier の firewall filter を設定します。
set firewall family inet filter IP-PRECEDENCE1 term 1 from precedence 1 set firewall family inet filter IP-PRECEDENCE1 term 1 then count IP-PRECEDENCE1-COUNT set firewall family inet filter IP-PRECEDENCE1 term 1 then forwarding-class assured-forwarding set firewall family inet filter IP-PRECEDENCE1 term 1 then accept set firewall family inet filter IP-PRECEDENCE1 term 2 from precedence-except 1 set firewall family inet filter IP-PRECEDENCE1 term 2 then count NOT-IP-PRECEDENCE1 set firewall family inet filter IP-PRECEDENCE1 term 2 then forwarding-class best-effort set firewall family inet filter IP-PRECEDENCE1 term 2 then accept set interfaces xe-0/1/7 unit 100 family inet filter input IP-PRECEDENCE1
作成した firewall filter を確認します。
user@PE2> show firewall filter IP-PRECEDENCE1 Filter: IP-PRECEDENCE1 Counters: Name Bytes Packets IP-PRECEDENCE1-COUNT 0 0 NOT-IP-PRECEDENCE1 0 0
SR Policy の定義
作成した Forwarding Class に対応する SR Policy を定義します。
PE1(IOS XR)
Explicit-Path と SR Policy を定義します。
segment-routing
traffic-eng
segment-list IP-PRECEDENCE-TE
index 2 mpls label 16003
index 3 mpls label 16002
!
policy FC-1
color 101 end-point ipv4 10.255.1.2
candidate-paths
preference 100
explicit segment-list IP-PRECEDENCE-TE
!
!
!
!
policy DEFAULT
color 100 end-point ipv4 10.255.1.2
candidate-paths
preference 100
dynamic
metric
type igp
!
!
!
!
!
policy IP-PRECEDENCE-MATCH
color 1 end-point ipv4 10.255.1.2
candidate-paths
preference 100
per-flow
forward-class 0 color 100
forward-class 1 color 101
forward-class default 0
作成した SR Policy を確認します。
RP/0/RSP0/CPU0:PE1#show segment-routing traffic-eng policy detail
Fri Sep 9 08:44:11.638 JST
SR-TE policy database
---------------------
Color: 101, End-point: 10.255.1.2
Name: srte_c_101_ep_10.255.1.2
Status:
Admin: up Operational: up for 3d14h (since Sep 5 18:15:54.714)
Candidate-paths:
Preference: 100 (configuration) (active) (reoptimizing)
Name: FC-1
Requested BSID: dynamic
Protection Type: protected-preferred
Maximum SID Depth: 10
Explicit: segment-list IP-PRECEDENCE-TE (valid)
Weight: 1, Metric Type: TE
16003 [Prefix-SID, 10.255.1.5]
16002
LSPs:
LSP[0]:
LSP-ID: 2 policy ID: 2 (active)
Local label: 24022
State: Programmed
Binding SID: 24023
LSP[1]:
LSP-ID: 3 policy ID: 2 (reoptimized)
Local label: 24004
State: Install timer pending
Attributes:
Binding SID: 24023
Forward Class: Not Configured
Steering labeled-services disabled: no
Steering BGP disabled: no
IPv6 caps enable: yes
Invalidation drop enabled: no
Max Install Standby Candidate Paths: 0
Color: 100, End-point: 10.255.1.2
Name: srte_c_100_ep_10.255.1.2
Status:
Admin: up Operational: up for 3d13h (since Sep 5 18:49:30.081)
Candidate-paths:
Preference: 100 (configuration) (active)
Name: DEFAULT
Requested BSID: dynamic
Protection Type: protected-preferred
Maximum SID Depth: 10
Dynamic (valid)
Metric Type: IGP, Path Accumulated Metric: 10
16002 [Prefix-SID, 10.255.1.2]
LSPs:
LSP[0]:
LSP-ID: 2 policy ID: 4 (active)
Local label: 24024
State: Programmed
Binding SID: 24025
Attributes:
Binding SID: 24025
Forward Class: Not Configured
Steering labeled-services disabled: no
Steering BGP disabled: no
IPv6 caps enable: yes
Invalidation drop enabled: no
Max Install Standby Candidate Paths: 0
Color: 1, End-point: 10.255.1.2
Name: srte_c_1_ep_10.255.1.2
Status:
Admin: up Operational: up for 00:00:03 (since Sep 9 08:44:08.469)
Candidate-paths:
Preference: 100 (configuration) (active)
Name: IP-PRECEDENCE-MATCH
Requested BSID: dynamic
Per-flow Information:
Forward PDP PDP
Class Color Status
------- ------- -------
0 100 Up
1 101 Up
Default Forward Class: 0
LSPs:
LSP[0]:
LSP-ID: 4 policy ID: 5 (active)
State: Programmed
Binding SID: 24014
Attributes:
Binding SID: 24014
Forward Class: Not Configured
Steering labeled-services disabled: no
Steering BGP disabled: no
IPv6 caps enable: yes
Invalidation drop enabled: no
Max Install Standby Candidate Paths: 0
PE2(Junos)
Explicit-Path と SR Policy を定義します。
set protocols source-packet-routing segment-list IP-PRECEDENCE-TE P1 label 16003 set protocols source-packet-routing segment-list IP-PRECEDENCE-TE PE1 label 16001 set protocols source-packet-routing source-routing-path FC-1 to 10.255.1.1 set protocols source-packet-routing source-routing-path FC-1 primary IP-PRECEDENCE-TE set protocols source-packet-routing compute-profile DYNAMIC-IGP metric-type igp set protocols source-packet-routing source-routing-path DEFAULT to 10.255.1.1 set protocols source-packet-routing source-routing-path DEFAULT primary odn_path compute DYNAMIC-IGP set class-of-service forwarding-policy next-hop-map IP-PRECEDENCE-POLICYMAP forwarding-class best-effort lsp-next-hop DEFAULT set class-of-service forwarding-policy next-hop-map IP-PRECEDENCE-POLICYMAP forwarding-class assured-forwarding lsp-next-hop FC-1 set policy-options policy-statement IP-PRECEDENCE-FORWARDING then cos-next-hop-map IP-PRECEDENCE-POLICYMAP set routing-options forwarding-table export IP-PRECEDENCE-FORWARDING
作成した SR Policy を確認します。
user@PE2> show spring-traffic-engineering lsp detail
Name: DEFAULT
Tunnel-source: Static configuration
Tunnel Forward Type: SRMPLS
To: 10.255.1.1
State: Up
Path: odn_path
Path Status: NA
Outgoing interface: NA
Auto-translate status: Disabled Auto-translate result: N/A
Compute Status:Enabled , Compute Result:success , Compute-Profile Name:DYNAMIC-IGP
Total number of computed paths: 1
Computed-path-index: 1
BFD status: N/A BFD name: N/A
TE metric: 10, IGP metric: 10
Delay metrics: Min: 16777215, Max: 16777215, Avg: 16777215
Metric optimized by type: IGP
computed segments count: 1
computed segment : 1 (computed-node-segment):
node segment label: 16001
router-id: 10.255.1.1
Name: FC-1
Tunnel-source: Static configuration
Tunnel Forward Type: SRMPLS
To: 10.255.1.1
State: Up
Path: IP-PRECEDENCE-TE
Path Status: NA
Outgoing interface: NA
Auto-translate status: Disabled Auto-translate result: N/A
Compute Status:Disabled , Compute Result:N/A , Compute-Profile Name:N/A
BFD status: N/A BFD name: N/A
Segment ID : 128
ERO Valid: true
SR-ERO hop count: 2
Hop 1 (Strict):
NAI: None
SID type: 20-bit label, Value: 16003
Hop 2 (Strict):
NAI: None
SID type: 20-bit label, Value: 16001
疎通確認
mtr を用いて経路を確認します。
host1
通常の ICMP パケットは最短経路を通ります。
user@host1:~$ mtr -n -e 192.168.1.1
host1 (192.168.0.1) 2022-09-08T23:56:49+0000
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.0.254 0.0% 6 1.4 1.4 1.3 1.5 0.1
2. 192.168.1.254 0.0% 5 0.5 0.5 0.3 0.6 0.1
3. 192.168.1.1 0.0% 5 0.4 0.4 0.4 0.5 0.0
IP Precedence が 1(ToS が 32)のパケットは想定通りに TE が適用されています。
user@host1:~$ mtr -n -e -Q 32 192.168.1.1
host1 (192.168.0.1) 2022-09-09T00:03:10+0000
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.0.254 0.0% 5 1.5 1.5 1.4 1.6 0.1
2. 10.1.1.2 0.0% 4 2.7 2.8 2.0 3.7 0.7
[MPLS: Lbl 16002 TC 1 S 0 TTL 1]
[MPLS: Lbl 123 TC 1 S 1 TTL 1]
3. 192.168.1.254 0.0% 4 0.4 0.5 0.4 0.6 0.1
4. 192.168.1.1 0.0% 4 0.5 0.5 0.4 0.5 0.0
host2
通常の ICMP パケットは最短経路を通ります。
user@host2:~$ mtr -n 192.168.0.1
host2 (192.168.1.1) 2022-09-09T00:03:41+0000
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.1.254 0.0% 6 10.8 8.0 0.4 13.7 6.0
2. 10.1.2.1 0.0% 5 1.6 1.6 1.4 1.7 0.1
3. 192.168.0.1 0.0% 5 0.4 0.5 0.4 0.5 0.0
IP Precedence が 1(ToS が 32)のパケットは想定通りに TE が適用されています。
user@host2:~$ mtr -n -T -P 80 192.168.0.1
host2 (192.168.1.1) 2022-09-09T00:04:23+0000
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.1.254 0.0% 9 0.5 0.4 0.4 0.5 0.1
2. 10.1.3.2 0.0% 9 2.8 2.9 1.9 3.5 0.5
[MPLS: Lbl 16001 TC 1 S 0 TTL 1]
[MPLS: Lbl 24002 TC 1 S 1 TTL 1]
3. 10.1.1.1 0.0% 8 1.5 1.5 1.4 1.6 0.1
4. 192.168.0.1 0.0% 8 0.5 0.5 0.5 0.6 0.0
まとめ
本記事では、SR Policy の適用手法をまとめることで宛先 prefix よりも細かい単位での経路制御を紹介しました。 検証では例として 5-tuple と IP Precedence のそれぞれを match 条件として実装しましたが、実運用ではユースケースに応じて適切な match 条件を選択してください。
次回の記事では TI-LFA を利用した 高速迂回(FastReRoute)について紹介予定です。
(2022/10/03 追記) 公開しました:[Multi-AS Segment Routing 検証連載 #9] TI-LFA を用いた障害時の高速迂回