This is the second Huawei VRP segment routing blog post, I never configured SRv6 using this particular router platform, here VRP. Everything is configured from scratch using availbe documentation ressources from 2 different competing routing vendors. The networking topology is taken out of the BRKSPG-2203 Cisco's SRv6 uSID Cisco Live presentation, using the Huawei's NE5000E virtual GNS3 appliance.

Huawei calls its SRv6 implementation SRv6 BE, the BE stands for best effort, but it is SRv6. Best effort is a configuration command found and used in the VRP operating system:

segment-routing ipv6 best-effort

The command is part of the the VRP bgp configuration section.

The network topology and its IP addressing is taken out of the the Cisco's BRKSPG 2203 presentation linked at the bottom in the references part end of the blog entry. Did not find any VRP documentation about the usage and configuration of uSID F3216 in the official Huawei documentation. Configuring a IPv6 link-local SRv6 locator works and the network topology forwards IP packets form end to end just fine. There is no debugging and protocol analysing included, it was hard enough to gather all the information available and build this network topology. If you find errors write me an email, and I will try to correct these spotted errors.

The configurations shown work. Configurations can be copy pasted and will result immediately in a IPv4 forwarding SRv6 topology.

<PE1>display version

Huawei Versatile Routing Platform Software VRP (R) software, Version 8.180 (NE5000E V800R011C00SPC607B607) Copyright (C) 2012-2018 Huawei Technologies Co., Ltd. HUAWEI NE5000E uptime is 0 day, 2 hours, 48 minutes SVRP Platform Version 1.0

VRP version used in this SRv6 netlab running on all provider routers.

Network topology

      PE2
       |
       |
PE1 -- P1 -- PE3
       |
       |
      RRv6

The network topology is the same as in the previous blog entry except there is no migration implemented from LDP to SRv6. I did not bother cluttering the example and configured the final SRv6 state. The RRv4 BGP route reflector has been lef out of the example to make it more easy to follow. There is no migration path from LDP to SRv6 shown. Additionally the IPv6 addressing is_slightly adjusted for few routers to make it more easy to recognize and follow, once it is running.

Router IPv6 Loopack0 SRv6 locator NSAP address
P1 A::1.2.3.4 (none) 49.0001.1234.1234.1234.00
PE1 A::1 FCBB:0:1::/48 49.0001.1111.1111.1111.00
PE2 A::2 FCBB:0:2::/48 49.0001.2222.2222.2222.00
PE3 A::3 FCBB:0:3::/48 49.0001.3333.3333.3333.00
RRv6 A::6 (none) 49.0001.6666.6666.6666.00

Configuration overview

Building a SRv6 network topology. Provider routers forward IPv4 packets across the core using IPv6, no LDP and no MPLS labels and no Segment-ID's manually configured. All forwarding across the provider network topology happens using encoding the path in the IPv6 packet.

ALL routers use the following network protocols:

  • IPv6
  • IS-IS
  • SRv6

PE routers have following protocols configured additionally:

  • BGP
  • VRF
  • IPv4

RRv6 router only uses additionally only BGP. Obviously the RRv6 has no VRF:

Full configurations for all PE routers are included below and there are linked references at the end of the blog entry to read about details for self-study.

Configuration

The configurations are fully displayed below, for each router with its function in the network topology.

P1

Core or provider router has the shortest configuration of all routers:

system-view immediately
undo dcn
y

#
sysname P1
#
isis 1
 is-level level-2
 cost-style wide
 network-entity 49.0001.1234.1234.1234.00
 #
 ipv6 enable topology ipv6
 #
#
interface Ethernet1/0/1
 undo shutdown
 ipv6 enable
 ipv6 address auto link-local
 isis ipv6 enable 1
 isis circuit-type p2p
#
interface Ethernet1/0/2
 undo shutdown
 ipv6 enable
 ipv6 address auto link-local
 isis ipv6 enable 1
 isis circuit-type p2p
#
interface Ethernet1/0/3
 undo shutdown
 ipv6 enable
 ipv6 address auto link-local
 isis ipv6 enable 1
 isis circuit-type p2p
