šThe road to success is paved withā¦IPv4 over SRv6 over ISIS and BGP on SR OS 21.10š
ā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:
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
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!