What Is SRv6?
Segment Routing IPv6 (SRv6) is a next-generation IP bearer protocol that combines Segment Routing (SR) and IPv6. Utilizing existing IPv6 forwarding technology, SRv6 implements network programming through flexible IPv6 extension headers.
SRv6 reduces the number of required protocol types, offers great extensibility and programmability, and meets the diversified requirements of more new services. It also provides high reliability and offers exciting cloud service application potential.
Why Do We Need SRv6?
Challenges Facing Traditional Networks
The advancement of global informatization is accelerating the development of Internet applications. As networks grow in scale and we embrace the cloud era, we see more diversity in the types of network services and the requirements they pose on the networks. In this context, traditional IP/MPLS networks are presented with a series of challenges:
- Isolated IP bearer network islands: Although MPLS unified bearer network technologies, the IP backbone, metro, and mobile bearer networks are independent MPLS domains that are separated from each other. Consequently, they must be interconnected using complex technologies, such as inter-AS VPN, leading to more complex E2E service deployment. In addition, when L2VPN and L3VPN services coexist, numerous protocols (such as LDP, RSVP, IGP, and BGP) may coexist on a device, further complicating management and resulting in difficult large-scale service deployment.
- Limited programming space in IPv4 and MPLS: Many of today's new services require additional forwarding information to be added to packets. However, the IETF has announced that it will no longer formulate new standards for IPv4. In addition, as the MPLS label space is fixed at 20-bit long and lacks extensibility, it can no longer sufficiently meet the requirements of new services for network programming.
- Decoupling of applications and bearer networks: Decoupling makes it difficult to optimize networks and improve their value. As a result, many carriers find themselves stuck as a provider of pipes, unable to benefit from value-added applications. Moreover, the lack of application information means that carriers can only implement network adjustment and optimization in a coarse-granularity way, leading to wasted resources. Throughout the years, attempts have been made to move MPLS closer to user hosts and applications, but all have failed due to a variety of reasons, such as too many network borders and complex management.
- Tight coupling of the data and control planes: These planes are bound together for sale and evolution, prolonging service provisioning and making it difficult to cope with the rapid development of new services.
SRv6 resolves the preceding problems and transports networks into a new era.
Technical Value of SRv6
- Intelligence
- SRv6 offers powerful programming capabilities. With three-dimensional programming space — namely, network path, service, and forwarding behavior — SRv6 meets the diverse requirements of numerous services, making it ideal for service-driven networks.
- Totally based on the SDN architecture, SRv6 bridges the gap between applications and networks. By delivering application information to networks, SRv6 enables network scheduling and optimization based on global information.
- Ultra-simplified
- With SRv6, LDP or RSVP-TE is no longer required — and neither are MPLS labels. This greatly simplifies protocols and management. In addition, the combination of EVPN with SRv6 replaces many protocols, greatly simplifying IP bearer networks.
Simplifying network protocols - SRv6 overcomes MPLS inter-domain boundaries, is easy to deploy, and improves the inter-domain deployment experience.
- With SRv6, LDP or RSVP-TE is no longer required — and neither are MPLS labels. This greatly simplifies protocols and management. In addition, the combination of EVPN with SRv6 replaces many protocols, greatly simplifying IP bearer networks.
- Native IP
SRv6 forwards packets based on native IPv6 and is implemented by extending the packet headers without changing the original IPv6 packet encapsulation structure. As SRv6 packets remain IPv6 packets, they can still be identified by common IPv6 devices. This means that SRv6 devices can be deployed in conjunction with common IPv6 devices. Due to SRv6's better compatibility with existing networks, it enables fast service rollout and smooth evolution. In addition, the native IPv6 feature of SRv6 enables it to be deployed in data center networks or even on user terminals, promoting cloud-network convergence.
Thanks to the above characteristics, SRv6 is ideally suited for building intelligent IP networks. It also introduces IPv6 development opportunities, ushering in a new era of IPv6+.
What Is SR?
As mentioned above, SRv6 can be simply understood as a combination of SR and IPv6. IPv6 is not a new technology, but what exactly is SR?
SR appeared as a result of SDN competition pressure. Its core idea is to divide a packet forwarding path into different segments and insert segment information into a packet at the ingress of the path. A transit node only needs to forward the packet according to the segment information carried in the packet. Such a path segment is referred to as a segment, which is identified by a segment identifier (SID).
The design concept behind SR can be easily found in real life, and the following example may help you to better understand its working principles. Let's say you are departing Shanghai for a trip to Paris, but you need to take a connecting flight in Vienna. Your travel route will be divided into two segments: Shanghai → Vienna; Vienna → Paris. To reach your destination, you only need to buy the ticket at Shanghai. You can then take two flights to Paris according to your plan.
Travel from Shanghai to Paris
The SR-based packet forwarding process is similar. The preceding example shows that two points are critical in SR implementation: dividing a path into segments and arranging the segments (segment list) at the starting point to determine the travel path.
In SR, segments representing different functions are combined to implement path programming, meeting the performance requirements of different services.
Both MPLS and IPv6 can be used as the forwarding planes of SR. MPLS-based SR is referred to as Segment Routing MPLS (SR-MPLS), and its SIDs are represented by MPLS labels. IPv6-based SR is referred to as SRv6, and its SIDs are represented by IPv6 addresses.
How Does SRv6 Implement Network Programming?
SR implements path programming by combining segments. But how does SRv6 implement network programming?
For SRv6, a network is like a computer. Similar to computer programming, network services are programmed into a series of forwarding instructions, which are delivered to network devices along a path. In this way, network programming is implemented to meet service customization requirements.
SRH
To implement SR based on the IPv6 forwarding plane, a Segment Routing header (SRH) is added as an IPv6 routing extension header. The SRH specifies an IPv6 explicit path and stores the IPv6 segment list information. A segment list is a forwarding path that is formed by arranging segments and network nodes in sequence. When a packet is forwarded, the Segments Left (SL) and Segment List fields are both used to determine the IPv6 destination address (IPv6 DA) and how the packet should be forwarded.
SRH format
Three-Dimensional Programming Space
- Segment list. As described above, multiple segments can be combined to form an SRv6 path. This means that the path can be programmed.
- 128-bit SRv6 SID.
SRv6 segments define network instructions in SRv6 network programming, dictating where packets should go and how they should get there. Each SRv6 segment is identified by an SRv6 SID, which is a 128-bit IPv6 address and usually consists of three parts: Locator, Function, and Arguments.
SRv6 segment format- Locator: identifies the location of a network node and provides the IPv6 routing capability, while also guiding the address lookup for packet forwarding. Routes corresponding to locators can also be aggregated.
- Function: identifies a forwarding behavior to be executed by a device. Different forwarding behaviors are expressed by different functions.
- Arguments: an optional field supplemental to Function. This is used to define parameters for instruction execution, and can contain flow, service, or any other related information.
Each SRv6 segment is 128 bits and can be flexibly divided into multiple parts, with the function and length of each part being customizable. As such, SRv6 provides flexible programming capabilities, which allow services to be programmed.
- Optional TLV (Type-Length-Value) after segment lists. During packet transmission on a network, some irregular information needs to be encapsulated in the forwarding plane, which can be implemented through a flexible combination of TLVs in the SRH. This means that applications can be programmed.
Thanks to the preceding three-dimensional programming space, SRv6 offers more powerful network programming capabilities and can satisfy a wide range of network path requirements. Working with SDN, SRv6 can implement interaction between networks and applications and enable service-driven programmable networks.
SRv6's three-dimensional programming space
How Does SRv6 Work on a Network?
SRv6 offers powerful network programming capabilities. But how does it work on a network? The following describes SRv6 implementation on a network from two perspectives: SRv6 packet forwarding process and SRv6 working mode.
Packet Forwarding Process
The following uses an example to describe the SRv6 packet forwarding process.
In the following figure, a packet needs to be forwarded from host 1 to host 2, and host 1 sends the packet to node A for processing. Nodes A, B, D, and E all support SRv6, but node C does not. It supports only IPv6. Network programming is required on source node A, so that the packet is sent to host 2 through node E after passing through links B-C and C-D.
SRv6 packet forwarding process
The packet forwarding process is as follows:
- Source node A encapsulates SRv6 path information carrying the SIDs of B-C and C-D links as well as SID A5::100 advertised by node E (this SID corresponds to an IPv4 VPN instance of node E) into an SRH. Note that the SIDs are encapsulated in reverse order, and the SL value in the encapsulated packet is 2 as three SIDs exist in total. The SL field points to the segment list to be processed, which is Segment List [2]. Consequently, node A copies the value of Segment List [2] to the DA field in the outer IPv6 header, searches the corresponding IPv6 routing table according to the longest match rule, and then forwards the packet to node B.
- After receiving the packet, node B searches its local SID table (which stores the SRv6 SID information it generates) based on the destination address in the outer IPv6 header and finds a matching End.X SID. According to the instructions defined by the End.X SID, node B decrements the SL value by 1, updates the DA field in the outer IPv6 header with the Segment List [1] value, and then sends the packet over the link (B-C) bound to the SID.
- The packet arrives at node C. Node C cannot identify the SRH as it does not have any SRv6 capabilities. As such, it treats the packet as a common IPv6 packet. Specifically, it searches the corresponding IPv6 routing table according to the longest match rule and then forwards the packet to node D, which is represented by the current destination address.
- After receiving the packet, node D searches its local SID table based on the destination address A4::45 and finds a matching SID (End.X SID). Similar to node B, node D decrements the SL value by 1, updates the DA field in the outer IPv6 header with A5::100, and then sends the packet over the link bound to the End.X SID.
- After receiving the packet, node E searches its local SID table based on A5::100 and finds a matching SID (End.DT4 SID). According to the instructions defined by the SID, node E decapsulates the packet by removing the IPv6 header, searches the IPv4 routing table of the VPN instance bound to the End.DT4 SID, and ends the process by sending the inner IPv4 packet to host 2.
SRv6 Working Mode
SRv6 can work in either SRv6 Traffic Engineering (TE) Policy or SRv6 Best Effort (BE) mode. Both modes can be used to carry traditional services, such as L3VPN, EVPN L3VPN, EVPN VPLS, EVPN VPWS, and public IP services.
SRv6 TE Policy
SRv6 TE Policy leverages SR's source routing mechanism to instruct packet forwarding across a network based on an ordered list of segments (path information) encapsulated by the source node. As a result, SRv6 TE Policy can be used to implement traffic engineering, which improves network quality and meets E2E service requirements. When combined with SDN, SRv6 TE Policy is ideal for service-driven networks and is the recommended SRv6 working mode.
SRv6 TE Policy working process
The working process of an SRv6 TE Policy is as follows:
- The forwarder (PE3) reports network topology information to the controller through BGP-LS. The topology information includes node and link information and TE attributes, such as the link cost, bandwidth, and delay.
- The controller analyzes the collected topology information and computes paths based on service requirements to meet service SLA requirements.
- The controller delivers path information to the ingress (PE1) of the network. The ingress then generates SRv6 TE Policies, which include the headend addresses, destination addresses, and colors (extended community attribute).
- The ingress (PE1) selects an appropriate SRv6 TE Policy to guide service forwarding. During forwarding, each forwarder executes the instructions of its advertised SIDs based on the information carried in SRv6 packets.
SRv6 BE
Similar to LDP on an MPLS network, SRv6 BE calculates the optimal SRv6 path based on IGP's SPF algorithm and uses only one service SID to guide packet forwarding on links. As a best-effort working mode, SRv6 BE does not have TE capabilities and is generally used to carry common VPN services for quick service provisioning.
The following uses L3VPNv4 over SRv6 BE as an example to describe SRv6 BE service implementation. In the following figure, VPN instances are deployed on the network, SRv6 is deployed on PE1 and PE2, and IPv6 is deployed on the P node.
SRv6 BE working process
- A locator is configured on PE2.
- PE2 uses an IGP to advertise the locator route 2001:DB8:2::/64 corresponding to the SRv6 SID to PE1. PE1 then installs the route in its IPv6 routing table.
- After a VPN SID (2001:DB8:2::B100) within the locator range is configured on PE2, PE2 generates a local SID entry.
- After receiving an IPv4 route advertised by CE2, PE2 converts the route to a BGP VPNv4 route and advertises it to its MP-BGP peer PE1. The route carries the SRv6 VPN SID (that is, the SID 2001:DB8:2::B100 of the VPN instance).
- After receiving the VPNv4 route, PE1 leaks the route to the routing table of the corresponding VPN instance, converts it into a common IPv4 route, and advertises it to CE1.
CE1 sends a common IPv4 packet to PE1.
After receiving the packet through the interface to which a VPN instance is bound, PE1 searches the routing table of the VPN instance for a prefix entry that matches the destination IPv4 address of the packet. After finding associated SRv6 VPN SID and next hop information, PE1 encapsulates the packet into an IPv6 packet using the SRv6 VPN SID 2001:DB8:2::B100 as the destination address.
PE1 finds the route 2001:DB8:2::/64 based on the longest match rule and forwards the packet to the P device over the shortest path.
Similarly, the P device finds the route 2001:DB8:2::/64 based on the longest match rule and forwards the packet to PE2 over the shortest path.
PE2 searches its local SID table based on 2001:DB8:2::B100. After finding the matching SID, PE2, according to the instruction bound to the SID, pops the IPv6 packet header and searches the routing table of the VPN instance corresponding to the SID for packet forwarding. At this point, the packet is restored to a common IPv4 packet.
Comparison between SRv6 BE and SRv6 TE Policy
SRv6 vs. SR-MPLS
SR supports both MPLS and IPv6 forwarding planes. MPLS-based SR is known as SR-MPLS, and IPv6-based SR is known as SRv6.
Why is SRv6 considered a next-generation IP bearer protocol? What advantages does SRv6 have over SR-MPLS?
Comparison between SRv6 and SR-MPLS
- Author: Zhang Yan
- Updated on: 2024-11-25
- Views: 54358
- Average rating: