今回はAutomated SteeringのColor Extended CommunityのColor Only Bitの動作を説明します。
概要
Color Only Bitについて
以下のように、IPv4ネットワークとIPv6ネットワークが共有している状況で、IPv4とIPv6の両方のパケットをSR-TE Policyで処理した場合があります。
この際、Head-endとEnd-pointとなるルータが同じ場合でも、IPv4用のSR-TE PolicyとIPv6用のSR-TE Policyを個別に設定する必要があります。
通常、Automated Steeringでは、以下の条件を満たしているSR-TE PolicyをBGP経由で学習したルート情報に適用します。。
- SR-TE PolicyのColorとルート情報に付加されたColorが等しい
- SR-TE PolicyのEnd-pointのアドレスとルート情報のNext Hopアトリビュートのアドレスが等しい
もし、以下のように、IPv6ルートに対して、IPv4用のSR-TE PolicyのColorを付加して、BGPで広報しても、SR-TE PolicyのEnd-pointのアドレスとルート情報のNext Hopアトリビュートのアドレスが異なるため、IPv6のパケットをIPv4用のSR-TE Policyで処理できません。
このような状況では、Color Extended CommunityにはCO(Color Only) bitを使用することで、IPv4用のSR-TE PolicyでIPv4とIPv6の両方のパケットを処理させることが可能です。CO bitが01の場合、Head-endとなるルータはSR-TE PolicyのColorとルート情報に付加されたColorさえ一致していれば、そのルート宛のパケットをSR-TE Policyで処理できるようになります。
また、CO bitを使用して、IPv4とIPv6の両方のパケットを処理させるSR-TE Policyでは、End-pointのアドレスに0.0.0.0.を指定します。この0.0.0.0をNull End-pointと呼びます。
検証内容と設定
基本設定の内容
R1-R2-R3-R4間でIS-IS Araa 49.0000を構成します。
IS-ISでSR-TEを有効にし、IPv4とIPv6の両方のルート情報を交換します。
R1とR3をAS 100に所属させます。
R1とR3間でIPv4アドレスを使用したIBGPネイバーと、IPv6アドレスを使用したIBGPネイバーを構成します。
R3において、IPv4アドレスを使用したIBGPネイバー経由で10.5.5.0/24を広報します。Color 1を付加します。
R3において、IPv6アドレスを使用したIBGPネイバー経由で1005::/64を広報します。Color 1を付加します。
R1でLoopback Interfaceの1.1.1.1/32にPrefix SIDとして20101を割り当てます。
R2でLoopback Interfaceの2.2.2.2/32にPrefix SIDとして20201を割り当てます。
R3でLoopback Interfaceの3.3.3.3/32にPrefix SIDとして20301を割り当てます。
R4でLoopback Interfaceの4.4.4.4/32にPrefix SIDとして20401を割り当てます。
R1で以下のSR-TE Policyを設定します。
- SR-TE Policy 1 : Color = 1 , End-point = 3.3.3.3 , SID = 20401 20301
IPv4ネットワーク
IPv6ネットワーク
初期設定
interface Loopback0
ipv4 address 1.1.1.1 255.255.255.255
ipv6 address 2000::1/128
!
interface GigabitEthernet0/0/0/0
ipv4 address 10.1.1.1 255.255.255.0
ipv6 address 1001::1/64
!
router isis 1
is-type level-2-only
net 49.0001.0000.0000.0001.00
address-family ipv4 unicast
metric-style wide
segment-routing mpls
!
address-family ipv6 unicast
metric-style wide
!
interface Loopback0
address-family ipv4 unicast
prefix-sid absolute 20101
!
address-family ipv6 unicast
!
!
interface GigabitEthernet0/0/0/0
point-to-point
address-family ipv4 unicast
!
address-family ipv6 unicast
!
!
!
router bgp 100
bgp router-id 1.1.1.1
address-family ipv4 unicast
!
address-family ipv6 unicast
!
neighbor 2000::3
remote-as 100
update-source Loopback0
address-family ipv6 unicast
!
!
neighbor 3.3.3.3
remote-as 100
update-source Loopback0
address-family ipv4 unicast
!
!
!
segment-routing
traffic-eng
segment-list SID_LIST
index 10 mpls label 20401
index 20 mpls label 20301
!
policy SR-TE_POLICY
color 1 end-point ipv4 0.0.0.0
candidate-paths
preference 10
explicit segment-list SID_LIST
interface Loopback0
ipv4 address 2.2.2.2 255.255.255.255
ipv6 address 2000::2/128
!
interface GigabitEthernet0/0/0/0
ipv4 address 10.1.1.2 255.255.255.0
ipv6 address 1001::2/64
!
interface GigabitEthernet0/0/0/1
ipv4 address 10.2.2.2 255.255.255.0
ipv6 address 1002::2/64
!
interface GigabitEthernet0/0/0/2
ipv4 address 10.3.3.2 255.255.255.0
ipv6 address 1003::2/64
!
router isis 1
is-type level-2-only
net 49.0001.0000.0000.0002.00
address-family ipv4 unicast
metric-style wide
segment-routing mpls
!
address-family ipv6 unicast
metric-style wide
!
interface Loopback0
address-family ipv4 unicast
prefix-sid absolute 20201
!
address-family ipv6 unicast
!
!
interface GigabitEthernet0/0/0/0
point-to-point
address-family ipv4 unicast
!
address-family ipv6 unicast
!
!
interface GigabitEthernet0/0/0/1
point-to-point
address-family ipv4 unicast
!
address-family ipv6 unicast
!
!
interface GigabitEthernet0/0/0/2
point-to-point
address-family ipv4 unicast
!
address-family ipv6 unicast
!
!
!
segment-routing
traffic-eng
interface Loopback0
ipv4 address 3.3.3.3 255.255.255.255
ipv6 address 2000::3/128
!
interface Loopback1
ipv4 address 10.5.5.3 255.255.255.0
ipv6 address 1005::3/64
!
interface GigabitEthernet0/0/0/0
ipv4 address 10.2.2.3 255.255.255.0
ipv6 address 1002::3/64
!
interface GigabitEthernet0/0/0/1
ipv4 address 10.4.4.3 255.255.255.0
ipv6 address 1004::3/64
!
extcommunity-set opaque COLOR_EXT_COMMUNITY_SET
1
end-set
!
route-policy BGP_IPv4_ROUTE_POLICY
if destination in (10.5.5.0/24) then
set extcommunity color COLOR_EXT_COMMUNITY_SET
endif
pass
end-policy
!
route-policy BGP_IPv6_ROUTE_POLICY
if destination in (1005::/64) then
set extcommunity color COLOR_EXT_COMMUNITY_SET
endif
pass
end-policy
!
router isis 1
is-type level-2-only
net 49.0001.0000.0000.0003.00
address-family ipv4 unicast
metric-style wide
segment-routing mpls
!
address-family ipv6 unicast
metric-style wide
!
interface Loopback0
address-family ipv4 unicast
prefix-sid absolute 20301
!
address-family ipv6 unicast
!
!
interface GigabitEthernet0/0/0/0
point-to-point
address-family ipv4 unicast
!
address-family ipv6 unicast
!
!
interface GigabitEthernet0/0/0/1
point-to-point
address-family ipv4 unicast
!
address-family ipv6 unicast
!
!
!
router bgp 100
bgp router-id 3.3.3.3
address-family ipv4 unicast
network 10.5.5.0/24
!
address-family ipv6 unicast
network 1005::/64
!
neighbor 1.1.1.1
remote-as 100
update-source Loopback0
address-family ipv4 unicast
route-policy BGP_IPv4_ROUTE_POLICY out
!
!
neighbor 2000::1
remote-as 100
update-source Loopback0
address-family ipv6 unicast
route-policy BGP_IPv6_ROUTE_POLICY out
!
!
!
segment-routing
traffic-eng
interface Loopback0
ipv4 address 4.4.4.4 255.255.255.255
ipv6 address 2000::4/128
!
interface GigabitEthernet0/0/0/0
ipv4 address 10.3.3.4 255.255.255.0
ipv6 address 1003::4/64
!
interface GigabitEthernet0/0/0/1
ipv4 address 10.4.4.4 255.255.255.0
ipv6 address 1004::4/64
!
router isis 1
is-type level-2-only
net 49.0001.0000.0000.0004.00
address-family ipv4 unicast
metric-style wide
segment-routing mpls
!
address-family ipv6 unicast
metric-style wide
!
interface Loopback0
address-family ipv4 unicast
prefix-sid absolute 20401
!
address-family ipv6 unicast
!
!
interface GigabitEthernet0/0/0/0
point-to-point
address-family ipv4 unicast
!
address-family ipv6 unicast
!
!
interface GigabitEthernet0/0/0/1
point-to-point
address-family ipv4 unicast
!
address-family ipv6 unicast
!
!
!
segment-routing
traffic-eng
設定と状態の確認
SR-TE Policyの状態確認
R1のSR-TE Policyを見ると、End-pointが0.0.0.0であることが確認できます。また、Colorが1、BSIDが24003であることが確認できます。
RP/0/RP0/CPU0:R1#show segment-routing traffic-eng policy
SR-TE policy database
---------------------
Color: 1, End-point: 0.0.0.0
Name: srte_c_1_ep_0.0.0.0
Status:
Admin: up Operational: up for 00:15:13 (since Jun 29 21:43:25.554)
Candidate-paths:
Preference: 10 (configuration) (active)
Name: SR-TE_POLICY
Requested BSID: dynamic
Explicit: segment-list SID_LIST (valid)
Weight: 1, Metric Type: TE
20401
20301
Attributes:
Binding SID: 24003
Forward Class: Not Configured
Steering labeled-services disabled: no
Steering BGP disabled: no
IPv6 caps enable: yes
BGPとFIBの状態確認(CO bitセット前)
現在、R3はCO bitをセットせずに10.5.5.0/24を広報しています。
R1のBGPテーブルを見ると、10.5.5.0/24と1005::/64にはColor 1が付加されていますが、Color 1のSR-TE Policyが関連付けられていないことが確認できます。
RP/0/RP0/CPU0:R1#show bgp 10.5.5.0/24
BGP routing table entry for 10.5.5.0/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 8 8
Last Modified: Jun 29 22:03:51.549 for 00:03:01
Paths: (1 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
Local
3.3.3.3 (metric 30) from 3.3.3.3 (3.3.3.3)
Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
Received Path ID 0, Local Path ID 1, version 8
Extended community: Color:1
RP/0/RP0/CPU0:R1#show bgp ipv6 unicast 1005::/64
BGP routing table entry for 1005::/64
Versions:
Process bRIB/RIB SendTblVer
Speaker 7 7
Last Modified: Jun 29 22:03:51.549 for 00:03:09
Paths: (1 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
Local
2000::3 (metric 30) from 2000::3 (3.3.3.3)
Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
Received Path ID 0, Local Path ID 1, version 7
Extended community: Color:1
R1のFIBを見ると、10.5.5.0/24と1005::/64宛のパケットをSR-TE Policyで処理しないことが確認できます。
RP/0/RP0/CPU0:R1#show cef 10.5.5.0/24
10.5.5.0/24, version 33, internal 0x5000001 0x0 (ptr 0xdef3168) [1], 0x0 (0xe0b4868), 0x0 (0x0)
Updated Jun 29 22:03:51.521
Prefix Len 24, traffic index 0, precedence n/a, priority 4
via 3.3.3.3/32, 3 dependencies, recursive [flags 0x6000]
path-idx 0 NHID 0x0 [0xdef3588 0x0]
next hop 3.3.3.3/32 via 3.3.3.3/32
RP/0/RP0/CPU0:R1#show cef ipv6 1005::/64
1005::/64, version 22, internal 0x5000001 0x0 (ptr 0xddddcac) [1], 0x0 (0xe3415a8), 0x0 (0x0)
Updated Jun 29 22:03:51.522
Prefix Len 64, traffic index 0, precedence n/a, priority 4
via 2000::3/128, 3 dependencies, recursive [flags 0x6000]
path-idx 0 NHID 0x0 [0xddde134 0x0]
next hop 2000::3/128 via 2000::3/128
CO bitをセット
CO bitを設定するには、OpaqueタイプのExtended Community Setで、co-flag 01オプションを指定します。
extcommunity-set opaque COLOR_EXT_COMMUNITY_SET
1 co-flag 01
end-set
BGPとFIBの状態確認(CO bitセット後)
現在、R3はCO bitに01をセットして10.5.5.0/24と1005::/64を広報しています。
以下はR3がR1に送信したBGP UPDATEメッセージのキャプチャになります。Color Extended CommunityのCO bitに01がセットされていることが確認できます。
R1のBGPテーブルを見ると、10.5.5.0/24と1005::/64のCO bitに01がセットされており、Color 1のSR-TE Policyが関連付けられていることが確認できます。
RP/0/RP0/CPU0:R1#show bgp 10.5.5.0/24
BGP routing table entry for 10.5.5.0/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 9 9
Last Modified: Jun 29 22:12:44.549 for 00:02:29
Paths: (1 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
Local
3.3.3.3 C:1 (bsid:24003) (metric 30) from 3.3.3.3 (3.3.3.3)
Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
Received Path ID 0, Local Path ID 1, version 9
Extended community: Color[CO-Flag]:1[01]
SR policy color 1, ipv4 null endpoint, up, not-registered, bsid 24003
RP/0/RP0/CPU0:R1#show bgp ipv6 unicast 1005::/64
BGP routing table entry for 1005::/64
Versions:
Process bRIB/RIB SendTblVer
Speaker 8 8
Last Modified: Jun 29 22:12:44.549 for 00:02:35
Paths: (1 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
Local
2000::3 C:1 (bsid:24003) (metric 30) from 2000::3 (3.3.3.3)
Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
Received Path ID 0, Local Path ID 1, version 8
Extended community: Color[CO-Flag]:1[01]
SR policy color 1, ipv4 null endpoint, up, not-registered, bsid 24003
R1のFIBを見ると、10.5.5.0/24と1005::/64宛のパケットをBSIDが24003のSR-TE Policy(Color 1)で処理することが確認できます。
RP/0/RP0/CPU0:R1#show cef 10.5.5.0/24
10.5.5.0/24, version 35, internal 0x5000001 0x0 (ptr 0xdef3168) [1], 0x0 (0xe0b4868), 0x0 (0x0)
Updated Jun 29 22:12:44.607
Prefix Len 24, traffic index 0, precedence n/a, priority 4
via local-label 24003, 3 dependencies, recursive [flags 0x6000]
path-idx 0 NHID 0x0 [0xd264fb8 0x0]
recursion-via-label
next hop via 24003/1/21
RP/0/RP0/CPU0:R1#show cef ipv6 1005::/64
1005::/64, version 24, internal 0x5000001 0x0 (ptr 0xddddcac) [1], 0x0 (0xe3415a8), 0xa08 (0xe9a4368)
Updated Jun 29 22:12:44.611
Prefix Len 64, traffic index 0, precedence n/a, priority 4
via local-label 24003, 3 dependencies, recursive [flags 0x6000]
path-idx 0 NHID 0x0 [0xd264ee8 0x0]
recursion-via-label
next hop via 24003/0/21
next hop srte_c_1_ep_ labels imposed {ImplNull ExpNullv6}
IPv4の疎通確認(CO bitセット後)
R1の1.1.1.1からR3の10.5.5.3へTracerouteを実施します。
R1はColor 1のSR-TE Policyを使用してパケットを転送していることが確認できます。
RP/0/RP0/CPU0:R1#traceroute 10.5.5.3 source 1.1.1.1
Type escape sequence to abort.
Tracing the route to 10.5.5.3
1 10.1.1.2 [MPLS: Labels 20401/20301 Exp 0] 52 msec 51 msec 59 msec
2 10.3.3.4 [MPLS: Label 20301 Exp 0] 58 msec 58 msec 54 msec
3 10.4.4.3 64 msec * 45 msec
IPv6の疎通確認(CO bitセット後)
R1の2000::1からR3の1005::3へTracerouteを実施します。
R1はColor 1のSR-TE Policyを使用してパケットを転送していることが確認できます。(2はIPv6のExplicit Null用のLabelになります。)
RP/0/RP0/CPU0:R1#traceroute 1005::3 source 2000::1
Type escape sequence to abort.
Tracing the route to 1005::3
1 1001::2 [MPLS: Labels 20401/20301/2 Exp 0] 12 msec 8 msec 12 msec
2 1003::4 [MPLS: Labels 20301/2 Exp 0] 17 msec 13 msec 8 msec
3 1005::3 18 msec 21 msec 14 msec
コメント