šŸŒThe road to success is paved withā€¦IPv4 over SRv6 over ISIS and BGP on SR OS 21.10šŸŒ„

Jeroen Van Bemmel
4 min readJan 15, 2022

8 SR OS nodes performing SPRING

ā€œOne packet does not make SPRINGā€ ā€” yours truly

The IETF Source Packet Routing in Networking (SPRING) working group was created in 2013, shortly after my family and I emigrated from Europe to Canada. I canā€™t say Iā€™ve ever been involved personally, I have heard about Segment Routing as a concept but hadnā€™t really done anything with it until now. Especially in the context of ā€œSRv6ā€ it regularly seems to get derided as a networking vendor ploy to sell more equipment ā€” but while I can confirm nor deny the level of truth in that, I am technically intrigued.

For every problem there are countless solutions, and this is especially true in networking. Does the world really need Yet Another Method to send packets from A to B? The strive for simplicity would seem to imply a minimal amount of variations and protocols, but how can we know what ā€œsimpleā€ looks like? This line of thinking inspired a challenge šŸ„¶: Build the most complicated combination of protocols you can imagine, then take it from there.

SRv6 ā€” ā€œor some people would feel left outā€

Never too shy to share his thoughts, Ivan confirmed that SRv6 should definitely be included in such an exercise. A quick Google search resulted in this starting point by Juniper, and the resulting Netsim-Tools topology brings it to life.

New: Netsim-Tools srv6 core module

Netsim-Tools (v1.0) has support for ā€˜regularā€™ segment routing, but not (yet) for srv6. A simple module was easily built; basically every node needs a unique IPv6 ā€˜locatorā€™ prefix to be assigned.

I also added some BGP peering flags to select the right combination of protocol families and peering sessions.

SRv6 configuration on SR OS (IPv4 over SRv6)

SRv6 is a relatively recent feature in the SR OS platform, and comprehensive sample configuration snippets were a little hard to come by. The final template is only a little over 100 lines, but there are some key knobs that must be aligned for things to work smoothly. Here is an overview of the main config items:

Base router SRv6 with explicit Forwarding Path Element configuration and ā€˜end-dt4ā€™ to get BGP service SIDs
ISIS SRv6 configuration ā€” requires ā€˜wide metricsā€™ and ā€˜ipv6-routing: nativeā€™ for TLVs to be advertised
Donā€™t ignore what your neighbors tell youā€¦

Differences

Unlike the original Juniper example, this configuration advertises the SRv6 service SIDs using BGP (iBGP via R2 as Route Reflector). There is no need for a policy to modify the next hop manually; instead, ā€˜next-hop-selfā€™ causes the SRv6 TLV attributes to be added. The Route Reflector itself does not need to enable SRv6, but it must support IPv6 next hops for IPv4 routes ( ā€˜extended-nh-encodingā€™ and ā€˜advertise-ipv6-next-hopsā€™ for ipv4)

Basic verification

ipv4 route details (received via RR)
Resulting SRv6 tunnels between R0 and R7
Working pings from h1 to h2

Next hops šŸ‘£

Obviously a lot more could be said about this setup: There is Loop Free Alternate (LFA) to be explored and tested, and what about Flex-Algo to engineer different paths besides the shortest one(s)?

Iā€™ll leave things here for now (and thanks go to my Nokia colleague Neil Pescod for his SR OS SRv6 slide deck). Until our paths cross again!

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Jeroen Van Bemmel
Jeroen Van Bemmel

Written by Jeroen Van Bemmel

Sustainable digital transformation at Webscale ā€” real life stories about our discoveries in the world of networking. Views represented are my own.

No responses yet

Write a response