Hello my friend,

The last time we have started interesting discussion regarding configuration of unnumbered Ethernet interfaces. We have figured out that Cisco IOS XR has strange behavior and we’ll try to solve it in this part.

Instead of introduction

This article isn’t standalone. It’s continuation of the previous one, so we use the topology and existing configuration from that one. I advise you to read it beforehand, so you will be synchronized with the actual state, what we are talking about.

Change of IGP from ISIS to OSPF

As we have figured out in the end of the previous article, there Cisco IOS XR doesn’t generate information in MPLS TED (Traffic Engineering Database). Probably, it’s a bug or limitation of XRv itself or IOS XR version 6.1.2, I don’t know. I’ve started thinking, what I could do. I’ve tried a lot of different options on my Cisco IOS XRv routers like enabling/disabling RSVP on interfaces, playing with different MPLS-TE and Segment Routing parameters, but unfortunately it hasn’t brought anything that solves this issue. Then I decided to change routing protocol in my network, which my small service provide core actually, to OSPF. Let’s see how to do it:

Nokia (Alcatel-Lucent) SR OS Cisco IOS XR
SR1 XR3

A:SR1>edit-cfg# candidate view
=========================
configure
router
isis shutdwon
no isis
ospf
advertise-router-capability area
traffic-engineering
segment-routing
prefix-sid-range global
tunnel-table-pref 8
no shutdown
exit
area 0.0.0.0
interface “system”
node-sid index 11
passive
no shutdown
exit
interface “toSR2”
interface-type point-to-point
no shutdown
exit
interface “toXR3”
interface-type point-to-point
no shutdown
exit
interface “toXR4”
interface-type point-to-point
no shutdown
exit
exit
no shutdown
exit
exit
exit
=========================

RP/0/0/CPU0:XR3(config)#show conf
no router isis CORE
router ospf 1
router-id 10.0.0.33
segment-routing mpls
area 0.0.0.0
network point-to-point
mpls traffic-eng
interface Loopback0
prefix-sid index 33
!
interface GigabitEthernet0/0/0/0.13
!
interface GigabitEthernet0/0/0/0.34
!
!
mpls traffic-eng router-id Loopback0
!
end

SR2 XR4

A:SR2>edit-cfg# candidate view
=========================
configure
router
isis shutdown
no isis
ospf
advertise-router-capability area
traffic-engineering
segment-routing
prefix-sid-range global
tunnel-table-pref 8
no shutdown
exit
area 0.0.0.0
interface “system”
node-sid index 22
passive
no shutdown
exit
interface “toSR1”
interface-type point-to-point
no shutdown
exit
interface “toXR4”
interface-type point-to-point
no shutdown
exit
exit
no shutdown
exit
exit
exit
=========================

RP/0/0/CPU0:XR4(config)#show conf
!
no router isis CORE
router ospf 1
router-id 10.0.0.44
segment-routing mpls
area 0.0.0.0
network point-to-point
mpls traffic-eng
interface Loopback0
prefix-sid index 44
!
interface GigabitEthernet0/0/0/0.14
!
interface GigabitEthernet0/0/0/0.24
!
interface GigabitEthernet0/0/0/0.34
!
!
mpls traffic-eng router-id Loopback0
!
end

After the network has reconverged, we briefly check the routing table to confirm that:

RP/0/0/CPU0:XR3#show route ipv4
O    10.0.0.11/32 [110/200] via 10.0.0.44, 00:06:01, GigabitEthernet0/0/0/0.34
O    10.0.0.22/32 [110/200] via 10.0.0.44, 00:06:01, GigabitEthernet0/0/0/0.34
L    10.0.0.33/32 is directly connected, 03:56:18, Loopback0
O    10.0.0.44/32 [110/101] via 10.0.0.44, 00:06:01, GigabitEthernet0/0/0/0.34

The routing table looks so far good. Actually, in ISIS pure IPv4 routing was also working for unnumbered Ethernet interfaces without problems. What about packet forwarding? Let’s see:

A:SR1# ping 10.0.0.11 count 1
PING 10.0.0.11 56 data bytes
64 bytes from 10.0.0.11: icmp_seq=1 ttl=64 time=0.448ms.
—- 10.0.0.11 PING Statistics —-
1 packet transmitted, 1 packet received, 0.00% packet loss
round-trip min = 0.448ms, avg = 0.448ms, max = 0.448ms, stddev = 0.000ms
!
!
A:SR1# ping 10.0.0.22 count 1
PING 10.0.0.22 56 data bytes
64 bytes from 10.0.0.22: icmp_seq=1 ttl=64 time=16.6ms.
—- 10.0.0.22 PING Statistics —-
1 packet transmitted, 1 packet received, 0.00% packet loss
round-trip min = 16.6ms, avg = 16.6ms, max = 16.6ms, stddev = 0.000ms
!
!
A:SR1# ping 10.0.0.33 count 1
PING 10.0.0.33 56 data bytes
64 bytes from 10.0.0.33: icmp_seq=1 ttl=255 time=43.3ms.
—- 10.0.0.33 PING Statistics —-
1 packet transmitted, 1 packet received, 0.00% packet loss
round-trip min = 43.3ms, avg = 43.3ms, max = 43.3ms, stddev = 0.000ms
!
!
A:SR1# ping 10.0.0.44 count 1
PING 10.0.0.44 56 data bytes
64 bytes from 10.0.0.44: icmp_seq=1 ttl=255 time=20.4ms.
—- 10.0.0.44 PING Statistics —-
1 packet transmitted, 1 packet received, 0.00% packet loss
round-trip min = 20.4ms, avg = 20.4ms, max = 20.4ms, stddev = 0.000ms

I won’t make the same configuration for OSPF to check LDP and Segment Routing, because it was working in ISIS. Maybe something changes here, but it will be again large amount of text. So I assume that that both these MPLS data plane technologies are working in OSPF as well, so I can focus solely on Traffic Engineering (first of all, Segment Routing Traffic Engineering).

For ISIS there were missing entries in MPLS TED from Cisco IOS XR side. Let’s see how it looks like now:

RP/0/0/CPU0:XR3# show mpls traffic-eng topology brief
My_System_id: 10.0.0.33 (OSPF 1 area 0.0.0.0)
My_BC_Model_Type: RDM
Signalling error holddown: 10 sec Global Link Generation 239
!
!
IGP Id: 10.0.0.11, MPLS TE Id: 10.0.0.11 Router Node (OSPF 1 area 0.0.0.0)
. Link[0]:Point-to-Point, Nbr IGP Id:10.0.0.22, Nbr Node Id:11, gen:238
.     Frag Id:3, Intf Address:0.0.0.0, Intf Id:2
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:2
.     TE Metric:100, IGP Metric:4294967295
.     Attribute Flags: 0x0
.     Ext Admin Group:
.         Length: 256 bits
.         Value : 0x::
.     Attribute Names:
.     Switching Capability:None, Encoding:unassigned
.     BC Model ID:RDM
.     Physical BW:1000000 (kbps), Max Reservable BW Global:1000000 (kbps)
.     Max Reservable BW Sub:0 (kbps)
. Link[1]:Point-to-Point, Nbr IGP Id:10.0.0.44, Nbr Node Id:10, gen:239
.     Frag Id:5, Intf Address:0.0.0.0, Intf Id:4
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:0
.     TE Metric:100, IGP Metric:4294967295
.     Attribute Flags: 0x0
.     Ext Admin Group:
.         Length: 256 bits
.         Value : 0x::
.     Attribute Names:
.     Switching Capability:None, Encoding:unassigned
.     BC Model ID:RDM
.     Physical BW:1000000 (kbps), Max Reservable BW Global:1000000 (kbps)
.     Max Reservable BW Sub:0 (kbps)
!
!
IGP Id: 10.0.0.22, MPLS TE Id: 10.0.0.22 Router Node (OSPF 1 area 0.0.0.0)
. Link[0]:Point-to-Point, Nbr IGP Id:10.0.0.11, Nbr Node Id:12, gen:236
.     Frag Id:3, Intf Address:0.0.0.0, Intf Id:2
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:2
.     TE Metric:100, IGP Metric:4294967295
.     Attribute Flags: 0x0
.     Ext Admin Group:
.         Length: 256 bits
.         Value : 0x::
.     Attribute Names:
.     Switching Capability:None, Encoding:unassigned
.     BC Model ID:RDM
.     Physical BW:1000000 (kbps), Max Reservable BW Global:1000000 (kbps)
.     Max Reservable BW Sub:0 (kbps)
. Link[1]:Point-to-Point, Nbr IGP Id:10.0.0.44, Nbr Node Id:10, gen:237
.     Frag Id:4, Intf Address:0.0.0.0, Intf Id:3
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:0
.     TE Metric:100, IGP Metric:4294967295
.     Attribute Flags: 0x0
.     Ext Admin Group:
.         Length: 256 bits
.         Value : 0x::
.     Attribute Names:
.     Switching Capability:None, Encoding:unassigned
.     BC Model ID:RDM
.     Physical BW:1000000 (kbps), Max Reservable BW Global:1000000 (kbps)
.     Max Reservable BW Sub:0 (kbps)
!
!
IGP Id: 10.0.0.33, MPLS TE Id: 10.0.0.33 Router Node (OSPF 1 area 0.0.0.0)
. Link[0]:Point-to-Point, Nbr IGP Id:10.0.0.44, Nbr Node Id:10, gen:232
.     Frag Id:9, Intf Address:0.0.0.0, Intf Id:0
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:0
.     TE Metric:100, IGP Metric:4294967295
.     Attribute Flags: 0x0
.     Ext Admin Group:
.         Length: 256 bits
.         Value : 0x::
.     Attribute Names:
.     Switching Capability:None, Encoding:unassigned
.     BC Model ID:RDM
.     Physical BW:1000000 (kbps), Max Reservable BW Global:0 (kbps)
.     Max Reservable BW Sub:0 (kbps)
!
!
IGP Id: 10.0.0.44, MPLS TE Id: 10.0.0.44 Router Node (OSPF 1 area 0.0.0.0)
. Link[0]:Point-to-Point, Nbr IGP Id:10.0.0.22, Nbr Node Id:11, gen:233
.     Frag Id:7, Intf Address:0.0.0.0, Intf Id:0
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:0
.     TE Metric:100, IGP Metric:4294967295
.     Attribute Flags: 0x0
.     Ext Admin Group:
.         Length: 256 bits
.         Value : 0x::
.     Attribute Names:
.     Switching Capability:None, Encoding:unassigned
.     BC Model ID:RDM
.     Physical BW:1000000 (kbps), Max Reservable BW Global:0 (kbps)
.     Max Reservable BW Sub:0 (kbps)
. Link[1]:Point-to-Point, Nbr IGP Id:10.0.0.33, Nbr Node Id:9, gen:234
.     Frag Id:8, Intf Address:0.0.0.0, Intf Id:0
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:0
.     TE Metric:100, IGP Metric:4294967295
.     Attribute Flags: 0x0
.     Ext Admin Group:
.         Length: 256 bits
.         Value : 0x::
.     Attribute Names:
.     Switching Capability:None, Encoding:unassigned
.     BC Model ID:RDM
.     Physical BW:1000000 (kbps), Max Reservable BW Global:0 (kbps)
.     Max Reservable BW Sub:0 (kbps)
. Link[2]:Point-to-Point, Nbr IGP Id:10.0.0.11, Nbr Node Id:12, gen:235
.     Frag Id:12, Intf Address:0.0.0.0, Intf Id:0
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:0
.     TE Metric:100, IGP Metric:4294967295
.     Attribute Flags: 0x0
.     Ext Admin Group:
.         Length: 256 bits
.         Value : 0x::
.     Attribute Names:
.     Switching Capability:None, Encoding:unassigned
.     BC Model ID:RDM
.     Physical BW:1000000 (kbps), Max Reservable BW Global:0 (kbps)
.     Max Reservable BW Sub:0 (kbps)

At a glance we see the improvement with the new configuration. Now we have full MPLS TED and theoretically should be able to build a Segment Routing Traffic Engineering LSP. Just of curiosity point of view, pay attention to IGP metric both in Nokia (Alcatel-Lucent) SR OS and Cisco IOS XR routers. It has the maximum possible value, whereas TE metric is correct and is related to actual bandwidth.

Read this article to get understanding, how to make SR TE in general.

According to IGP calculation, the shortest path between SR1 and XR3 is SR1 <-> XR4 <-> XR3. Let’s configure SR-TE tunnel so that traffic takes path SR1 <-> SR2 <-> XR4 <-> XR3.