#
interface Ethernet1/0/6
 undo shutdown
 ipv6 enable
 ipv6 address auto link-local
 isis ipv6 enable 1
 isis circuit-type p2p
#
interface LoopBack0
 ipv6 enable
 ipv6 address A::1234 128
 isis ipv6 enable 1
 isis circuit-type p2p
#
return

save
y

PE1

This shows the PE1 router configuration only. The configurations for the PE2 and PE3 routers are appended at the bottom and not displayed explicitelly to not clutter the output here in the blog entry.

system-view immediately
undo dcn
y

#
sysname PE1
#
ip vpn-instance vpn10
 ipv4-family
  route-distinguisher 1:1
  vpn-target 1:1 export-extcommunity
  vpn-target 1:1 import-extcommunity
#
segment-routing ipv6
 encapsulation source-address A::1
 locator loc-vpn10 ipv6-prefix fcbb:0:1:: 48 static 32
#
isis 1
 is-level level-2
 cost-style wide
 network-entity 49.0001.1111.1111.1111.00
 #
 ipv6 enable topology ipv6
 segment-routing ipv6 locator loc-vpn10
 #
#
interface Ethernet1/0/1
 undo shutdown
 ipv6 enable
 ipv6 address auto link-local
 isis ipv6 enable 1
 isis circuit-type p2p
#
interface Ethernet1/0/0
 undo shutdown
 ip binding vpn-instance vpn10
 ip address 10.10.1.1 255.255.255.0
#
interface LoopBack0
 ipv6 enable
 ipv6 address A::1 128
 isis ipv6 enable 1
#
bgp 1
 router-id 1.1.1.1
 peer A::6 as-number 1
 peer A::6 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
 #
 ipv6-family unicast
  undo synchronization
 #
 ipv4-family vpnv4
  policy vpn-target
  peer A::6 enable
  y
  peer A::6 prefix-sid
 #
 ipv4-family vpn-instance vpn10
  import-route direct
  segment-routing ipv6 locator loc-vpn10
  segment-routing ipv6 best-effort
#
return

save
y

RRv6

The SRv6 BGP route reflector configuration:

sys
#
undo dcn
y

sysname RRv6
#
segment-routing ipv6
#
isis 1
 is-level level-2
 cost-style wide
 network-entity 49.0001.6666.6666.6666.00
 #
 ipv6 enable topology ipv6
 #
#
interface Ethernet1/0/6
 undo shutdown
 ipv6 enable
 ipv6 address auto link-local
 isis ipv6 enable 1
 isis circuit-type p2p
#
interface Lo0
 ipv6 enable
 ipv6 address A::6 128
 isis ipv6 enable 1
#
bgp 1
 router-id 6.6.6.6
 peer A::1 as-number 1
 peer A::1 connect-interface Loopback0
 peer A::2 as-number 1
 peer A::2 connect-interface Loopback0
 peer A::3 as-number 1
 peer A::3 connect-interface Loopback0
 #
 ipv4-family unicast
  undo synchronization
 #
 ipv6-family unicast
  undo synchronization
 #              
 ipv4-family vpnv4
  undo policy vpn-target
  peer A::1 enable
  y
  peer A::1 reflect-client
  peer A::1 prefix-sid
  peer A::2 enable
  y
  peer A::2 reflect-client
  peer A::2 prefix-sid
  peer A::3 enable
  y
  peer A::3 reflect-client
  peer A::3 prefix-sid
#
commit

return
save
y

All P router configurations:

Full router configurations are here:

Verify

Using verification commands from the official huawei NE40 documentation.

VRF routing

Verify the VRF routing table on the PE1 router.

display ip routing-table vpn-instance vpn10

Notice the NexHop for the IBGP routing entries displaying FCBB:0:2::1:0:3C and FCBB:0:3::1:0:3C:

<PE1>display ip routing-table vpn-instance vpn10

Route Flags: R - relay, D - download to fib, T - to vpn-instance, B - black hole route  ------------------------------------------------------------------------------ Routing Table : vpn10 Destinations : 7 Routes : 7   Destination/Mask Proto Pre Cost Flags NextHop Interface   10.10.1.0/24 Direct 0 0 D 10.10.1.1 Ethernet1/0/0 10.10.1.1/32 Direct 0 0 D 127.0.0.1 Ethernet1/0/0 10.10.1.255/32 Direct 0 0 D 127.0.0.1 Ethernet1/0/0 10.10.2.0/24 IBGP 255 0 RD FCBB:0:2::1:0:3C Ethernet1/0/1 10.10.3.0/24 IBGP 255 0 RD FCBB:0:3::1:0:3C Ethernet1/0/1 127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0 255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0

BGP VRF

Display the VRF routing table and BGP routes. The IPv6 next hops for the IBGP VPN routes are set to A::2 and A::3. No IP nexthops are visible.

display bgp vpnv4 all routing-table
<PE1>display bgp vpnv4 all routing-table

BGP Local router ID is 1.1.1.1   Status codes: * - valid, > - best, d - damped, x - best external, a - add path, h - history, i - internal, s - suppressed, S - Stale Origin : i - IGP, e - EGP, ? - incomplete RPKI validation codes: V - valid, I - invalid, N - not-found   Total number of routes from all PE: 5 Route Distinguisher: 1:1   Network NextHop MED LocPrf PrefVal Path/Ogn   *> 10.10.1.0/24 0.0.0.0 0 0 ? *> 10.10.1.1/32 0.0.0.0 0 0 ? *>i 10.10.2.0/24 A::2 0 100 0 ? *>i 10.10.3.0/24 A::3 0 100 0 ? *> 127.0.0.0/8 0.0.0.0 0 0 ?   VPN-Instance vpn10, Router ID 1.1.1.1:   Total Number of Routes: 5 Network NextHop MED LocPrf PrefVal Path/Ogn   *> 10.10.1.0/24 0.0.0.0 0 0 ? *> 10.10.1.1/32 0.0.0.0 0 0 ? *>i 10.10.2.0/24 A::2 0 100 0 ? *>i 10.10.3.0/24 A::3 0 100 0 ? *> 127.0.0.0/8 0.0.0.0 0 0 ?

SRv6 locator

Show the configured SRv6 locator for VRF vpn10:

 display segment-routing ipv6 locator verbose

Inspect the configured locator specifics for VRP for the current PE router:

<PE1>display segment-routing ipv6 locator verbose

    Locator Configuration Table bsp; ---------------------------   LocatorName : loc-vpn10 LocatorID : 1 IPv6Prefix : FCBB:0:1:: PrefixLength: 48 StaticLength : 32 Reference : 2 Default : N ArgsLength : 0 AutoSIDBegin : FCBB:0:1::1:0:0 AutoSIDEnd : FCBB:0:1:FFFF:FFFF:FFFF:FFFF:FFFF   Total Locator(s): 1

SRv6 local-SID

Show the PE local SRv6 SID configuration and the used function type that is used for IPv4 VPN routes.

display segment-routing ipv6 local-sid end-dt4 forwarding
<PE1>display segment-routing ipv6 local-sid end-dt4 forwarding

    My Local-SID End.DT4 Forwarding Table   -------------------------------------   SID : FCBB:0:1::1:0:3C/128 FuncType : End.DT4 VPN Name : vpn10 VPN ID : 3 LocatorName: loc-vpn10 LocatorID: 1   Total SID(s): 1

P1 IPv4 routing

Just for verification, the P1 router has a empty IPv4 routing table. It shows only the loopback0 device, looks VRP implies here some configuration option, specifically the 127.1 prefix and its network. Apart from that no other IP prefixes are shown:

<P1>display ip routing-table all-routes

Route Flags: R - relay, D - download to fib, T - to vpn-instance, B - black hole route  ------------------------------------------------------------------------------ Routing Table : public Destinations : 4 Routes : 4   Destination/Mask Proto Pre Cost Flags NextHop Interface   127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0 127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0 127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0 255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0

P1 IPv6 routing

The P1 router has no SRv6 specific configuration, the SRv6 logic is configured on the PE device, the P1 device has a simple configuration. The forwarding path is encoded in the IPv6 packet itself. Notice the visible loc-vpn10 locators availble per PE:

