Understanding Source Packet Routing in Networking (SPRING)
Source packet routing or segment routing is a control-plane architecture that enables an ingress router to steer a packet through a specific set of nodes and links in the network without relying on the intermediate nodes in the network to determine the actual path it should take. In this context, the term ’source’ means ’the point at which the explicit route is imposed’. Starting with Junos OS Release 17.2R1, segment routing for IS-IS and OSPFv2 is supported on QFX5100 and QFX10000 switches.
Starting with Junos OS Release 17.3R1, segment routing for IS-IS and OSPFv2 is supported on QFX5110 and QFX5200 switches.
Essentially segment routing engages IGPs like IS-IS and OSPF for advertising two types of network segments or tunnels:
First, a strict forwarded single-hop tunnel that carries packets over a specific link between two nodes, irrespective of the link cost, referred to as adjacency segments.
Second, a multihop tunnel using shortest path links between two specific nodes, referred to as node segments.
Ingress routers can steer a packet through a desired set of nodes and links by pre-appending the packet with an appropriate combination of tunnels.
Segment routing leverages the source routing paradigm. A node steers a packet through an ordered list of instructions, called segments. A segment can represent any instruction, topological or service-based. A segment can have a local semantic to a segment routing node or to a global node within a segment routing domain. Segment routing enforces a flow through any topological path and service chain while maintaining per-flow state only at the ingress node to the segment routing domain. Segment routing can be directly applied to the MPLS architecture with no change on the forwarding plane. A segment is encoded as an MPLS label. An ordered list of segments is encoded as a stack of labels. The segment to process is on the top of the stack. Upon completion of a segment, the related label is popped from the stack. Segment routing can be applied to the IPv6 architecture, with a new type of routing extension header. A segment is encoded as an IPv6 address. An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing extension header. The segment to process is indicated by a pointer in the routing extension header. Upon completion of a segment, the pointer is incremented.
Traffic engineering shortcuts are enabled for labeled IS-IS segment routes, when you configure shortcuts at the following hierarchy levels:
[edit protocols is-is traffic-engineering family inet] for IPv4 traffic.
[edit protocols is-is traffic-engineering family inet6] for IPv6 traffic.
When source packet routing is deployed in the network, the data center, backbone, and peering devices, switch MPLS packets with a label stack built by the source of the traffic; for example, data center servers. In Junos OS Release 17.4R1, the source-routed traffic co-exists with traffic taking RSVP signaled paths, and source routing is implemented as regular label switching through mpls.0 table using the label operations – pop, swap (to the same label value), and swap-push (for interface protection). In all the cases, traffic can be load balanced between multiple Layer 3 interfaces, or within an aggregate interface. Starting in Junos OS Release 17.4R1, the traffic statistics in a segment routing network can be recorded in an OpenConfig compliant format for the Layer 3 interfaces. The statistics is recorded for the Source Packet Routing in Networking (SPRING) traffic only, excluding RSVP and LDP-signaled traffic, and the family MPLS statistics per interface is accounted for separately. The SR statistics also includes SPRING traffic statistics per link aggregation group (LAG) member, and per segment identifier (SID). To enable recording of segment routing statistics, include sensor-based-stats statement at the [edit protocol isis source-packet-routing] hierarchy level.