The following configuration we put on our service provide PE routers represented by Nokia (Alcatel-Lucent) VSR 7750 and Cisco IOS XRv 9000 (ASR 9000):

Nokia (Alcatel-Lucent) SR OS Cisco IOS XR
SR1 XR3

A:SR1>edit-cfg# candidate view
=========================
configure
router
mpls
path “EP_SR1_SR2_XR4_XR3”
hop 10 10.0.0.22 strict
hop 20 10.0.0.44 strict
hop 30 10.0.0.33 strict
no shutdown
exit
lsp “SR_TE_LSP_SR1_TO_XR4” sr-te
to 10.0.0.33
cspf
primary “EP_SR1_SR2_XR4_XR3”
exit
no shutdown
exit
exit
exit
exit
=========================

RP/0/0/CPU0:XR3(config)#show conf
explicit-path name EP_SR_TE_XR3_XR4_SR2_SR1
index 10 next-label 16022
index 20 next-label 500011
!
interface tunnel-te1031
ipv4 unnumbered Loopback0
signalled-name SR_TE_XR3_TO_SR1
autoroute announce
!
destination 10.0.0.11
record-route
path-option 10 explicit name EP_SR_TE_XR3_XR4_SR2_SR1 segment-routing
!
end

The configuration is pretty much the same as it was in the mentioned article. The only difference is that I have specified exact label stack rather than next-hop IPv4 addresses. We start checking configured MPLS SR TE LSP from Nokia (Alcatel-Lucent) SR OS router SR1:

A:SR1# show router mpls sr-te-lsp path detail
===============================================================================
MPLS SR-TE LSP Path (Detail)
===============================================================================
Legend :
S – Strict L – Loose
===============================================================================
——————————————————————————-
SR-TE LSP SR_TE_LSP_SR1_TO_XR4 Path EP_SR1_SR2_XR4_XR3
——————————————————————————-
LSP Name         : SR_TE_LSP_SR1_TO_XR4
Path LSP ID      : 11264
From             : 10.0.0.11            To                   : 10.0.0.33
Admin State      : Up                   Oper State           : Up
Path Name        : EP_SR1_SR2_XR4_XR3   Path Type            : Primary
Path Admin       : Up                   Path Oper            : Up
Path Up Time     : 0d 00:01:20          Path Down Time       : 0d 00:00:00
Retry Limit      : 0                    Retry Timer          : 30 sec
Retry Attempt    : 1                    Next Retry In        : 0 sec
!
CSPF             : Enabled              Oper CSPF            : Enabled
!
Bandwidth        : No Reservation       Oper Bandwidth       : 0 Mbps
Hop Limit        : 255                  Oper HopLimit        : 255
Setup Priority   : 7                    Oper Setup Priority  : 7
Hold Priority    : 0                    Oper Hold Priority   : 0
Inter-area       : N/A
!
PCE Updt ID      : 0                    PCE Updt State       : None
PCE Upd Fail Code: noError
!
PCE Report       : Inherited            Oper PCE Report      : Disabled
PCE Control      : Disabled             Oper PCE Control     : Disabled
PCE Compute      : Disabled
!
Include Groups   :                      Oper Include Groups  :
None                                    None
Exclude Groups   :                      Oper Exclude Groups  :
None                                    None
!
IGP/TE Metric    : 16777215             Oper Metric          : 16777215
Oper MTU         : 1488                 Path Trans           : 1
Failure Code     : noError
Failure Node     : n/a
Explicit Hops :
.   10.0.0.22(S)       -> 10.0.0.44(S) ->       10.0.0.33(S)
Actual Hops :
.   10.0.0.22, If Index : 2             Record Label         : 262142
.-> 10.0.0.44, If Index : 7             Record Label         : 262142
.-> 10.0.0.33, If Index : 9             Record Label         : 24002
===============================================================================

The LSP is shown as up and running. As we figured out earlier, it is impossible to use mpls oam toolkit (at least now) to trace SR TE tunnel. So we’ll see later on in MPLS VPN output, how the label stack looks like. Cisco IOS XR router XR3 also should build LSP:

