ISIS Segment Routing IPv6¶
Segment routing for IPv6 (SRv6) is used by the IGP protocols to interconnect network devices. This chapter explains how to configure SRv6 in IS-IS protocol, by using an IPv6 dataplane. Also, SRv6 static routes are used to illustrate how to steer traffic thanks to the learned SIDs.
IS-IS SRv6 basic configuration¶
The below configuration shows how to enable SRv6 service on the IS-IS instance
of the main
VRF. The :rfc:9252
leverages the ability for the IS-IS protocol
to receive incoming SRv6 traffic for forwarding or for local processing.
ISIS SRv6 locator configuration¶
The below configuration adds a loc1
locator to the 1
IS-IS instance.
vsr running config# vrf main
vsr running vrf main# routing segment-routing ipv6
vsr running ipv6# locator loc1 prefix 2001:db8:1::/48 block-len 24
vsr running ipv6# .. .. interface loop1
vsr running interface loop1# isis area-tag 1
vsr running interface loop1# isis ipv6-routing true
vsr running interface loop1# .. interface eth3
vsr running interface eth3# isis area-tag 1
vsr running interface eth3# isis ipv6-routing true
vsr running interface eth3# .. isis instance 1
vsr running isis# area-address 49.0002.0000.1979.00
vsr running isis# is-type level-1
vsr running isis# segment-routing ipv6
vsr running ipv6#! locator loc1
vsr running ipv6# / vrf main interface physical eth3
vsr running physical eth3#! ipv6 address fd00:125::1/64
vsr running physical eth3#! port pci-b0s6
vsr running physical eth3# .. ..
vsr running vrf main# interface loopback loop1
vsr running loopback loop1# ipv6 address 1:1::1:1/128
vsr running loopback loop1# ipv4 address 1.1.1.1/32
vsr running loopback loop1#
The locator chunk is distributed by the IS-IS packets to inform the IPv6
reachability of the 2001:db8:1::/48
sub-network.
IS-IS will pick up SIDs values from that chunk, to provision its global
SID. That value will be transmitted along with the router capabilities to
signify that the IS-IS instance supports the End
behavior associated with that
SID. The below show
command displays the End
SID value chosen by the vsr
device:
vsr> show isis database detail
Area 1:
IS-IS Level-1 link-state database:
LSP ID PduLen SeqNumber Chksum Holdtime ATT/P/OL
vsr.00-00 * 158 0x00000003 0x1fe5 1129 0/0/0
Protocols Supported: IPv6
Area Address: 49
Hostname: vsr
TE Router ID: 1.1.1.1
Router Capability: 1.1.1.1 , D:0, S:0
SRv6: O:0
IPv6 Reachability: 2001:db8:1::/48 (Metric: 0)
IPv6 Reachability: 1:1::1:1/128 (Metric: 10)
Subtlvs:
SRv6 Locator: 2001:db8:1::/48 (Metric: 0) ipv4-unicast
Sub-TLVs:
SRv6 End SID Endpoint Behavior: End, SID value: 2001:db8:1::
Sub-Sub-TLVs:
SRv6 SID Structure Locator Block length: 24, Locator Node length: 24, Function length: 16, Argument length: 0,
1 LSPs
Other SIDs values are allocated from from that chunk and associated to
the End.X
behavior.
The following output displays the segment routing nodes, along with the defined MSDs capabilities for SRv6.
vsr> show isis segment-routing ipv6
Area 1:
IS-IS L1 SRv6-Nodes:
System ID Algorithm SRH Max SL SRH Max End Pop SRH Max H.encaps SRH Max End D
-----------------------------------------------------------------------------------------
0002.0000.1979 S-SPF 3 3 2 5
0002.0000.1974 S-SPF 3 3 2 5
Note
Virtual Service Router default MSD values for SRv6 are not configurable, and have no impact on the dataplane behaviour.
Handling SRv6 traffic for forwarding¶
As for MPLS networks, an SRv6 device may act as an LSR device. For SRv6, this implies that the SRH of IPv6 packets is modified to process the SID in the proposed segment list.
An incoming packet is received, the srh is modified and the packet’s destination address is changed to reflect the new SID referenced in the srh. The packet is then forwarded to the next address.
In order to handle incoming SRv6 traffic for forwarding, the same configuration
as before can be used. The show
command below displays the routing entry that SRv6
packets with a SRH that has sid 2001:db8:1::
selected, follow.
vsr> show ipv6 route protocol isis
Codes: K - kernel route, C - connected, S - static, R - RIPng,
O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
A - Babel, D - SHARP, F - PBR, f - OpenFabric,
t - Table-Direct,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
I>* 2001:db8:1::/128 [115/0] is directly connected, sr0, seg6local End USP, weight 1, 00:06:20
Note
That route uses a local sr0
interface, which is automatically created for hosting
seg6local
routes.
Handling SRv6 traffic for local processing¶
As for MPLS networks, an SRv6 device may act as an LER device. For SRv6, this implies that the SRH of IPv6 packets is popped to process the inner packet.
In order to handle incoming SRv6 traffic for local processing, the
destination address SID value must be configured on a local interface. Also,
the accept-segment-routing
flag must be enabled on the interface where SRv6
traffic is received.
vsr running config# vrf main interface loopback loop2
vsr running loopback loop1# ipv6 address 2001:db8:1::/48
vsr running loopback loop1# .. ..
vsr running vrf main# interface physical eth3
vsr running physical eth3# network-stack
vsr running network-stack# ipv6
vsr running ipv6# accept-segment-routing true
vsr running ipv6#
Segment routing setup example¶
The below topology will be used to illustrate segment routing setup made up of
4 devices, and where traffic entering the core network on rt1
will be appended
by an SRH header, which will have the respective End
SIDs of rt2
, rt3
and rt4
. The setup focuses on sending only one-way SRv6 traffic: rt1
will
handle the SRv6 packets emission, while rt4
will handle the local reception
of SRv6 traffic.
The RFC 9252 does only define the handling of incoming SRv6 traffic, and
does not explain how and when to forge SRv6 traffic. IS-IS follows the
recommendations, and this is the reason why, contrary to SR with MPLS, IS-IS
does not natively encapsulate IPv6 traffic with SRHs. To benefit from this
support, a specific static route that uses the SRv6 headers must be used, and is
highlighted in the below rt1
configuration.
rt1
rt1 running config# / vrf main interface physical eth3 port pci-b0s6
rt1 running config# / vrf main interface physical eth3 ipv6 address fd00:125::1/64
rt1 running config# / vrf main interface physical eth1 port pci-b0s4
rt1 running config# / vrf main interface physical eth1 ipv6 address fd00:100::1/64
rt1 running config# / vrf main interface loopback loop1 ipv4 address 1.1.1.1/32
rt1 running config# / vrf main interface loopback loop1 ipv6 address 1:1::1:1/128
rt1 running config# / vrf main interface loopback loop2 ipv6 address 2001:db8:1::/48
rt1 running config# / vrf main routing static ipv6-route fd00:200::/64 next-hop eth3 ipv6-sid 2001:db8:2:: ipv6-sid 2001:db8:3:: ipv6-sid 2001:db8:4::
rt1 running config# / vrf main routing interface loop1 isis area-tag 1
rt1 running config#! / vrf main routing interface loop1 isis ipv6-routing true
rt1 running config#! / vrf main routing interface loop1 isis hello interval level-1 1
rt1 running config#! / vrf main routing interface loop1 isis hello multiplier level-1 3
rt1 running config#! / vrf main routing interface eth3 isis area-tag 1
rt1 running config#! / vrf main routing interface eth3 isis ipv6-routing true
rt1 running config#! / vrf main routing interface eth3 isis hello interval level-1 1
rt1 running config#! / vrf main routing interface eth3 isis hello multiplier level-1 3
rt1 running config#! / vrf main routing isis instance 1 is-type level-1
rt1 running config# / vrf main routing isis instance 1 area-address 49.0000.0007.e901.1111.00
rt1 running config# / vrf main routing isis instance 1 redistribute ipv6 connected level-1
rt1 running ipv6 connected level-1# / vrf main routing isis instance 1 multi-topology ipv6-unicast
rt1 running ipv6-unicast# / vrf main routing isis instance 1 segment-routing ipv6 locator LOC1
rt1 running ipv6-unicast# / vrf main routing segment-routing ipv6 locator LOC1 prefix 2001:db8:1::/48
rt1 running ipv6-unicast# / vrf main routing segment-routing ipv6 locator LOC1 block-length 24
The rt2
and rt3
configurations below do not require local SRv6 traffic
management, and do not require the locator address to be configured on a
loopback interface.
rt2
rt2 running config# / vrf main interface physical eth1 port pci-b0s4
rt2 running config# / vrf main interface physical eth1 ipv6 address fd00:125::2/64
rt2 running config# / vrf main interface physical eth2 port pci-b0s5
rt2 running config# / vrf main interface physical eth2 ipv6 address fd00:126::2/64
rt2 running config# / vrf main interface loopback loop1 ipv4 address 2.2.2.2/32
rt2 running config# / vrf main interface loopback loop1 ipv6 address 2:2::2:2/128
rt2 running config# / vrf main routing interface loop1 isis area-tag 1
rt2 running config#! / vrf main routing interface loop1 isis ipv6-routing true
rt2 running config#! / vrf main routing interface loop1 isis hello interval level-1 1
rt2 running config#! / vrf main routing interface loop1 isis hello multiplier level-1 3
rt2 running config#! / vrf main routing interface eth1 isis area-tag 1
rt2 running config#! / vrf main routing interface eth1 isis ipv6-routing true
rt2 running config#! / vrf main routing interface eth1 isis hello interval level-1 1
rt2 running config#! / vrf main routing interface eth1 isis hello multiplier level-1 3
rt2 running config#! / vrf main routing interface eth2 isis area-tag 1
rt2 running config#! / vrf main routing interface eth2 isis ipv6-routing true
rt2 running config#! / vrf main routing interface eth2 isis hello interval level-1 1
rt2 running config#! / vrf main routing interface eth2 isis hello multiplier level-1 3
rt2 running config#! / vrf main routing isis instance 1 is-type level-1
rt2 running config# / vrf main routing isis instance 1 area-address 49.0000.0007.e901.2222.00
rt2 running config# / vrf main routing isis instance 1 redistribute ipv6 connected level-1
rt2 running ipv6 connected level-1# / vrf main routing isis instance 1 multi-topology ipv6-unicast
rt2 running ipv6-unicast# / vrf main routing isis instance 1 segment-routing ipv6 locator LOC1
rt2 running ipv6-unicast# / vrf main routing segment-routing ipv6 locator LOC1 prefix 2001:db8:2::/48
rt2 running ipv6-unicast# / vrf main routing segment-routing ipv6 locator LOC1 block-length 24
rt3
rt3 running config# / vrf main interface physical eth3 port pci-b0s6
rt3 running config# / vrf main interface physical eth3 ipv6 address fd00:127::3/64
rt3 running config# / vrf main interface physical eth2 port pci-b0s5
rt3 running config# / vrf main interface physical eth2 ipv6 address fd00:126::3/64
rt3 running config# / vrf main interface loopback loop1 ipv4 address 3.3.3.3/32
rt3 running config# / vrf main interface loopback loop1 ipv6 address 3:3::3:3/128
rt3 running config# / vrf main routing interface loop1 isis area-tag 1
rt3 running config#! / vrf main routing interface loop1 isis ipv6-routing true
rt3 running config#! / vrf main routing interface loop1 isis hello interval level-1 1
rt3 running config#! / vrf main routing interface loop1 isis hello multiplier level-1 3
rt3 running config#! / vrf main routing interface eth2 isis area-tag 1
rt3 running config#! / vrf main routing interface eth2 isis ipv6-routing true
rt3 running config#! / vrf main routing interface eth2 isis hello interval level-1 1
rt3 running config#! / vrf main routing interface eth2 isis hello multiplier level-1 3
rt3 running config#! / vrf main routing interface eth3 isis area-tag 1
rt3 running config#! / vrf main routing interface eth3 isis ipv6-routing true
rt3 running config#! / vrf main routing interface eth3 isis hello interval level-1 1
rt3 running config#! / vrf main routing interface eth3 isis hello multiplier level-1 3
rt3 running config#! / vrf main routing isis instance 1 is-type level-1
rt3 running config# / vrf main routing isis instance 1 area-address 49.0000.0007.e901.3333.00
rt3 running config# / vrf main routing isis instance 1 redistribute ipv6 connected level-1
rt3 running ipv6 connected level-1# / vrf main routing isis instance 1 multi-topology ipv6-unicast
rt3 running ipv6-unicast# / vrf main routing isis instance 1 segment-routing ipv6 locator LOC1
rt3 running ipv6-unicast# / vrf main routing segment-routing ipv6 locator LOC1 prefix 2001:db8:3::/48
rt3 running ipv6-unicast# / vrf main routing segment-routing ipv6 locator LOC1 block-length 24
rt4
The rt4
configuration below must handle local reception of SRv6 traffic,
and so the IP address corresponding to the End
SID of rt4
should be
configured on a loopback interface. In addition, the accept-segment-routing
flag must be set on the eth2
interface facing the IGP topology.
rt4 running config# / vrf main interface physical eth2 port pci-b0s5
rt4 running config# / vrf main interface physical eth2 ipv6 address fd00:127::4/64
rt4 running config# / vrf main interface physical eth2 network-stack ipv6 accept-segment-routing true
rt4 running config# / vrf main interface physical eth1 port pci-b0s4
rt4 running config# / vrf main interface physical eth1 ipv6 address fd00:200::4/64
rt4 running config# / vrf main interface loopback loop1 ipv4 address 4.4.4.4/32
rt4 running config# / vrf main interface loopback loop1 ipv6 address 4:4::4:4/128
rt4 running config# / vrf main interface loopback loop2 ipv6 address 2001:db8:4::/48
rt4 running config# / vrf main routing interface loop1 isis area-tag 1
rt4 running config#! / vrf main routing interface loop1 isis ipv6-routing true
rt4 running config#! / vrf main routing interface loop1 isis hello interval level-1 1
rt4 running config#! / vrf main routing interface loop1 isis hello multiplier level-1 3
rt4 running config#! / vrf main routing interface eth2 isis area-tag 1
rt4 running config#! / vrf main routing interface eth2 isis ipv6-routing true
rt4 running config#! / vrf main routing interface eth2 isis hello interval level-1 1
rt4 running config#! / vrf main routing interface eth2 isis hello multiplier level-1 3
rt4 running config#! / vrf main routing isis instance 1 is-type level-1
rt4 running config# / vrf main routing isis instance 1 area-address 49.0000.0007.e901.4444.00
rt4 running config# / vrf main routing isis instance 1 multi-topology ipv6-unicast
rt4 running ipv6-unicast# / vrf main routing isis instance 1 segment-routing ipv6 locator LOC1
rt4 running ipv6-unicast# / vrf main routing segment-routing ipv6 locator LOC1 prefix 2001:db8:4::/48
rt4 running ipv6-unicast# / vrf main routing segment-routing ipv6 locator LOC1 block-length 24
With the above configurations, on rt1
, traffic coming from the subnet
fd00:100::/64
and going to the subnet fd00:200::/64
is encapsulated with
a SRH header thanks to the static routing command. This SRv6 traffic is
forwarded to each node participating in the IGP network. Then, on rt4
, the
SRH header of the SRv6 will be removed, and the original traffic is
decapsulated and sent to the fd00:200::/64
subnet.
The below command dumps the devices that participate in the SRv6 topology:
rt1> show isis segment-routing ipv6
Area 1:
IS-IS L1 SRv6-Nodes:
System ID Algorithm SRH Max SL SRH Max End Pop SRH Max H.encaps SRH Max End D
-----------------------------------------------------------------------------------------
0007.e901.1111 S-SPF 3 3 2 5
0007.e901.2222 SPF 3 3 2 5
0007.e901.3333 SPF 3 3 2 5
0007.e901.4444 SPF 3 3 2 5
IS-IS L2 SRv6-Nodes:
The show
command below on rt1
displays the static
IPv6 route that
forges the new SRH header for traffic entering the IGP topology. The SID
values retrieved are obtained from the locator chunks configured on each device.
Address 2001:db8:2::
is the first SID of the SRH. The address can be
routed using IS-IS. Subsequently, the forged SRv6 packet can be sent.
rt1> show ipv6-routes protocol static
Codes: K - kernel route, C - connected, S - static, R - RIPng,
O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
> - selected route, * - FIB route, r - rejected, b - backup
L3VRF default:
S>* fd00:200::/64 [1/0] is directly connected, eth3, seg6 2001:db8:2::,2001:db8:3::,2001:db8:4::, weight 1, 00:00:47
1 routes displayed.
The below show
command on rt4
dumps the isis
routes that handle the incoming
SRv6 traffic.
rt4> show ipv6-routes protocol isis
Codes: K - kernel route, C - connected, S - static, R - RIPng,
O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
> - selected route, * - FIB route, r - rejected, b - backup
L3VRF default:
I>* 1:1::1:1/128 [115/30] via fe80::dced:3ff:fe4c:28b2, eth2, weight 1, 00:00:02
I>* 2:2::2:2/128 [115/20] via fe80::dced:3ff:fe4c:28b2, eth2, weight 1, 00:00:02
I>* 3:3::3:3/128 [115/10] via fe80::dced:3ff:fe4c:28b2, eth2, weight 1, 00:00:02
I>* 2001:db8:1::/48 [115/30] via fe80::dced:3ff:fe4c:28b2, eth2, weight 1, 00:00:02
I>* 2001:db8:2::/48 [115/20] via fe80::dced:3ff:fe4c:28b2, eth2, weight 1, 00:00:02
I>* 2001:db8:3::/48 [115/10] via fe80::dced:3ff:fe4c:28b2, eth2, weight 1, 00:00:02
I>* 2001:db8:4::/128 [115/0] is directly connected, sr0, seg6local End, weight 1, 00:00:32
I>* 2001:db8:4:1::/128 [115/0] is directly connected, eth2, seg6local End.X nh6 fe80::dced:3ff:fe4c:28b2, weight 1, 00:00:32
I>* fd00:100::/64 [115/30] via fe80::dced:3ff:fe4c:28b2, eth2, weight 1, 00:00:02
I>* fd00:125::/64 [115/20] via fe80::dced:3ff:fe4c:28b2, eth2, weight 1, 00:00:02
I>* fd00:126::/64 [115/10] via fe80::dced:3ff:fe4c:28b2, eth2, weight 1, 00:00:02
I * fec0::/64 [115/20] via fe80::dced:3ff:fe4c:28b2, eth2, weight 1, 00:00:02
12 routes displayed.
Segment routing ipv6 basic traffic engineering¶
The below figure illustrates how to divert traffic from the fd00:100::/64
sub-network to the fd00:200::/64
sub-network by using the rt3
device as the
next-hop instead of the rt2
device. That traffic will not follow the routing
decisions taken by the SPF algorithm used by the IGP instances, and the
static route will be used for that.
The configuration is given below for each device. Compared with the previous
configurations, all devices are connected with each other, except for rt1
and
rt4
devices. By following the SPF algorithm, if the fd00:200::/64
network
was redistributed, then the 2001:db8:4::/128
nexthop would be used, and would
be reachable from rt1
by using the rt2
device. However, by creating a static
SRv6 route, the expectation is that the path taken would use the rt3
device
instead.
The configuration of the rt1
, rt2
, rt3
and rt4
devices is given below.
rt1
rt1 running config# vrf main
rt1 running vrf main# interface
rt1 running interface# physical eth1
rt1 running physical eth1#! port pci-b0s4
rt1 running physical eth1# ipv6 address fd00:100::1/64
rt1 running physical eth1# .. physical eth2
rt1 running physical eth2#! port pci-b0s5
rt1 running physical eth2# ipv6 address fd00:130::1/64
rt1 running physical eth2# .. physical eth3
rt1 running physical eth3#! port pci-b0s6
rt1 running physical eth3# ipv6 address fd00:125::1/64
rt1 running physical eth3# .. loopback loop1
rt1 running loopback loop1# ipv6 address 1:1::1:1/128
rt1 running loopback loop1# ipv4 address 1.1.1.1/32
rt1 running physical eth3# .. loopback loop2
rt1 running loopback loop1# ipv6 address 2001:db8:1::/48
rt1 running loopback loop1# .. .. routing
rt1 running routing# interface loop1
rt1 running interface loop1# isis
rt1 running isis#! area-tag 1
rt1 running isis#! ipv6-routing true
rt1 running isis#! hello interval level-1 1
rt1 running isis#! hello multiplier level-1 3
rt1 running isis#! .. ..
rt1 running routing#! interface eth2
rt1 running interface eth2#! isis
rt1 running isis#! area-tag 1
rt1 running isis#! ipv6-routing true
rt1 running isis#! hello interval level-1 1
rt1 running isis#! hello multiplier level-1 3
rt1 running isis#! metric level-1 5
rt1 running isis#! .. ..
rt1 running routing#! interface eth3
rt1 running interface eth3#! isis
rt1 running isis#! area-tag 1
rt1 running isis#! ipv6-routing true
rt1 running isis#! hello interval level-1 1
rt1 running isis#! hello multiplier level-1 3
rt1 running isis#! .. ..
rt1 running routing#! isis instance 1
rt1 running instance 1# is-type level-1
rt1 running instance 1# area-address 49.0000.0007.e901.1111.00
rt1 running instance 1# redistribute ipv6 connected level-1
rt1 running ipv6 connected level-1# .. ..
rt1 running instance 1# multi-topology ipv6-unicast
rt1 running ipv6-unicast# .. ..
rt1 running instance 1# segment-routing ipv6
rt1 running ipv6#! locator loc1
rt1 running ipv6# / vrf main routing segment-routing ipv6
rt1 running ipv6# locator loc1
rt1 running locator loc1#! prefix 2001:db8:1::/48
rt1 running locator loc1# block-length 24
rt1 running locator loc1#
rt2
rt2 running config# vrf main
rt2 running vrf main# interface physical eth1
rt2 running physical eth1#! port pci-b0s4
rt2 running physical eth1# ipv6 address fd00:125::2/64
rt2 running physical eth1# .. physical eth2
rt2 running physical eth2#! port pci-b0s5
rt2 running physical eth2# ipv6 address fd00:126::2/64
rt2 running physical eth2# .. physical eth3
rt2 running physical eth3#! port pci-b0s6
rt2 running physical eth3# ipv6 address fd00:131::2/64
rt2 running physical eth3# .. loopback loop1
rt2 running loopback loop1# ipv6 address 2:2::2:2/128
rt2 running loopback loop1# ipv4 address 2.2.2.2/32
rt2 running loopback loop1# .. .. routing
rt2 running routing# interface loop1
rt2 running interface loop1# isis
rt2 running isis#! area-tag 1
rt2 running isis#! ipv6-routing true
rt2 running isis#! hello interval level-1 1
rt2 running isis#! hello multiplier level-1 3
rt2 running isis#! .. .. interface eth1
rt2 running interface eth1#! isis
rt2 running isis#! area-tag 1
rt2 running isis#! ipv6-routing true
rt2 running isis#! hello interval level-1 1
rt2 running isis#! hello multiplier level-1 3
rt2 running isis#! .. .. interface eth2
rt2 running interface eth2#! isis
rt2 running isis#! area-tag 1
rt2 running isis#! ipv6-routing true
rt2 running isis#! hello interval level-1 1
rt2 running isis#! hello multiplier level-1 3
rt2 running isis#! .. .. interface eth3
rt2 running interface eth3#! isis
rt2 running isis#! area-tag 1
rt2 running isis#! ipv6-routing true
rt2 running isis#! hello interval level-1 1
rt2 running isis#! hello multiplier level-1 3
rt2 running isis#! .. ..
rt2 running routing#! isis instance 1
rt2 running instance 1# is-type level-1
rt2 running instance 1# area-address 49.0000.0007.e901.2222.00
rt2 running instance 1# redistribute ipv6 connected level-1
rt2 running ipv6 connected level-1# .. ..
rt2 running instance 1# multi-topology ipv6-unicast
rt2 running ipv6-unicast# .. ..
rt2 running instance 1# segment-routing ipv6
rt2 running ipv6#! locator loc1
rt2 running ipv6# / vrf main routing segment-routing ipv6
rt2 running ipv6# locator loc1
rt2 running locator loc1#! prefix 2001:db8:2::/48
rt2 running locator loc1# block-length 24
rt2 running locator loc1#
rt3
rt3 running config# vrf main
rt3 running vrf main# interface physical eth1
rt3 running physical eth1#! port pci-b0s4
rt3 running physical eth1# ipv6 address fd00:130::3/64
rt3 running physical eth1# .. physical eth2
rt3 running physical eth2#! port pci-b0s5
rt3 running physical eth2# ipv6 address fd00:126::3/64
rt3 running physical eth2# .. physical eth3
rt3 running physical eth3#! port pci-b0s6
rt3 running physical eth3# ipv6 address fd00:127::3/64
rt3 running physical eth3# .. loopback loop1
rt3 running loopback loop1# ipv6 address 3:3::3:3/128
rt3 running loopback loop1# ipv4 address 3.3.3.3/32
rt3 running loopback loop1# .. .. routing
rt3 running routing# interface loop1
rt3 running interface loop1# isis
rt3 running isis#! area-tag 1
rt3 running isis#! ipv6-routing true
rt3 running isis#! hello interval level-1 1
rt3 running isis#! hello multiplier level-1 3
rt3 running isis#! .. .. interface eth1
rt3 running interface eth1#! isis
rt3 running isis#! area-tag 1
rt3 running isis#! ipv6-routing true
rt3 running isis#! hello interval level-1 1
rt3 running isis#! hello multiplier level-1 3
rt3 running isis#! metric level-1 5
rt3 running isis#! .. .. interface eth2
rt3 running interface eth2#! isis
rt3 running isis#! area-tag 1
rt3 running isis#! ipv6-routing true
rt3 running isis#! hello interval level-1 1
rt3 running isis#! hello multiplier level-1 3
rt3 running isis#! .. .. interface eth3
rt3 running interface eth3#! isis
rt3 running isis#! area-tag 1
rt3 running isis#! ipv6-routing true
rt3 running isis#! hello interval level-1 1
rt3 running isis#! hello multiplier level-1 3
rt3 running isis#! metric level-1 20
rt3 running isis#! .. ..
rt3 running routing#! isis instance 1
rt3 running instance 1# is-type level-1
rt3 running instance 1# area-address 49.0000.0007.e901.3333.00
rt3 running instance 1# redistribute ipv6 connected level-1
rt3 running ipv6 connected level-1# .. ..
rt3 running instance 1# multi-topology ipv6-unicast
rt3 running ipv6-unicast# .. ..
rt3 running instance 1# segment-routing ipv6
rt3 running ipv6#! locator loc1
rt3 running ipv6# / vrf main routing segment-routing ipv6
rt3 running ipv6# locator loc1
rt3 running locator loc1#! prefix 2001:db8:3::/48
rt3 running locator loc1# block-length 24
rt3 running locator loc1#
rt4
rt4 running config# vrf main
rt4 running vrf main# interface physical eth1
rt4 running physical eth1#! port pci-b0s4
rt4 running physical eth1# ipv6 address fd00:200::4/64
rt4 running physical eth1# .. physical eth2
rt4 running physical eth2#! port pci-b0s5
rt4 running physical eth2# ipv6 address fd00:127::4/64
rt4 running physical eth2# network-stack
rt4 running network-stack# ipv6
rt4 running ipv6# accept-segment-routing true
rt4 running ipv6# .. ..
rt4 running physical eth2# .. physical eth3
rt4 running physical eth3#! port pci-b0s6
rt4 running physical eth3# ipv6 address fd00:131::4/64
rt4 running physical eth3# network-stack
rt4 running network-stack# ipv6
rt4 running ipv6# accept-segment-routing true
rt4 running ipv6# .. ..
rt4 running physical eth3# .. loopback loop1
rt4 running loopback loop1# ipv6 address 4:4::4:4/128
rt4 running loopback loop1# ipv4 address 4.4.4.4/32
rt4 running loopback loop1# .. loopback loop2
rt4 running loopback loop2# ipv6 address 2001:db8:4::/48
rt4 running loopback loop2# .. .. routing
rt4 running routing# interface loop1
rt4 running interface loop1# isis
rt4 running isis#! area-tag 1
rt4 running isis#! ipv6-routing true
rt4 running isis#! hello interval level-1 1
rt4 running isis#! hello multiplier level-1 3
rt4 running isis#! .. .. interface eth2
rt4 running interface eth2#! isis
rt4 running isis#! area-tag 1
rt4 running isis#! ipv6-routing true
rt4 running isis#! hello interval level-1 1
rt4 running isis#! hello multiplier level-1 3
rt3 running isis#! metric level-1 20
rt4 running isis#! .. .. interface eth3
rt4 running interface eth3#! isis
rt4 running isis#! area-tag 1
rt4 running isis#! ipv6-routing true
rt4 running isis#! hello interval level-1 1
rt4 running isis#! hello multiplier level-1 3
rt4 running isis#! .. ..
rt4 running routing#! isis instance 1
rt4 running instance 1# is-type level-1
rt4 running instance 1# area-address 49.0000.0007.e901.4444.00
rt4 running instance 1# multi-topology ipv6-unicast
rt4 running ipv6-unicast# .. ..
rt4 running instance 1# segment-routing ipv6
rt4 running ipv6#! locator loc1
rt4 running ipv6# / vrf main routing segment-routing ipv6
rt4 running ipv6# locator loc1
rt4 running locator loc1#! prefix 2001:db8:4::/48
rt4 running locator loc1# block-length 24
rt4 running locator loc1#
The below display shows that the SRv6 path to the rt4
endpoint
uses the eth3
interface. However, to reach the rt3
endpoint,
the 2001:db8:3::/48
uses the eth2
interface.
rt1> show ipv6-routes
Codes: K - kernel route, C - connected, S - static, R - RIPng,
O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
A - Babel, D - SHARP, F - PBR, f - OpenFabric,
t - Table-Direct,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
[..]
I>* 4:4::4:4/128 [115/40] via fe80::dced:1ff:febf:40eb, eth3, weight 1, 02:06:12
I>* 2001:db8:4::/48 [115/30] via fe80::dced:1ff:febf:40eb, eth3, weight 1, 02:06:12
I>* 3:3::3:3/128 [115/5] via fe80::dced:1ff:fee0:586d, eth2, weight 1, 00:11:35
I>* 2001:db8:3::/48 [115/5] via fe80::dced:1ff:fee0:586d, eth2, weight 1, 00:11:35
[..]
A static route to reach the fd00:200::/64
is performed to force the
traffic to use the eth2
interface.
rt1 running vrf main# routing static
rt1 running static# ipv6-route fd00:200::/64
rt1 running ipv6-route fd00:200::/64#! next-hop eth3 ipv6-sid 2001:db8:3:: ipv6-sid 2001:db8:4::
rt1 running ipv6-route fd00:200::/64# .. ..
The resulting route entry is selected from the RIB and applied to traffic entering the SR topology.
rt1> show ipv6-routes protocol static
Codes: K - kernel route, C - connected, S - static, R - RIPng,
O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
A - Babel, D - SHARP, F - PBR, f - OpenFabric,
t - Table-Direct,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
>* fd00:200::/64 [1/0] is directly connected, eth2, seg6 2001:db8:3::,2001:db8:4::, weight 1, 02:41:17
It is possible to perform up to 4 SIDs stacking when the SRv6 networks become bigger.