<P1>display ipv6 routing-table brief

Route Flags: R - relay, D - download to fib, T - to vpn-instance, B - black hole route  ------------------------------------------------------------------------------ Routing Table : public Destinations : 12 Routes : 12 Format : Destination/Mask Protocol Nexthop Interface  ------------------------------------------------------------------------------ ::1/128 Direct ::1 InLoopBack0 ::FFFF:127.0.0.0/104 Direct ::FFFF:127.0.0.1 InLoopBack0 ::FFFF:127.0.0.1/128 Direct ::1 InLoopBack0 A::1/128 ISIS-L2 FE80::2E0:9FF:FE9D:3901 Ethernet1/0/1 A::2/128 ISIS-L2 FE80::218:C9FF:FEE9:EE02 Ethernet1/0/2 A::3/128 ISIS-L2 FE80::205:B3FF:FE28:7F03 Ethernet1/0/3 A::6/128 ISIS-L2 FE80::259:38FF:FE31:CA06 Ethernet1/0/6 A::1234/128 Direct ::1 LoopBack1 FCBB:0:1::/48 ISIS-L2 FE80::2E0:9FF:FE9D:3901 Ethernet1/0/1 FCBB:0:2::/48 ISIS-L2 FE80::218:C9FF:FEE9:EE02 Ethernet1/0/2 FCBB:0:3::/48 ISIS-L2 FE80::205:B3FF:FE28:7F03 Ethernet1/0/3 FE80::/10 Direct ::

CE routing

Now the CE1 router is connected directly to the Ethernet1/0/0 interface on the PE1 router. I did not add it to the initial topology above to not complicate the netlab and to have a clean topology overview. Now if you are ready here with the router configuration add the CE1 - CE3 devices to the topology. Configuration on the CE devices are simple static interface IP addressing which can be scrapped from the PE router itself, or by reviewing the output of the show ip route command below. The CE devices have the .10 as last IPv4 octet, and a static route pointing to the default-gateway I am sure you figure it by yourself.

Here is the overview of the CE1 ip addressing showing all you need for the configuration:

CE1>show ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route + - replicated route, % - next hop override   Gateway of last resort is 10.10.1.1 to network 0.0.0.0   S* 0.0.0.0/0 [1/0] via 10.10.1.1 10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks C 10.10.1.0/24 is directly connected, Ethernet0/0 L 10.10.1.10/32 is directly connected, Ethernet0/0

CE ICMP

Ping the CE2 interface IP address 10.10.2.10

CE1>ping 10.10.2.10

Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.10.2.10, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 2/6/8 ms

CE traceroute

Traceroute the CE3 interface IP address 10.10.3.10

CE1>traceroute 10.10.2.10

Type escape sequence to abort. Tracing the route to 10.10.3.10 VRF info: (vrf in name/id, vrf out name/id) 1 10.10.1.1 11 msec 2 msec 2 msec 2 10.10.3.1 12 msec 7 msec 6 msec 3 10.10.3.10 13 msec 4 msec 2 msec

Summary

At this point the SRv6 technolog has reached the certain point of maturity using big networking gear vendors. Now it makes only sense to declare LDP protocol obsolete, or blast form the past, it is complex to configure and operate. In the sense of VRF and IP forwarding across IPv6 only network the goal has been reached and it makes sense to begin migrating the old MPLS-LDD driven driven networks and infrastructure to SRv6 or at least migrate to SR-MPLS. During past decade I have been observing SR-MPLS and SRv6 technologies and has been implemented across the globe, implementing and operating LDP makes no sense at this point. No one should use MPLS-LDP anymore.

Use SR-MPLS or use SRv6. LDP is dead. Needing more tests? Check out the interop Testing results done by the EANTC - the European Advanced Networking Test Center, published tests for using following vendor in one topology:

  • Arista
  • Ciena
  • Cisco
  • Ericsson
  • H3C
  • Huawei
  • Juniper
  • Nokia
  • ZTE

The interop tests that have been accomplished for the MPLS SDN world event in Barcelona 2024

Upcoming tests for the year 2025 for the MPLS&SRV6AINETWORLD congress, that are to be published during next few months:

See also

References