RP/0/0/CPU0:XR3#show mpls traffic-eng tunnels
Name: tunnel-te1031 Destination: 10.0.0.11 Ifhandle:0xf0
. Signalled-Name: SR_TE_XR3_TO_SR1
. Status:
.   Admin: up Oper: down Path: not valid Signalling: Down
.
.   path option 10, (Segment-Routing) type explicit EP_SR_TE_XR3_XR4_SR2_SR1
.   Last PCALC Error: Fri Aug 4 23:13:17 2017
.   Info: No path to destination, 10.0.0.22 (ipaddr)
.   G-PID: 0x0800 (derived from egress interface properties)
.   Bandwidth Requested: 0 kbps CT0
.   Creation Time: Fri Aug 4 23:13:17 2017 (00:14:25 ago)
. Config Parameters:
.   Bandwidth: 0 kbps (CT0) Priority: 7 7 Affinity: 0x0/0x0
.   Metric Type: TE (global)
.   Path Selection:
.     Tiebreaker: Min-fill (default)
.   Hop-limit: disabled
.   Cost-limit: disabled
.   Path-invalidation timeout: 10000 msec (default), Action: Tear (default)
.   AutoRoute: enabled LockDown: disabled Policy class: not set
.   Forward class: 0 (default)
.   Forwarding-Adjacency: disabled
.   Autoroute Destinations: 0
.   Loadshare: 0 equal loadshares
.   Auto-bw: disabled
.   Fast Reroute: Disabled, Protection Desired: None
.   Path Protection: Not Enabled
.   BFD Fast Detection: Disabled
.   Reoptimization after affinity failure: Enabled
.   Soft Preemption: Disabled

It should, but unfortunately not. I omit outputs of all cases, though I tried to configure all possible options of explicit-path in Cisco IOS XR (next-labels node/adjacent, next-hop, IP/unnumbered). I figured out the following interesting moment. Let’s briefly recall MPLS TED:

RP/0/0/CPU0:XR4#show mpls traffic-eng topology brief | include “IGP|Intf”
IGP Id: 10.0.0.11, MPLS TE Id: 10.0.0.11 Router Node (OSPF 1 area 0.0.0.0)
. Link[0]:Point-to-Point, Nbr IGP Id:10.0.0.22, Nbr Node Id:11, gen:753
.     Frag Id:3, Intf Address:0.0.0.0, Intf Id:2
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:2
.     TE Metric:100, IGP Metric:4294967295
. Link[1]:Point-to-Point, Nbr IGP Id:10.0.0.44, Nbr Node Id:10, gen:754
.     Frag Id:5, Intf Address:0.0.0.0, Intf Id:4
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:0
.     TE Metric:100, IGP Metric:4294967295
IGP Id: 10.0.0.22, MPLS TE Id: 10.0.0.22 Router Node (OSPF 1 area 0.0.0.0)
. Link[0]:Point-to-Point, Nbr IGP Id:10.0.0.11, Nbr Node Id:12, gen:751
.     Frag Id:3, Intf Address:0.0.0.0, Intf Id:2
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:2
.     TE Metric:100, IGP Metric:4294967295
. Link[1]:Point-to-Point, Nbr IGP Id:10.0.0.44, Nbr Node Id:10, gen:752
.     Frag Id:4, Intf Address:0.0.0.0, Intf Id:3
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:0
.     TE Metric:100, IGP Metric:4294967295
IGP Id: 10.0.0.33, MPLS TE Id: 10.0.0.33 Router Node (OSPF 1 area 0.0.0.0)
. Link[0]:Point-to-Point, Nbr IGP Id:10.0.0.44, Nbr Node Id:10, gen:747
.     Frag Id:9, Intf Address:0.0.0.0, Intf Id:0
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:0
.     TE Metric:100, IGP Metric:4294967295
IGP Id: 10.0.0.44, MPLS TE Id: 10.0.0.44 Router Node (OSPF 1 area 0.0.0.0)
. Link[0]:Point-to-Point, Nbr IGP Id:10.0.0.22, Nbr Node Id:11, gen:748
.     Frag Id:7, Intf Address:0.0.0.0, Intf Id:0
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:0
.     TE Metric:100, IGP Metric:4294967295
. Link[1]:Point-to-Point, Nbr IGP Id:10.0.0.33, Nbr Node Id:9, gen:749
.     Frag Id:8, Intf Address:0.0.0.0, Intf Id:0
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:0
.     TE Metric:100, IGP Metric:4294967295
. Link[2]:Point-to-Point, Nbr IGP Id:10.0.0.11, Nbr Node Id:12, gen:750
.     Frag Id:12, Intf Address:0.0.0.0, Intf Id:0
.     Nbr Intf Address:0.0.0.0, Nbr Intf Id:0
.     TE Metric:100, IGP Metric:4294967295

