Single-Domain SR-TE その5(Link Color Constraints)
SR-TE & Link Color Constraints が理解できたので自分のメモ用にアウトプットします。
- 1. Link Color Constraints
- 2. Topology
- 3. Config
- 4.下準備(各種メトリックの仕込み)
- 5. SR-TE の実装
- 5.2 Head-End(h_N1)
- 6. 検証
- 7. 検証から分かったこと
- 8. 参考
1. Link Color Constraints
リンクを論理的に色分けし、色に応じた経路を動的に生成する SR-TE
2. Topology
3. Config
◆h_N1(Head-End:exclude-any:RED & GREEN / metric type:TE)
hostname h_N1 group CCIE-ISIS router isis '.*' is-type level-2-only address-family ipv4 unicast metric-style wide segment-routing mpls ! interface 'Gi.*' point-to-point address-family ipv4 unicast ! ! interface 'Loopback .*' address-family ipv4 unicast ! ! ! end-group ! interface Loopback0 ipv4 address 1.1.1.1 255.255.255.255 ! interface MgmtEth0/RP0/CPU0/0 shutdown ! interface GigabitEthernet0/0/0/0 ipv4 address 10.1.2.1 255.255.255.0 ! interface GigabitEthernet0/0/0/1 shutdown ! interface GigabitEthernet0/0/0/2 ipv4 address 10.1.3.1 255.255.255.0 ! router isis 1 apply-group CCIE-ISIS net 49.0001.0000.0000.0001.00 distribute link-state level 2 address-family ipv4 unicast mpls traffic-eng level-2-only mpls traffic-eng router-id Loopback0 ! interface Loopback0 address-family ipv4 unicast prefix-sid index 1 ! ! interface GigabitEthernet0/0/0/0 ! interface GigabitEthernet0/0/0/2 ! ! mpls oam ! segment-routing traffic-eng interface GigabitEthernet0/0/0/0 affinity name BULE ! ! interface GigabitEthernet0/0/0/2 affinity name BLUE name GREEN ! ! policy LINK_COLOR_CONSTRAINS_POLICY binding-sid mpls 24365 color 6666 end-point ipv4 6.6.6.6 autoroute include ipv4 6.6.6.6/32 ! candidate-paths preference 100 dynamic metric type te ! ! constraints affinity exclude-any name RED name GREEN ! ! ! ! ! ! affinity-map name RED bit-position 10 name BULE bit-position 20 name GREEN bit-position 30 ! ! ! end
◆h_N1(Head-End:exclude-any:RED & GREEN / metric type:IGP)
hostname h_N1 group CCIE-ISIS router isis '.*' is-type level-2-only address-family ipv4 unicast metric-style wide segment-routing mpls ! interface 'Gi.*' point-to-point address-family ipv4 unicast ! ! interface 'Loopback .*' address-family ipv4 unicast ! ! ! end-group ! interface Loopback0 ipv4 address 1.1.1.1 255.255.255.255 ! interface MgmtEth0/RP0/CPU0/0 shutdown ! interface GigabitEthernet0/0/0/0 ipv4 address 10.1.2.1 255.255.255.0 ! interface GigabitEthernet0/0/0/1 shutdown ! interface GigabitEthernet0/0/0/2 ipv4 address 10.1.3.1 255.255.255.0 ! router isis 1 apply-group CCIE-ISIS net 49.0001.0000.0000.0001.00 distribute link-state level 2 address-family ipv4 unicast mpls traffic-eng level-2-only mpls traffic-eng router-id Loopback0 ! interface Loopback0 address-family ipv4 unicast prefix-sid index 1 ! ! interface GigabitEthernet0/0/0/0 ! interface GigabitEthernet0/0/0/2 ! ! mpls oam ! segment-routing traffic-eng interface GigabitEthernet0/0/0/0 affinity name BULE ! ! interface GigabitEthernet0/0/0/2 affinity name BLUE name GREEN ! ! policy LINK_COLOR_CONSTRAINS_POLICY binding-sid mpls 24365 color 6666 end-point ipv4 6.6.6.6 autoroute include ipv4 6.6.6.6/32 ! candidate-paths preference 100 dynamic metric type igp ! ! constraints affinity exclude-any name RED name GREEN ! ! ! ! ! ! affinity-map name RED bit-position 10 name BULE bit-position 20 name GREEN bit-position 30 ! ! ! end
◆h_N1(Head-End:include-all:BLUE / metric type:IGP)
hostname h_N1 group CCIE-ISIS router isis '.*' is-type level-2-only address-family ipv4 unicast metric-style wide segment-routing mpls ! interface 'Gi.*' point-to-point address-family ipv4 unicast ! ! interface 'Loopback .*' address-family ipv4 unicast ! ! ! end-group ! interface Loopback0 ipv4 address 1.1.1.1 255.255.255.255 ! interface MgmtEth0/RP0/CPU0/0 shutdown ! interface GigabitEthernet0/0/0/0 ipv4 address 10.1.2.1 255.255.255.0 no shut ! interface GigabitEthernet0/0/0/1 shutdown ! interface GigabitEthernet0/0/0/2 ipv4 address 10.1.3.1 255.255.255.0 no shut ! interface GigabitEthernet0/0/0/3 shutdown ! interface GigabitEthernet0/0/0/4 shutdown ! router isis 1 apply-group CCIE-ISIS net 49.0001.0000.0000.0001.00 distribute link-state level 2 address-family ipv4 unicast mpls traffic-eng level-2-only mpls traffic-eng router-id Loopback0 ! interface Loopback0 address-family ipv4 unicast prefix-sid index 1 ! ! interface GigabitEthernet0/0/0/0 ! interface GigabitEthernet0/0/0/2 ! ! mpls oam ! segment-routing traffic-eng interface GigabitEthernet0/0/0/0 affinity name BULE ! ! interface GigabitEthernet0/0/0/2 affinity name BLUE name GREEN ! ! policy LINK_COLOR_CONSTRAINS_POLICY binding-sid mpls 24365 color 6666 end-point ipv4 6.6.6.6 autoroute include ipv4 6.6.6.6/32 ! candidate-paths preference 100 dynamic metric type igp ! ! constraints affinity include-all name BLUE ! ! ! ! ! ! affinity-map name RED bit-position 10 name BULE bit-position 20 name GREEN bit-position 30 ! ! ! end
◆h_N1(Head-End:include-any:BLUE & RED / metric type:TE)
hostname h_N1 group CCIE-ISIS router isis '.*' is-type level-2-only address-family ipv4 unicast metric-style wide segment-routing mpls ! interface 'Gi.*' point-to-point address-family ipv4 unicast ! ! interface 'Loopback .*' address-family ipv4 unicast ! ! ! end-group ! interface Loopback0 ipv4 address 1.1.1.1 255.255.255.255 ! interface MgmtEth0/RP0/CPU0/0 shutdown ! interface GigabitEthernet0/0/0/0 ipv4 address 10.1.2.1 255.255.255.0 ! interface GigabitEthernet0/0/0/1 shutdown ! interface GigabitEthernet0/0/0/2 ipv4 address 10.1.3.1 255.255.255.0 ! router isis 1 apply-group CCIE-ISIS net 49.0001.0000.0000.0001.00 distribute link-state level 2 address-family ipv4 unicast mpls traffic-eng level-2-only mpls traffic-eng router-id Loopback0 ! interface Loopback0 address-family ipv4 unicast prefix-sid index 1 ! ! interface GigabitEthernet0/0/0/0 ! interface GigabitEthernet0/0/0/2 ! ! mpls oam ! segment-routing traffic-eng interface GigabitEthernet0/0/0/0 affinity name BULE ! ! interface GigabitEthernet0/0/0/2 affinity name BLUE name GREEN ! ! policy LINK_COLOR_CONSTRAINS_POLICY binding-sid mpls 24365 color 6666 end-point ipv4 6.6.6.6 autoroute include ipv4 6.6.6.6/32 ! candidate-paths preference 100 dynamic metric type te ! ! constraints affinity include-any name RED name BLUE ! ! ! ! ! ! affinity-map name RED bit-position 10 name BULE bit-position 20 name GREEN bit-position 30 ! ! ! end
h_N2(metric変更)
hostname h_N2 group CCIE-ISIS router isis '.*' is-type level-2-only address-family ipv4 unicast metric-style wide segment-routing mpls ! interface 'Gi.*' point-to-point address-family ipv4 unicast ! ! interface 'Loopback .*' address-family ipv4 unicast ! ! ! end-group ! interface Loopback0 ipv4 address 2.2.2.2 255.255.255.255 ! interface MgmtEth0/RP0/CPU0/0 shutdown ! interface GigabitEthernet0/0/0/0 ipv4 address 10.1.2.2 255.255.255.0 ! interface GigabitEthernet0/0/0/1 ipv4 address 10.2.3.2 255.255.255.0 ! interface GigabitEthernet0/0/0/2 ipv4 address 10.2.4.2 255.255.255.0 ! router isis 1 apply-group CCIE-ISIS net 49.0001.0000.0000.0002.00 address-family ipv4 unicast mpls traffic-eng level-2-only mpls traffic-eng router-id Loopback0 ! interface Loopback0 address-family ipv4 unicast prefix-sid index 2 ! ! interface GigabitEthernet0/0/0/0 ! interface GigabitEthernet0/0/0/1 ! interface GigabitEthernet0/0/0/2 address-family ipv4 unicast metric 200 ! ! ! mpls oam ! segment-routing traffic-eng interface GigabitEthernet0/0/0/0 affinity name BLUE ! ! interface GigabitEthernet0/0/0/1 affinity name BLUE ! ! interface GigabitEthernet0/0/0/2 affinity name BLUE ! metric 1000 ! affinity-map name RED bit-position 10 name BLUE bit-position 20 name GREEN bit-position 30 ! ! ! end
h_N3(metric変更)
hostname h_N3 group CCIE-ISIS router isis '.*' is-type level-2-only address-family ipv4 unicast metric-style wide segment-routing mpls ! interface 'Gi.*' point-to-point address-family ipv4 unicast ! ! interface 'Loopback .*' address-family ipv4 unicast ! ! ! end-group ! interface Loopback0 ipv4 address 3.3.3.3 255.255.255.255 ! interface MgmtEth0/RP0/CPU0/0 shutdown ! interface GigabitEthernet0/0/0/0 ipv4 address 10.1.3.3 255.255.255.0 ! interface GigabitEthernet0/0/0/1 ipv4 address 10.2.3.3 255.255.255.0 ! interface GigabitEthernet0/0/0/2 ipv4 address 10.3.5.3 255.255.255.0 ! interface GigabitEthernet0/0/0/3 ipv4 address 10.3.4.3 255.255.255.0 ! router isis 1 apply-group CCIE-ISIS net 49.0001.0000.0000.0003.00 address-family ipv4 unicast mpls traffic-eng level-2-only mpls traffic-eng router-id Loopback0 ! interface Loopback0 address-family ipv4 unicast prefix-sid index 3 ! ! interface GigabitEthernet0/0/0/0 ! interface GigabitEthernet0/0/0/1 ! interface GigabitEthernet0/0/0/2 ! interface GigabitEthernet0/0/0/3 address-family ipv4 unicast metric 2000 ! ! ! mpls oam ! segment-routing traffic-eng interface GigabitEthernet0/0/0/0 affinity name BLUE name GREEN ! ! interface GigabitEthernet0/0/0/1 affinity name BLUE ! ! interface GigabitEthernet0/0/0/2 affinity name RED ! ! interface GigabitEthernet0/0/0/3 affinity name BLUE ! metric 100 ! affinity-map name RED bit-position 10 name BLUE bit-position 20 name GREEN bit-position 30 ! ! ! end
h_N4(metric変更)
hostname h_N4 group CCIE-ISIS router isis '.*' is-type level-2-only address-family ipv4 unicast metric-style wide segment-routing mpls ! interface 'Gi.*' point-to-point address-family ipv4 unicast ! ! interface 'Loopback .*' address-family ipv4 unicast ! ! ! end-group ! interface Loopback0 ipv4 address 4.4.4.4 255.255.255.255 ! interface MgmtEth0/RP0/CPU0/0 shutdown ! interface GigabitEthernet0/0/0/0 ipv4 address 10.2.4.4 255.255.255.0 ! interface GigabitEthernet0/0/0/1 ipv4 address 10.4.5.4 255.255.255.0 ! interface GigabitEthernet0/0/0/2 ipv4 address 10.4.6.4 255.255.255.0 ! interface GigabitEthernet0/0/0/3 ipv4 address 10.3.4.4 255.255.255.0 ! router isis 1 apply-group CCIE-ISIS net 49.0001.0000.0000.0004.00 address-family ipv4 unicast mpls traffic-eng level-2-only mpls traffic-eng router-id Loopback0 ! interface Loopback0 prefix-attributes anycast address-family ipv4 unicast prefix-sid index 4 ! ! interface GigabitEthernet0/0/0/0 address-family ipv4 unicast metric 200 ! ! interface GigabitEthernet0/0/0/1 ! interface GigabitEthernet0/0/0/2 ! interface GigabitEthernet0/0/0/3 ! ! mpls oam ! segment-routing traffic-eng interface GigabitEthernet0/0/0/0 affinity name BLUE ! metric 1000 ! interface GigabitEthernet0/0/0/1 affinity name BLUE name GREEN ! ! interface GigabitEthernet0/0/0/2 affinity name BLUE ! ! interface GigabitEthernet0/0/0/3 affinity name BLUE ! ! affinity-map name RED bit-position 10 name BLUE bit-position 20 name GREEN bit-position 30 ! ! ! end
h_N5
hostname h_N5 group CCIE-ISIS router isis '.*' is-type level-2-only address-family ipv4 unicast metric-style wide segment-routing mpls ! interface 'Gi.*' point-to-point address-family ipv4 unicast ! ! interface 'Loopback .*' address-family ipv4 unicast ! ! ! end-group ! interface Loopback0 ipv4 address 5.5.5.5 255.255.255.255 ! interface MgmtEth0/RP0/CPU0/0 shutdown ! interface GigabitEthernet0/0/0/0 ipv4 address 10.3.5.5 255.255.255.0 ! interface GigabitEthernet0/0/0/1 ipv4 address 10.4.5.5 255.255.255.0 ! interface GigabitEthernet0/0/0/2 ipv4 address 10.5.6.5 255.255.255.0 ! router isis 1 apply-group CCIE-ISIS net 49.0001.0000.0000.0005.00 address-family ipv4 unicast mpls traffic-eng level-2-only mpls traffic-eng router-id Loopback0 ! interface Loopback0 prefix-attributes anycast address-family ipv4 unicast prefix-sid index 5 ! ! interface GigabitEthernet0/0/0/0 ! interface GigabitEthernet0/0/0/1 ! interface GigabitEthernet0/0/0/2 ! ! mpls oam ! segment-routing traffic-eng interface GigabitEthernet0/0/0/0 affinity name RED ! ! interface GigabitEthernet0/0/0/1 affinity name BLUE name GREEN ! ! interface GigabitEthernet0/0/0/2 affinity name BLUE ! ! affinity-map name RED bit-position 10 name BLUE bit-position 20 name GREEN bit-position 30 ! ! ! end
h_N6
hostname h_N6 group CCIE-ISIS router isis '.*' is-type level-2-only address-family ipv4 unicast metric-style wide segment-routing mpls ! interface 'Gi.*' point-to-point address-family ipv4 unicast ! ! interface 'Loopback .*' address-family ipv4 unicast ! ! ! end-group ! interface Loopback0 ipv4 address 6.6.6.6 255.255.255.255 ! interface MgmtEth0/RP0/CPU0/0 shutdown ! interface GigabitEthernet0/0/0/0 ipv4 address 10.4.6.6 255.255.255.0 ! interface GigabitEthernet0/0/0/1 shutdown ! interface GigabitEthernet0/0/0/2 ipv4 address 10.5.6.6 255.255.255.0 ! router isis 1 apply-group CCIE-ISIS net 49.0001.0000.0000.0006.00 address-family ipv4 unicast mpls traffic-eng level-2-only mpls traffic-eng router-id Loopback0 ! interface Loopback0 address-family ipv4 unicast prefix-sid index 6 ! ! interface GigabitEthernet0/0/0/0 ! interface GigabitEthernet0/0/0/2 ! ! mpls oam ! segment-routing traffic-eng interface GigabitEthernet0/0/0/0 affinity name BLUE ! ! interface GigabitEthernet0/0/0/2 affinity name BLUE ! ! affinity-map name RED bit-position 10 name BLUE bit-position 20 name GREEN bit-position 30 ! ! ! end
4.下準備(各種メトリックの仕込み)
4.1 IGP(Default 10)
IGP で interface を指定して定義します。
e.g. h_N2's GigabitEthernet0/0/0/2 で IGP(ISIS)のメトリックを定義
RP/0/RP0/CPU0:h_N2(config)#router isis 1 RP/0/RP0/CPU0:h_N2(config-isis)#interface gigabitEthernet 0/0/0/2 RP/0/RP0/CPU0:h_N2(config-isis-if)#address-family ipv4 unicast RP/0/RP0/CPU0:h_N2(config-isis-if-af)#metric 200 RP/0/RP0/CPU0:h_N2(config-isis-if-af)# RP/0/RP0/CPU0:h_N2(config-isis-if-af)#commit
4.2 Traffic-engineering(TE:Default 10)
Segment Routing の Traffic-engineering で interface を指定して定義します。
e.g. h_N2's GigabitEthernet0/0/0/2 で TE のメトリックを定義
RP/0/RP0/CPU0:h_N2(config)#? segment-routing Segment Routing RP/0/RP0/CPU0:h_N2(config)#segment-routing RP/0/RP0/CPU0:h_N2(config-sr)#? traffic-eng Segment Routing Traffic Engineering RP/0/RP0/CPU0:h_N2(config-sr)#traffic-eng RP/0/RP0/CPU0:h_N2(config-sr-te)#? interface Enable SR-TE on an interface(cisco-support) RP/0/RP0/CPU0:h_N2(config-sr-te)#interface gigabitEthernet 0/0/0/2 RP/0/RP0/CPU0:h_N2(config-sr-if)#? metric Interface TE metric configuration RP/0/RP0/CPU0:h_N2(config-sr-if)#metric 1000 RP/0/RP0/CPU0:h_N2(config-sr-if)# RP/0/RP0/CPU0:h_N2(config-sr-if)#show Sun Apr 2 09:15:48.466 UTC segment-routing traffic-eng interface GigabitEthernet0/0/0/2 metric 1000 ! ! ! RP/0/RP0/CPU0:h_N2(config-sr-if)#
残りのノードもトポロジ図で指定した通りに定義します。
5. SR-TE の実装
実装の流れは、①全ノードでSegment Routing の Traffic-engineering を有効にしてから ② Link Color を定義します。③ Head-End で LSDBの情報をSR-TE DBに投入します。 また、④Head-End で SR-TE のポリシーを定義します。 ⑤最後に経路(Candidate-paths)のメトリックを選択し、⑥どの色を通過許可するかの制約事項を定義します。
5.1 全ノード共通
5.1.1 SR-TE有効化
①IGPでSegment Routing を有効にします。
忘れずに Loopback0 で prefix-sid index X を有効化します。
router isis '.*' net 49.0001.0000.0000.000X.00 address-family ipv4 unicast metric-style wide segment-routing mpls ! interface Loopback 0 address-family ipv4 unicast prefix-sid index X ! ! !
②IGP で Traffic-engineering 有効にします。 ISIS の場合、IGP のレベルと TE のレベルを合わせます。今回の場合は、level-2-only です。
RP/0/RP0/CPU0:h_N2(config)#router isis 1 RP/0/RP0/CPU0:h_N2(config-isis)#address-family ipv4 unicast RP/0/RP0/CPU0:h_N2(config-isis-af)#? mpls Configure MPLS routing protocol parameters RP/0/RP0/CPU0:h_N2(config-isis-af)#mpls ? traffic-eng Routing protocol commands for MPLS Traffic Engineering RP/0/RP0/CPU0:h_N2(config-isis-af)#mpls traffic-eng ? level-2-only Enable mpls traffic-eng at level 2 RP/0/RP0/CPU0:h_N2(config-isis-af)#mpls traffic-eng level-2-only RP/0/RP0/CPU0:h_N2(config-isis-af)#mpls ? traffic-eng Routing protocol commands for MPLS Traffic Engineering RP/0/RP0/CPU0:h_N2(config-isis-af)#mpls traffic-eng ? router-id Traffic Engineering stable IP address for system RP/0/RP0/CPU0:h_N2(config-isis-af)#mpls traffic-eng router-id ? Loopback Loopback interface(s) | short name is Lo RP/0/RP0/CPU0:h_N2(config-isis-af)#mpls traffic-eng router-id Loopback 0 RP/0/RP0/CPU0:h_N2(config-isis-af)#show Sat Mar 25 12:43:39.055 UTC router isis 1 address-family ipv4 unicast mpls traffic-eng level-2-only mpls traffic-eng router-id Loopback0 ! ! RP/0/RP0/CPU0:h_N2(config-isis-af)#
③ グローバルで Segment Routing の Traffic-engineering 有効にします。
RP/0/RP0/CPU0:h_N2(config)#? segment-routing Segment Routing RP/0/RP0/CPU0:h_N2(config)#segment-routing ? traffic-eng Segment Routing Traffic Engineering RP/0/RP0/CPU0:h_N2(config)#segment-routing traffic-eng RP/0/RP0/CPU0:h_N2(config-sr-te)# RP/0/RP0/CPU0:h_N2(config-sr-te)#show Sat Mar 25 12:50:31.803 UTC segment-routing traffic-eng ! ! RP/0/RP0/CPU0:h_N2(config-sr-te)#
5.1.2Link Color定義
①先ずリンクの論理カラーを定義します。bit-position は任意の数字で良いですが、ドメインの全ノードで統一する必要があります。
RP/0/RP0/CPU0:h_N1(config)#segment-routing traffic-eng RP/0/RP0/CPU0:h_N1(config-sr-te)#? affinity-map Affinity map configuration RP/0/RP0/CPU0:h_N1(config-sr-te)#affinity-map RP/0/RP0/CPU0:h_N1(config-sr-te-affinity-map)#? name Affinity name RP/0/RP0/CPU0:h_N1(config-sr-te-affinity-map)#name ? WORD Affinity color name RP/0/RP0/CPU0:h_N1(config-sr-te-affinity-map)#name RED ? bit-position Bit Position for the mapped affinity RP/0/RP0/CPU0:h_N1(config-sr-te-affinity-map)#name RED bit-position ? <0-255> Affinity attribute bit position RP/0/RP0/CPU0:h_N1(config-sr-te-affinity-map)#name RED bit-position 10 ? <cr> RP/0/RP0/CPU0:h_N1(config-sr-te-affinity-map)#name RED bit-position 10 RP/0/RP0/CPU0:h_N1(config-sr-te-affinity-map)#name BULE bit-position 20 RP/0/RP0/CPU0:h_N1(config-sr-te-affinity-map)#name GREEN bit-position 30 RP/0/RP0/CPU0:h_N1(config-sr-te-affinity-map)# RP/0/RP0/CPU0:h_N1(config-sr-te-affinity-map)#show Sun Apr 2 09:22:11.691 UTC segment-routing traffic-eng affinity-map name RED bit-position 10 name BULE bit-position 20 name GREEN bit-position 30 ! ! ! RP/0/RP0/CPU0:h_N1(config-sr-te-affinity-map)#
②それぞれのリンクに論理カラーを定義します。1リンクに複数のカラーを定義することも可能です。
RP/0/RP0/CPU0:h_N1(config)#segment-routing traffic-eng RP/0/RP0/CPU0:h_N1(config-sr-te)#interface gigabitEthernet 0/0/0/0 RP/0/RP0/CPU0:h_N1(config-sr-if)#? affinity Interface affinity configuration RP/0/RP0/CPU0:h_N1(config-sr-if)#affinity RP/0/RP0/CPU0:h_N1(config-sr-if-affinity)#? name Affinity name RP/0/RP0/CPU0:h_N1(config-sr-if-affinity)#name ? RED Affinity color name BULE Affinity color name GREEN Affinity color name WORD Affinity color name RP/0/RP0/CPU0:h_N1(config-sr-if-affinity)#name BULE ? <cr> RP/0/RP0/CPU0:h_N1(config-sr-if-affinity)#name BULE RP/0/RP0/CPU0:h_N1(config-sr-if-affinity)#interface gigabitEthernet 0/0/0/2 RP/0/RP0/CPU0:h_N1(config-sr-if)#affinity name BLUE RP/0/RP0/CPU0:h_N1(config-sr-if)#affinity name GREEN RP/0/RP0/CPU0:h_N1(config-sr-if)# RP/0/RP0/CPU0:h_N1(config-sr-if)#show Sun Apr 2 09:25:27.084 UTC segment-routing traffic-eng interface GigabitEthernet0/0/0/2 affinity name BLUE name GREEN ! ! ! ! RP/0/RP0/CPU0:h_N1(config-sr-if)#
残りのノードもトポロジ図で指定した通りに定義します。
5.2 Head-End(h_N1)
5.2.1 LSDBの情報をSR-TE DBに投入
IGP で以下のコマンドを定義します。ISIS のインターフェースレベルに合わせます。
RP/0/RP0/CPU0:h_N1(config)#router isis 1 RP/0/RP0/CPU0:h_N1(config-isis)#? distribute Distribute routing information to external services RP/0/RP0/CPU0:h_N1(config-isis)#distribute ? link-state Distribute the link-state database to external services RP/0/RP0/CPU0:h_N1(config-isis)#distribute link-state ? level Set distribution for one level only RP/0/RP0/CPU0:h_N1(config-isis)#distribute link-state level ? <1-2> Level RP/0/RP0/CPU0:h_N1(config-isis)#distribute link-state level 2 RP/0/RP0/CPU0:h_N1(config-isis)#
5.2.2 SR-TE Policy の定義
SR-TE Policy を以下のように定義します。
a) ポリシー名 :LINK_COLOR_CONSTRAINS_POLICY
b) B-SID(任意):24365
c) color :6666
d) Tail-End :6.6.6.6(h_N6)
SR-TEは、a)ポリシー名 と c)カラー、d)Tail-Endの指定が必須です。
① 先ずはポリシー名を定義します。
RP/0/RP0/CPU0:h_N1(config-sr-te)#policy ? WORD Identifying name for policy with max 59 characters RP/0/RP0/CPU0:h_N1(config-sr-te)#policy LINK_COLOR_CONSTRAINS_POLICY
② B-SID(binding-sid)は任意設定です。 ※ SR-TE Policy自体に割り当てられたSIDをB-SID(binding-sid)と呼びます。
RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#? binding-sid Binding Segment Identifier RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#binding-sid ? mpls MPLS label RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#binding-sid mpls ? <16-1048575> MPLS label RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#binding-sid mpls 24365 ? <cr>
③ 次にカラーとTail-Endを指定します。
RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#? color Specify color for policy RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#color ? <1-4294967295> Color value RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#color 6666 ? end-point Policy endpoint RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#color 6666 end-point ? ipv4 IPv4 address RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#color 6666 end-point ipv4 ? A.B.C.D IPv4 endpoint address RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#color 6666 end-point ipv4 6.6.6.6 ? <cr>
④ SR-TEポリシーで作成したLSP経由でパケットを転送させるため、autorouteを定義します。
端的に言うと、For traffic steering toward h_N6 ってことです。
RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#? autoroute Autoroute configuration RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#autoroute RP/0/RP0/CPU0:h_N1(config-sr-te-policy-autoroute)#? include Prefixes for which IGP routes will be installed RP/0/RP0/CPU0:h_N1(config-sr-te-policy-autoroute)#include ? all Include all eligible prefixes ipv4 IPv4 address family RP/0/RP0/CPU0:h_N1(config-sr-te-policy-autoroute)#include ipv4 ? A.B.C.D/length IP prefix route to include RP/0/RP0/CPU0:h_N1(config-sr-te-policy-autoroute)#include ipv4 6.6.6.6/32
5.2.3 Candidate-paths の定義
Candidate-paths を以下のように定義します。
a) preference :100(大きい方が優先されます!)
b) type :IGP(後の検証で他のタイプも確認します。)
RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#? candidate-paths Candidate-paths configuration RP/0/RP0/CPU0:h_N1(config-sr-te-policy)#candidate-paths RP/0/RP0/CPU0:h_N1(config-sr-te-policy-path)#? preference Policy path-option preference entry RP/0/RP0/CPU0:h_N1(config-sr-te-policy-path)#preference ? <1-65535> Path-option preference RP/0/RP0/CPU0:h_N1(config-sr-te-policy-path)#preference 100 RP/0/RP0/CPU0:h_N1(config-sr-te-policy-path-pref)#? dynamic Dynamically allocated path RP/0/RP0/CPU0:h_N1(config-sr-te-policy-path-pref)#dynamic ? metric Path metric configuration RP/0/RP0/CPU0:h_N1(config-sr-te-policy-path-pref)#dynamic RP/0/RP0/CPU0:h_N1(config-sr-te-pp-info)#? metric Path metric configuration RP/0/RP0/CPU0:h_N1(config-sr-te-pp-info)#metric RP/0/RP0/CPU0:h_N1(config-sr-te-path-metric)#type ? te TE metric type RP/0/RP0/CPU0:h_N1(config-sr-te-path-metric)#type te RP/0/RP0/CPU0:h_N1(config-sr-te-path-metric)# RP/0/RP0/CPU0:h_N1(config-sr-te-path-metric)#show Sat Mar 25 13:10:29.595 UTC segment-routing traffic-eng policy LINK_COLOR_CONSTRAINS_POLICY binding-sid mpls 24365 color 6666 end-point ipv4 6.6.6.6 autoroute include ipv4 6.6.6.6/32 ! candidate-paths preference 100 dynamic metric type igp ! ! ! ! ! ! ! RP/0/RP0/CPU0:h_N1(config-sr-te-path-metric)#
5.2.4 Link Color Constraints の定義
① SR-TE でトラフィックがリンクを通過する際、どの色を通過するのを許可するかの制約事項を定義します。
RP/0/RP0/CPU0:h_N1(config)#seg tra po LINK_COLOR_CONSTRAINS_POLICY can pref 100 RP/0/RP0/CPU0:h_N1(config-sr-te-policy-path-pref)#? constraints Candidate path constraints RP/0/RP0/CPU0:h_N1(config-sr-te-policy-path-pref)#constraints RP/0/RP0/CPU0:h_N1(config-sr-te-path-pref-const)#? affinity Assign affinities to path RP/0/RP0/CPU0:h_N1(config-sr-te-path-pref-const)#affinity ? exclude-any Affinity attributes to exclude - presence of at least one excludes link include-all Affinity attributes - all must be included include-any Affinity attributes - at least one must be included <cr> RP/0/RP0/CPU0:h_N1(config-sr-te-path-pref-const)#
② 3つ選択肢があります。
a) exclude-any Affinity attributes to exclude - presence of at least one excludes link
→ 指定した1つ以上のカラーを除いたものを許可します。
b) include-all Affinity attributes - all must be included
→ 指定したカラーがすべて一致する必要があります。
c) include-any Affinity attributes - at least one must be included
→ 指定した1つ以上のカラーが一致している必要があります。
詳しくは後で検証します。ここでは、a) exclude-any を選択します。
RP/0/RP0/CPU0:h_N1(config-sr-te-path-pref-const)#affinity RP/0/RP0/CPU0:h_N1(config-sr-te-path-pref-const-aff)#exclude-any RP/0/RP0/CPU0:(config-sr-te-path-pref-const-aff-rule)#? name Affinity name RP/0/RP0/CPU0:(config-sr-te-path-pref-const-aff-rule)#name ? RED Affinity color name BULE Affinity color name GREEN Affinity color name WORD Affinity color name RP/0/RP0/CPU0:(config-sr-te-path-pref-const-aff-rule)#name RED ? <cr> RP/0/RP0/CPU0:(config-sr-te-path-pref-const-aff-rule)#name RED RP/0/RP0/CPU0:(config-sr-te-path-pref-const-aff-rule)#name GREEN
③ 最初に検証する条件としては、論理カラーが RED と GREEN のリンクを除外して Dynamic SR-TE が生成される様を確認します。
policy LINK_COLOR_CONSTRAINS_POLICY binding-sid mpls 24365 color 6666 end-point ipv4 6.6.6.6 autoroute include ipv4 6.6.6.6/32 ! candidate-paths preference 100 dynamic metric type igp ! ! constraints affinity exclude-any name RED name GREEN ! ! ! ! ! ! ! !
6. 検証
6.1 SR-TE 基本確認
SR-TEを定義すると新しいインターフェース(SR-TE用のLSP)が出現します。
RP/0/RP0/CPU0:h_N1#show ip interface brief | exclude una Sun Apr 2 09:50:50.758 UTC Interface IP-Address Status Protocol Vrf-Name ★srte_c_6666_ep_6.6.6.6 1.1.1.1 Up Up default Loopback0 1.1.1.1 Up Up default GigabitEthernet0/0/0/0 10.1.2.1 Up Up default GigabitEthernet0/0/0/2 10.1.3.1 Up Up default RP/0/RP0/CPU0:h_N1#
今回定義したSR-TEポリシーは、Head-End:1.1.1.1(h_N1)、color:6000、Tail-End:6.6.6.6(h_N6)です。 ルーティングにその変化が現れています。
RP/0/RP0/CPU0:h_N1#show route 6.6.6.6/32 detail Sun Apr 2 09:52:02.957 UTC Routing entry for 6.6.6.6/32 Known via "isis 1", distance 115, metric 40, labeled SR, label redist non FIB, type level-2 Installed Apr 2 09:30:31.882 for 00:21:31 Routing Descriptor Blocks ★ 6.6.6.6, from 6.6.6.6, via srte_c_6666_ep_6.6.6.6 Route metric is 40 Label: 0x3 (3) Tunnel ID: None Binding Label: 0x5f2d (24365) Extended communities count: 0 Path id:1 Path ref count:0 NHID:0x0(Ref:0) Route version is 0x95 (149) Local Label: 0x3e86 (16006) IP Precedence: Not Set QoS Group ID: Not Set Flow-tag: Not Set Fwd-class: Not Set Route Priority: RIB_PRIORITY_NON_RECURSIVE_MEDIUM (7) SVD Type RIB_SVD_TYPE_LOCAL Download Priority 1, Download Version 1079 No advertising protos. RP/0/RP0/CPU0:h_N1#
Head-End:1.1.1.1(h_N1)の LFIB を確認すると、 SR-TEの NEXT_HOP やTail-End、B-SID(任意):24365も確認できます。
SR-TE(LINK_COLOR_CONSTRAINS_POLICY)
・Head-End:1.1.1.1(h_N1)
・NEXT_HOP:10.1.2.2(Gi0/0/0/0)
・B-SID :24365
RP/0/RP0/CPU0:h_N1#show mpls forwarding Sun Apr 2 09:52:59.620 UTC Local Outgoing Prefix Outgoing Next Hop Bytes Label Label or ID Interface Switched ------ ----------- ------------------ ------------ --------------- ------------ 16002 Pop SR Pfx (idx 2) Gi0/0/0/0 10.1.2.2 0 16003 Pop SR Pfx (idx 3) Gi0/0/0/2 10.1.3.3 0 16004 16004 SR Pfx (idx 4) Gi0/0/0/2 10.1.3.3 0 16005 16005 SR Pfx (idx 5) Gi0/0/0/2 10.1.3.3 0 16006 16006 SR Pfx (idx 6) Gi0/0/0/2 10.1.3.3 0 24000 Pop SR Adj (idx 1) Gi0/0/0/2 10.1.3.3 0 24001 Pop SR Adj (idx 3) Gi0/0/0/2 10.1.3.3 0 24002 Pop SR Adj (idx 1) Gi0/0/0/0 10.1.2.2 0 24003 Pop SR Adj (idx 3) Gi0/0/0/0 10.1.2.2 0 ★24005 Pop 6.6.6.6/32 srte_c_6666_ 6.6.6.6 0 24006 Pop No ID Gi0/0/0/0 10.1.2.2 0 ★24007 16003 SR TE: 4 [TE-INT] Gi0/0/0/0 10.1.2.2 364 24008 Pop No ID Gi0/0/0/2 10.1.3.3 0 ★24365 Pop No ID srte_c_6666_ point2point 0 RP/0/RP0/CPU0:h_N1#
CEFを確認するとSR-TEで定義した内容が反映されています。他のLoopbackアドレスと見比べると分かりやすいかと思います。
SR-TEのautorouteが効いています。他のLoopbackアドレスだとNEXT_HOPがインターフェース名ですが、Head-End宛だけがSR-TEになっています。
RP/0/RP0/CPU0:h_N1#show cef Sun Apr 2 09:54:33.596 UTC Prefix Next Hop Interface ------------------- ------------------- ------------------ 0.0.0.0/0 drop default handler 0.0.0.0/32 broadcast 1.1.1.1/32 receive Loopback0 2.2.2.2/32 10.1.2.2/32 GigabitEthernet0/0/0/0 3.3.3.3/32 10.1.3.3/32 GigabitEthernet0/0/0/2 4.4.4.4/32 10.1.3.3/32 GigabitEthernet0/0/0/2 5.5.5.5/32 10.1.3.3/32 GigabitEthernet0/0/0/2 ★6.6.6.6/32 6.6.6.6/32 srte_c_6666_ep_6.6.6.6 10.1.2.0/24 attached GigabitEthernet0/0/0/0 10.1.2.0/32 broadcast GigabitEthernet0/0/0/0 10.1.2.1/32 receive GigabitEthernet0/0/0/0 10.1.2.255/32 broadcast GigabitEthernet0/0/0/0 10.1.3.0/24 attached GigabitEthernet0/0/0/2 10.1.3.0/32 broadcast GigabitEthernet0/0/0/2 10.1.3.1/32 receive GigabitEthernet0/0/0/2 10.1.3.255/32 broadcast GigabitEthernet0/0/0/2 10.2.3.0/24 10.1.2.2/32 GigabitEthernet0/0/0/0 10.1.3.3/32 GigabitEthernet0/0/0/2 10.2.4.0/24 10.1.2.2/32 GigabitEthernet0/0/0/0 10.3.4.0/24 10.1.3.3/32 GigabitEthernet0/0/0/2 10.3.5.0/24 10.1.3.3/32 GigabitEthernet0/0/0/2 10.4.5.0/24 10.1.3.3/32 GigabitEthernet0/0/0/2 10.4.6.0/24 10.1.3.3/32 GigabitEthernet0/0/0/2 10.5.6.0/24 10.1.3.3/32 GigabitEthernet0/0/0/2 127.0.0.0/8 receive 224.0.0.0/4 0.0.0.0/32 224.0.0.0/24 receive 255.255.255.255/32 broadcast RP/0/RP0/CPU0:h_N1#
SR-TE ポリシーの情報はコマンドで確認することができます。
RP/0/RP0/CPU0:h_N1#show segment-routing traffic-eng policy Sun Apr 2 09:55:27.281 UTC SR-TE policy database --------------------- Color: 6666, End-point: 6.6.6.6 ★1 Name: srte_c_6666_ep_6.6.6.6 Status: ★2 Admin: up Operational: up for 00:24:55 (since Apr 2 09:30:31.714) Candidate-paths: Preference: 100 (configuration) (active) ★3 Name: LINK_COLOR_CONSTRAINS_POLICY ★4 Requested BSID: 24365 Constraints: Protection Type: protected-preferred ★5 Affinity: ★5 exclude-any: ★5 GREEN ★5 RED Maximum SID Depth: 10 ★6 Dynamic (valid) ★7 Metric Type: TE, Path Accumulated Metric: 130 ★8 16002 [Prefix-SID, 2.2.2.2] ★8 16003 [Prefix-SID, 3.3.3.3] ★8 24003 [Adjacency-SID, 10.3.4.3 - 10.3.4.4] ★8 16006 [Prefix-SID, 6.6.6.6] Attributes: Binding SID: 24365 Forward Class: Not Configured Steering labeled-services disabled: no Steering BGP disabled: no IPv6 caps enable: yes Invalidation drop enabled: no RP/0/RP0/CPU0:h_N1#
★1:Color と End-point(Head-End) が自動的にLSP名に反映されるのが特徴です。
SR-TE LSP名(Name: srte_c_6_ep_6.6.6.6)から、Color: 6000, End-point: 6.6.6.6であることが分かります。
★2:SR-TEが有効な状態を示しています。(Admin: up Operational: up)
★3:SR-TE ポリシーは、LINK_COLOR_CONSTRAINS_POLICY であることが分かります。
★4:このSR-TEに紐づけられているBinding SIDは、 24365 であることが分かります。
★5:論理リンクの GREEN と RED を通過しないTEであることが分かります。
★6:有効な Dynamic SR-TE であることが分かります。
★7:Dynamic SR-TE は TE のメトリックで計算して 最短経路が 130 であることが分かります。
★8:SID-list(今回は4つのSID)が確認できます。
tracerouteを実行すると、SR-TE の経路が分かります。
RP/0/RP0/CPU0:h_N1#traceroute 6.6.6.6 source 1.1.1.1 Sun Apr 2 10:07:46.695 UTC Type escape sequence to abort. Tracing the route to 6.6.6.6 1 10.1.2.2 [MPLS: Labels 16003/24003/16006 Exp 0] 11 msec 3 msec 3 msec 2 10.2.3.3 [MPLS: Labels 24003/16006 Exp 0] 6 msec 4 msec 3 msec 3 10.3.4.4 [MPLS: Label 16006 Exp 0] 7 msec 3 msec 3 msec 4 10.4.6.6 16 msec * 16 msec RP/0/RP0/CPU0:h_N1#
除外リンク(RED & GREEN)を経由しない、かつ TE のメトリックが最小となる経路の SR-TE が動的に生成されていることが分かります。
次のコマンドで、SR-TE の転送状況が確認できます。
RP/0/RP0/CPU0:h_N1#show segment-routing traffic-eng forwarding policy Sun Apr 2 10:15:43.883 UTC SR-TE Policy Forwarding database -------------------------------- Color: 6666, End-point: 6.6.6.6 Name: srte_c_6666_ep_6.6.6.6 Binding SID: 24365 Active LSP: Candidate path: Preference: 100 (configuration) Name: LINK_COLOR_CONSTRAINS_POLICY Local label: 24007 Segment lists: SL[0]: Name: dynamic Switched Packets/Bytes: 25/700 [MPLS -> MPLS]: 25/700 Paths: Path[0]: Outgoing Label: 16003 Outgoing Interfaces: GigabitEthernet0/0/0/0 Next Hop: 10.1.2.2 Switched Packets/Bytes: 25/700 [MPLS -> MPLS]: 25/700 FRR Pure Backup: No ECMP/LFA Backup: No Internal Recursive Label: Unlabelled (recursive) Label Stack (Top -> Bottom): { 16003, 24003, 16006 } Policy Packets/Bytes Switched: 51/1428 RP/0/RP0/CPU0:h_N1#
6.2 metric type:igp(exclude-any: RED and GREEN )
ここで、metric type:igp に変更します。
RP/0/RP0/CPU0:h_N1(config)# RP/0/RP0/CPU0:h_N1(config)#seg tr policy LINK_COLOR_CONSTRAINS_POLICY can pref$ RP/0/RP0/CPU0:h_N1(config-sr-te-path-metric)#type igp RP/0/RP0/CPU0:h_N1(config-sr-te-path-metric)#show Sun Apr 2 10:17:55.796 UTC segment-routing traffic-eng policy LINK_COLOR_CONSTRAINS_POLICY candidate-paths preference 100 dynamic metric type igp ! ! ! ! ! ! ! RP/0/RP0/CPU0:h_N1(config-sr-te-path-metric)#
インターフェースの状態、ルーティングテーブル、CEFは変化がありませんが、LFIBに変化が現れます。
RP/0/RP0/CPU0:h_N1#show mpls forwarding Sun Apr 2 10:19:45.505 UTC Local Outgoing Prefix Outgoing Next Hop Bytes Label Label or ID Interface Switched ------ ----------- ------------------ ------------ --------------- ------------ 16002 Pop SR Pfx (idx 2) Gi0/0/0/0 10.1.2.2 0 16003 Pop SR Pfx (idx 3) Gi0/0/0/2 10.1.3.3 0 16004 16004 SR Pfx (idx 4) Gi0/0/0/2 10.1.3.3 0 16005 16005 SR Pfx (idx 5) Gi0/0/0/2 10.1.3.3 0 16006 16006 SR Pfx (idx 6) Gi0/0/0/2 10.1.3.3 0 24000 Pop SR Adj (idx 1) Gi0/0/0/2 10.1.3.3 0 24001 Pop SR Adj (idx 3) Gi0/0/0/2 10.1.3.3 0 24002 Pop SR Adj (idx 1) Gi0/0/0/0 10.1.2.2 0 24003 Pop SR Adj (idx 3) Gi0/0/0/0 10.1.2.2 0 24005 Pop 6.6.6.6/32 srte_c_6666_ 6.6.6.6 0 24006 Pop No ID Gi0/0/0/0 10.1.2.2 0 24008 Pop No ID Gi0/0/0/2 10.1.3.3 0 ★ 24009 24003 SR TE: 4 [TE-INT] Gi0/0/0/0 10.1.2.2 252 24365 Pop No ID srte_c_6666_ point2point 0 RP/0/RP0/CPU0:h_N1#
IGP のメトリック合計が最も小さい経路のみに SR-TE が動的に変化します。
SR-TE ポリシーにもその変化は現れます。
RP/0/RP0/CPU0:h_N1#show segment-routing traffic-eng policy Sun Apr 2 10:21:28.895 UTC SR-TE policy database --------------------- Color: 6666, End-point: 6.6.6.6 Name: srte_c_6666_ep_6.6.6.6 Status: Admin: up Operational: up for 00:50:57 (since Apr 2 09:30:31.714) Candidate-paths: Preference: 100 (configuration) (active) Name: LINK_COLOR_CONSTRAINS_POLICY Requested BSID: 24365 Constraints: Protection Type: protected-preferred Affinity: exclude-any: GREEN RED Maximum SID Depth: 10 Dynamic (valid) ★1 Metric Type: IGP, Path Accumulated Metric: 220 ★2 16002 [Prefix-SID, 2.2.2.2] ★2 24003 [Adjacency-SID, 10.2.4.2 - 10.2.4.4] ★2 16006 [Prefix-SID, 6.6.6.6] Attributes: Binding SID: 24365 Forward Class: Not Configured Steering labeled-services disabled: no Steering BGP disabled: no IPv6 caps enable: yes Invalidation drop enabled: no RP/0/RP0/CPU0:h_N1#
★1:Dynamic SR-TE は IGP のメトリックで計算して 最短経路が 220 であることが分かります。
★2:SID-list(今回は3つのSID)が確認できます。
RP/0/RP0/CPU0:h_N1#traceroute 6.6.6.6 source 1.1.1.1 Sun Apr 2 10:23:30.644 UTC Type escape sequence to abort. Tracing the route to 6.6.6.6 1 10.1.2.2 [MPLS: Labels 24003/16006 Exp 0] 10 msec 3 msec 3 msec 2 10.2.4.4 [MPLS: Label 16006 Exp 0] 5 msec 3 msec 3 msec 3 10.4.6.6 13 msec * 5 msec RP/0/RP0/CPU0:h_N1#
除外リンク(RED & GREEN)を経由しない、かつ IGP のメトリックが最小となる経路の SR-TE が動的に生成されていることが分かります。
次のコマンドで、SR-TE の転送状況が確認できます。
RP/0/RP0/CPU0:h_N1#show segment-routing traffic-eng forwarding policy detail Sun Apr 2 10:24:47.843 UTC SR-TE Policy Forwarding database -------------------------------- Color: 6666, End-point: 6.6.6.6 Name: srte_c_6666_ep_6.6.6.6 Binding SID: 24365 Active LSP: Candidate path: Preference: 100 (configuration) Name: LINK_COLOR_CONSTRAINS_POLICY Local label: 24009 Segment lists: SL[0]: Name: dynamic Switched Packets/Bytes: 18/504 [MPLS -> MPLS]: 18/504 Paths: Path[0]: Outgoing Label: 24003 Outgoing Interfaces: GigabitEthernet0/0/0/0 Next Hop: 10.1.2.2 Switched Packets/Bytes: 18/504 [MPLS -> MPLS]: 18/504 FRR Pure Backup: No ECMP/LFA Backup: No Internal Recursive Label: Unlabelled (recursive) Label Stack (Top -> Bottom): { 24003, 16006 } Path-id: 1, Weight: 64 Policy Packets/Bytes Switched: 69/1932 RP/0/RP0/CPU0:h_N1#
”exclude-any”の使い方が分かったので、次の選択肢を検証します。
6.3 include-all:BLUE / metric type:IGP
指定したカラーがすべて一致するという制約条件に変更します。 h_N1 から h_N6 の経路で”include-all”として指定できるカラーは BLUE しかありません。
RP/0/RP0/CPU0:h_N1(config-sr-te-path-pref-const)#affinity ? exclude-any Affinity attributes to exclude - presence of at least one excludes link include-all Affinity attributes - all must be included include-any Affinity attributes - at least one must be included <cr> RP/0/RP0/CPU0:h_N1(config-sr-te-path-pref-const)#
ということで、”include-all:BLUE ”に変更します。
RP/0/RP0/CPU0:h_N1(config)#seg tr po LINK_COLOR_CONSTRAINS_POLICY can pref 100 RP/0/RP0/CPU0:h_N1(config-sr-te-policy-path-pref)#constraints affinity RP/0/RP0/CPU0:h_N1(config-sr-te-path-pref-const-aff)#no exclude-any RP/0/RP0/CPU0:h_N1(config-sr-te-path-pref-const-aff)#include-all RP/0/RP0/CPU0:(config-sr-te-path-pref-const-aff-rule)#name BLUE RP/0/RP0/CPU0:(config-sr-te-path-pref-const-aff-rule)#show Sun Apr 2 10:38:43.268 UTC segment-routing traffic-eng policy LINK_COLOR_CONSTRAINS_POLICY candidate-paths preference 100 constraints affinity include-all name BLUE ! ! ! ! ! ! ! ! RP/0/RP0/CPU0:(config-sr-te-path-pref-const-aff-rule)#
traceroute を実行してみます。
RP/0/RP0/CPU0:h_N1#traceroute 6.6.6.6 source 1.1.1.1 Sun Apr 2 12:06:11.386 UTC Type escape sequence to abort. Tracing the route to 6.6.6.6 1 10.1.3.3 [MPLS: Label 16006 Exp 0] 10 msec 4 msec 3 msec 2 10.3.5.5 [MPLS: Label 16006 Exp 0] 5 msec 3 msec 3 msec 3 10.5.6.6 8 msec * 9 msec RP/0/RP0/CPU0:h_N1#
(。´・ω・)ん? おかしい! RED のリンクを通過しています。以下のようになることを想定していました。
許可リンク(BLUE のみ)を経由する、かつ IGP のメトリックが最小となる経路の SR-TE が動的に生成されることを想定していました。
RP/0/RP0/CPU0:h_N1#show segment-routing traffic-eng policy Sun Apr 2 14:09:14.130 UTC SR-TE policy database --------------------- Color: 6666, End-point: 6.6.6.6 Name: srte_c_6666_ep_6.6.6.6 Status: Admin: up Operational: up for 02:15:18 (since Apr 2 11:53:56.135) Candidate-paths: Preference: 100 (configuration) (active) Name: LINK_COLOR_CONSTRAINS_POLICY Requested BSID: 24365 Protection Type: protected-preferred Maximum SID Depth: 10 Dynamic (valid) Metric Type: IGP, Path Accumulated Metric: 30 16006 [Prefix-SID, 6.6.6.6] Attributes: Binding SID: 24365 Forward Class: Not Configured Steering labeled-services disabled: no Steering BGP disabled: no IPv6 caps enable: yes Invalidation drop enabled: no RP/0/RP0/CPU0:h_N1#
Affinity: が何故か反映されない。 include-all:BLUE / metric type:TE にしても同じ結果でした。 何か bug を踏んだ予感がします。
6.4 include-any:BLUE and RED / metric type:TE
指定した1つ以上のカラーが一致するという制約条件に変更します。
RP/0/RP0/CPU0:h_N1(config-sr-te-path-pref-const)#affinity ? exclude-any Affinity attributes to exclude - presence of at least one excludes link include-all Affinity attributes - all must be included include-any Affinity attributes - at least one must be included <cr> RP/0/RP0/CPU0:h_N1(config-sr-te-path-pref-const)#
ということで、”include-any:RED & BLUE ”に変更します。
RP/0/RP0/CPU0:h_N1(config)#seg tr po LINK_COLOR_CONSTRAINS_POLICY can pref 100$ RP/0/RP0/CPU0:h_N1(config-sr-te-path-pref-const-aff)#no include-all RP/0/RP0/CPU0:h_N1(config-sr-te-path-pref-const-aff)#include-any RP/0/RP0/CPU0:(config-sr-te-path-pref-const-aff-rule)#name RED RP/0/RP0/CPU0:(config-sr-te-path-pref-const-aff-rule)#name BLUE RP/0/RP0/CPU0:(config-sr-te-path-pref-const-aff-rule)#show Sun Apr 2 14:29:20.521 UTC segment-routing traffic-eng policy LINK_COLOR_CONSTRAINS_POLICY candidate-paths preference 100 constraints affinity include-any name RED name BLUE ! ! ! ! ! ! ! ! RP/0/RP0/CPU0:(config-sr-te-path-pref-const-aff-rule)#
traceroute を確認するとぱっと見は想定通りですが、SID-listが妙です。
RP/0/RP0/CPU0:h_N1#traceroute 6.6.6.6 source 1.1.1.1 Sun Apr 2 14:30:51.761 UTC Type escape sequence to abort. Tracing the route to 6.6.6.6 1 10.1.3.3 [MPLS: Label 16006 Exp 0] 19 msec 5 msec 4 msec 2 10.3.5.5 [MPLS: Label 16006 Exp 0] 6 msec 4 msec 3 msec 3 10.5.6.6 10 msec * 5 msec RP/0/RP0/CPU0:h_N1#
許可リンク(RED & BLUE)を経由する、かつ IGP のメトリックが最小となる経路の SR-TE が動的に生成されることを想定していました。
SR-TE ポリシーを確認するとやっぱりおかしい。down しているし affinity が足りないです。
RP/0/RP0/CPU0:h_N1#show segment-routing traffic-eng policy Sun Apr 2 14:33:39.609 UTC SR-TE policy database --------------------- Color: 6666, End-point: 6.6.6.6 Name: srte_c_6666_ep_6.6.6.6 Status: ★ Admin: up Operational: down for 00:05:41 (since Apr 2 14:27:57.938) Candidate-paths: Preference: 100 (configuration) Name: LINK_COLOR_CONSTRAINS_POLICY Requested BSID: 24365 Constraints: Protection Type: protected-preferred ★ Affinity: ★ include-any: ★ RED Maximum SID Depth: 10 Dynamic (invalid) Last error: No path found Metric Type: IGP, Path Accumulated Metric: 30 Attributes: Forward Class: 0 Steering labeled-services disabled: no Steering BGP disabled: no IPv6 caps enable: no Invalidation drop enabled: no RP/0/RP0/CPU0:h_N1#
7. 検証から分かったこと
Link Color Constraints は意図した動作をするものとしないものがある。 IOS-XR 7.7.1 に変えても、”include-any ”と ”include-all ”は意図した動作をしませんでした。
8. 参考
① Constraints
www.cisco.com
② Segment Routing Traffic Engineering – Dynamic Candidate PathのLink Color
y-network.jp
次回は、SR & L3VPN について記事を書きます。
最後までお読みいただきありがとうございました!