knowledge-virtualization – rule11.ac
knowledge-virtualization – rule11.ac
ac
(https://rule11.ac/)
Knowledge/Virtualization
Return to Contents (https://rule11.ac/contents/)
Plain IPv6
One interesting thing about IPv6 is the sheer amount of address space—so much that we can be much more creative in our
use of the address space than we are when using IPv4. Consider the situation shown below.
https://rule11.ac/knowledge-virtualization/ 2/12
11/15/24, 4:13 PM knowledge-virtualization – rule11.ac
In this illustration:
ADD1 is assigned to SVC1
ADD2 is assigned to SVC2
E advertises ADD1 to router C
router C advertises ADD1 to router B
E advertises ADD2 to router D
router D advertises ADD2 to router B
https://rule11.ac/knowledge-virtualization/ 3/12
11/15/24, 4:13 PM knowledge-virtualization – rule11.ac
router A forwards traffic to ADD1 towards router C based on its local routing table
router A forwards traffic to ADD2 towards router D based on its local routing table
router C forwards traffic towards E
router D forwards traffic towards E
host E internally forwards traffic to the correct service
https://rule11.ac/knowledge-virtualization/ 4/12
11/15/24, 4:13 PM knowledge-virtualization – rule11.ac
Using just IP addresses and our control over where routes are advertised, we’ve steered traffic so it always enters on a specific
interface at server E. We can give some things names to make it easier to talk about:
The path traffic takes through the network to reach SV1 or SV2 is called a segment
Each service running on host D is given a different IPv6 address used just to reach this service. This is called a Segment
Identifier or SID
Some interesting observations:
We are adding state to the control plane to steer traffic along specific paths. Assuming we are steering traffic to optimize
something—network utilization, latency, jitter, bandwidth, etc.—this makes sense. The SOS triad tells us we must increase
state to increase optimization, so this is what we should expect.
There is no “tunnel” here. Instead, the destination advertises multiple possible destinations, each associated with a service,
class of service, etc., and the sender chooses which of the available destinations to use based on some local policy. While
we can call the source the head end and the destination the tail end, there is no tunnel configuration, setup, etc.
Because there is no tunnel state, we can effectively set up a full mesh of “tunnels” with a minimum possible amount of
additional state.
Because the source is choosing which SID to use, this is a form of source routing. This is why this work is being done in the
source routing working group (SPRING) in the IETF.
Adding a Header
Segment routing goes beyond controlling the flow of traffic using multiple addresses by adding a header, called the Segment
Routing Header, or SRH, to create a pseudo-tunnel and steer traffic through the network. This use case is illustrated below.
https://rule11.ac/knowledge-virtualization/ 5/12
11/15/24, 4:13 PM knowledge-virtualization – rule11.ac
In this figure:
Router F assigns SID1 to the [F,C] link
Router F assigns SID2 to the [F,D] link
Router F advertises SID1 and SID2 to routers C and D
Router C and D advertise SID1 and SID2 to router B
Router B has an explicit policy to route traffic destined to SID1 towards C
Router B has an explicit policy to route traffic destined to SID2 towards D
https://rule11.ac/knowledge-virtualization/ 6/12
11/15/24, 4:13 PM knowledge-virtualization – rule11.ac
https://rule11.ac/knowledge-virtualization/ 7/12
11/15/24, 4:13 PM knowledge-virtualization – rule11.ac
In this figure:
There are two instances of a single service, SVC1, hosted on E and G
Router F assigns SID1 to the [F,E] link, so whatever traffic F receives with an SRH containing SID1 as its destination
address, F will transmit along the [F,E] link regardless of the actual destination address
Router F assigns SID2 to the [F,G] link, so whatever traffic F receives with an SRH containing SID2 as its destination
address, F will transmit along the [F,G] link regardless of the actual destination address
Router F advertises SID1 and SID2 towards C and D
https://rule11.ac/knowledge-virtualization/ 8/12
11/15/24, 4:13 PM knowledge-virtualization – rule11.ac
Service Chaining
https://rule11.ac/knowledge-virtualization/ 9/12
11/15/24, 4:13 PM knowledge-virtualization – rule11.ac
Finally, let’s separate the path from the service using service chaining.
In this case:
Hosts E and G run two instances of SVC1
Router F assigns SID1 to the [F,E] link and advertises it to C and D
Router F assigns SID2 to the [F,G] link and advertises it to C and D
Router C assigns SID3 to itself (C) and advertises to to B
Router D assigns SID4 to itself (D) and advertises it to F
https://rule11.ac/knowledge-virtualization/ 10/12
11/15/24, 4:13 PM knowledge-virtualization – rule11.ac
Assume A wants to send traffic to the SVC1 instance running on E via router D. In this case:
Some process creates a packet destined to SVC1’s address
Host A’s network stack has a policy to send this packet via SRv6 towards one of the hosts running SVC1
Host A’s network stack
determines the packet should go to E via D
imposes an SRH with a stack of two SIDS, [SID1,SID4]
forwards the packet to B
Router B
examines the SRH destination, which is SID4 (the lower, or outer, SID in the stack)
Because SID4 is D’s address, router B forwards the packet to D
Router D
strips the outer SID from the stack because it is local to D itself
forwards the packet to F based on the remaining SID (SID1)
Router F
determines it should forward the packet along the [F,E] link based on the remaining SID (SID1)
strips the SRH and forwards the packet along [F,E]
Some observations:
Routers C and D assign themselves SIDs; these are called Node SIDs
Routers C and D (still) do not know anything about the final destination addresses (E and G), or even the service’s
address (SVC1); they are forwarding based on local policy and information in the local routing table
Again, as an exercise, imagine host A is a load balancer receiving traffic from some other host, or even load balancing traffic
originating from local processes.
Summary
SRv6 treats IPv6 addresses as destinations and identifiers
Identifiers can identify a service, a link, or a node
SRv6 uses a Segment Routing Header (SRH) to encapsulate packets so the original destination is not visible, and to
steer traffic along specific paths (segments) or a set of services (service chain)
https://rule11.ac/knowledge-virtualization/ 11/12
11/15/24, 4:13 PM knowledge-virtualization – rule11.ac
https://rule11.ac/knowledge-virtualization/ 12/12