In my lab (with Cisco IOS XRv 6.1.2), Cisco router neither generate nor take into account Intf ID of neighbour in order to build SR TE LSP. Nokia (Alcatel-Lucent) SR OS does it automatically, and I assume that is the reason why it works there. I’ve tried to configure another type of explicit-path in Cisco IOS XR:

RP/0/0/CPU0:XR3#show conf
!
explicit-path name EP_SR_TE_XR3_XR4_SR2_SR1
index 10 next-address strict ipv4 unicast unnumbered 10.0.0.44 2
index 20 next-address strict ipv4 unicast unnumbered 10.0.0.22 7
index 30 next-address strict ipv4 unicast unnumbered 10.0.0.11 2
!
end

As I don’t see Intf ID explicitly in MPLS TED, I’ve copied them from OSPF LSDB:

RP/0/0/CPU0:XR4#show ospf database router 10.0.0.33
.           OSPF Router with ID (10.0.0.44) (Process ID 1)
.
.               Router Link States (Area 0.0.0.0)
.
. Routing Bit Set on this LSA
. LS age: 355
. Options: (No TOS-capability, DC)
. LS Type: Router Links
. Link State ID: 10.0.0.33
. Advertising Router: 10.0.0.33
. LS Seq Number: 80000005
. Checksum: 0x8f2
. Length: 48
.  Number of Links: 2
.
.   Link connected to: a Stub Network
.    (Link ID) Network/subnet number: 10.0.0.33
.    (Link Data) Network Mask: 255.255.255.255
.     Number of TOS metrics: 0
.      TOS 0 Metrics: 1
.
.   Link connected to: another Router (point-to-point)
.    (Link ID) Neighboring Router ID: 10.0.0.44
.    (Link Data) Router Interface address: 0.0.0.9
.     Number of TOS metrics: 0
.      TOS 0 Metrics: 100

Probably it’s wrong, but I haven’t found any other similar indicators. Anyway, SR TE LSP is down in Cisco IOS XR, but now for another reason:

RP/0/0/CPU0:XR3#show mpls traffic-eng tunnels
Name: tunnel-te1031 Destination: 10.0.0.11 Ifhandle:0xf0
. Signalled-Name: SR_TE_XR3_TO_SR1
. Status:
.   Admin: up Oper: down Path: not valid Signalling: Down
.
.   path option 10, (Segment-Routing) type explicit EP_SR_TE_XR3_XR4_SR2_SR1
.   Last PCALC Error: Fri Aug 4 23:36:04 2017
.     Info: Unsupported path hop type
.   G-PID: 0x0800 (derived from egress interface properties)
.   Bandwidth Requested: 0 kbps CT0
.   Creation Time: Fri Aug 4 23:13:17 2017 (00:22:56 ago)
. Config Parameters:
.   Bandwidth: 0 kbps (CT0) Priority: 7 7 Affinity: 0x0/0x0
.   Metric Type: TE (global)
.   Path Selection:
.     Tiebreaker: Min-fill (default)
.   Hop-limit: disabled
.   Cost-limit: disabled
.   Path-invalidation timeout: 10000 msec (default), Action: Tear (default)
.   AutoRoute: enabled LockDown: disabled Policy class: not set
.   Forward class: 0 (default)
.   Forwarding-Adjacency: disabled
.   Autoroute Destinations: 0
.   Loadshare: 0 equal loadshares
.   Auto-bw: disabled
.   Fast Reroute: Disabled, Protection Desired: None
.   Path Protection: Not Enabled
.   BFD Fast Detection: Disabled
.   Reoptimization after affinity failure: Enabled
.   Soft Preemption: Disabled
Displayed 1 (of 1) heads, 0 (of 0) midpoints, 0 (of 0) tails
Displayed 0 up, 1 down, 0 recovering, 0 recovered heads

So, despite the fact I have configured next-hop unnumbered addresses (actually, router-id), it still can’t be used.

Well, Nokia (Alcatel-Lucent) SR OS router has shown that it’s MPLS SR TE LSP is up and running. Let’s make a check by using ping in L3 VPN created in the previous part of this article. But before we need slightly modify the VPN configuration at SR1 so that next-hop is resolved to SR-TE tunnel rather than to “ordinary” Segment Routing label:

A:SR1>edit-cfg# candidate view
=========================
configure
service
vprn 10
auto-bind-tunnel
resolution-filter
sr-te
exit
resolution filter
exit
exit
exit
exit
=========================

Now we see that next-hop at SR1 is resolved to SR TE tunnel:

A:SR1# show router 10 route-table
===============================================================================
Route Table (Service: 10)
===============================================================================
Dest Prefix[Flags]                          Type    Proto     Age         Pref
.     Next Hop[Interface Name]                                  Metric
——————————————————————————-
192.168.1.10/32                             Local   Local     00h15m24s   0
.     TEST                                                      0
192.168.4.10/32                             Remote  BGP VPN   00h03m16s   170
.     10.0.0.33 (tunneled:SR-TE:655362)                         0
——————————————————————————-
No. of Routes: 2
Flags: n = Number of times nexthop is repeated
.      B = BGP backup route available
.      L = LFA nexthop available
.      S = Sticky ECMP requested
===============================================================================

My assumption is that traffic from SR1 to XR3 will follow this SR TE tunnel and therefore it will have corresponding MPLS label stack. The backward traffic from XR3 to SR1 will be forwarded based on best-effort routing and therefore will have only on transport label (and one service on top for sure). What do you think? Is my assumption correct?

A:SR1# ping router 10 192.168.4.10
PING 192.168.4.10 56 data bytes
64 bytes from 192.168.4.10: icmp_seq=1 ttl=255 time=11.2ms.
64 bytes from 192.168.4.10: icmp_seq=2 ttl=255 time=9.17ms.
64 bytes from 192.168.4.10: icmp_seq=3 ttl=255 time=16.4ms.
64 bytes from 192.168.4.10: icmp_seq=4 ttl=255 time=9.08ms.
64 bytes from 192.168.4.10: icmp_seq=5 ttl=255 time=12.4ms.
—- 192.168.4.10 PING Statistics —-
5 packets transmitted, 5 packets received, 0.00% packet loss
round-trip min = 9.08ms, avg = 11.6ms, max = 16.4ms, stddev = 2.67ms

Ping between sites of our customer emulated by two interfaces is working, what is definitely good. But now it’s more important to understand details, how it’s working:

084_net_0x_ws_01

The output from Wireshark fully confirms my assumption. The following explanation is related to forward path from SR1 to XR3:

  • You see that ICMP packet has 3 labels (2 transport + 1 service), when it leaves SR1.
  • Then SR2 pops one label and forwards this packet to XR4 with only 2 labels (1 transport + 1 service).
  • XR4 pops the only left transport label and sends this ICMP packet to XR3 with a single service label.

At the backward path from XR3 to SR1 we have “ordinary” Segment Routing operation:

  • XR3 pushes 2 labels (1 transport + 1 service) on the packet and sends it to XR4.
  • XR4 swaps topmost label, which is the transport one, and sends the packet according to its LFIB directly toSR1.

Configuration files are here: 084_config_final_sr1 084_config_final_sr2 084_config_final_xr3 084_config_final_xr4

Lessons learned

As usual, the devil is in detail. When something doesn’t work you have to dig much deeper than if everything is OK. It’s very time consuming, but in reality it’s very useful for us, engineers. Otherwise we won’t develop further,

Conclusion

Based on two parts of this article I can say that Nokia (Alcatel-Lucent) SR OS and Cisco IOS XR has different implementations of SR TE. Probably it’s caused by virtual environment, as VSR is fully commercial product with full IP/MPLS stack support, whereas Cisco IOS XRv (at least my version) has numerous limitations. In general I have achieved all desired results in terms of usage of unnumbered Ethernet interfaces in Nokia (Alcatel-Lucent) SR OS routers and moderate results in Cisco IOS XR. I believe, colleagues from Cisco will solve it (or probably it’s already solved in hardware solution and/or another version of IOS XR). Take care and good bye!

Support us





BR,

Anton Karneliuk