The transit router role does not require the use of an SRv6 FPE.
The following steps summarize the packet processing for the transit router role. For more information about the specific processing of the SID function see https://tools.ietf.org/html/rfc8986.
The procedure in this step is common to a transit router role and the service termination router role.
On the ingress IP network interface, the SRv6 feature concurrently performs a couple of IPv6 address lookups on a received IPv6 packet: a first (longest prefix match) lookup checks if the address in the outer header DA field matches either the SRv6 local locator subnet, a local End function or local End.X function. This first lookup is for the current SID. A second lookup is performed on the next-SID in the SRH when the IPv6 packet has an SRH. The next-SID is read using the index value after decrementing the Segments-Left field.
The subsequent processing depends on the outcome of the first lookup:
If the match is on the locator only:
If the payload type is IPv4, IPv6, or Ethernet, the packet is forwarded to the SRv6 FPE for potential service function processing. See Service origination and termination roles for further details.
The payload type refers to the value of the last next-header field in the processing chain of the packet. This could be the next-header field of the outer IPv6 packet, if there is no SRH. This could also be the next-header field of the active SRH (Segments-Left=1) which last SID matches the locator.
If the payload type indicates any other protocol, including ICMPv6 (ICMP ping packet) and UDP (potential traceroute message when hop-limit field has a value of 1), the packet is redirected to the CPM for further processing.
The CPM processes packets of protocol matching ICMPv6 ping and UDP traceroute; see the 7450 ESS, 7750 SR, 7950 XRS, and VSR OAM and Diagnostics Guide. The CPM drops packets of other protocols.
The CPM generates a specific ICMPv6 message to the address in the SA field of the processed or dropped packet depending on the protocol type and the result of the match of the address in the DA field of the packet. These ICMPv6 reply messages are summarized in Table: ICMPv6 reply messages to extracted SRv6 packets.
Protocol | Destination IP address match result | ICMPv6
reply (Type/code) |
---|---|---|
ICMP echo request / reply (See 7450 ESS, 7750 SR, 7950 XRS, and VSR OAM and Diagnostics Guide for ICMPv6 Ping support in SRv6) |
locator prefix [ function | any arg ] |
echo reply / ping successful |
UDP / TCP (See 7450 ESS, 7750 SR, 7950 XRS, and VSR OAM and Diagnostics Guide for UDP Traceroute support in SRv6) |
locator prefix [ function | any arg ] |
dest unreachable, port unreachable |
Any other protocol |
locator prefix [ function | any arg ] |
ICMP Parameter Problem/SR Upper-layer Header Error |
All protocols including above |
locator prefix | unsupported function |
dest unreachable, communication prohibited |
If the match is on a specific local End function and the next SID lookup is not a local locator, the packet is processed as per the transit router role for these functions as described in (2) below.
If the match is on a specific local End function and the next SID resulted in a match on a local locator, the packet is processed as per step (1.a) above with the next-header field used in the processing is that of the SRH.
If the match is on a specific local End.X function, regardless of next SID match outcome, the packet is processed as per the transit router role for these functions as described in (2) below.
If the match is on a regular IPv6 route or there is no match, the packet is forwarded or dropped. If the packet is forwarded, the destination address could match the locator prefix or a regular IPv6 prefix of a remote node.
If the match is on a local End or End.X SID, the SID termination processing is performed on the packet.
If the End or End.X SID is the last SID in the packet encapsulation, meaning there is no SRH or there is only expired SRHs (Segments-Left =0), the packet is sent to the CPM for further processing.
If the next-header in the IPv6 header is an SRH, the Segments-Left field is zero, and the next-header in the SRH is another SRH, the current SRH is removed and the remaining steps are applied on the next SRH.
If the Segments-Left field is 1 and the SRH mode of the terminated SID is PSP, the SRH is removed. Otherwise, the Segments-Left field is decremented and used to read and copy the next SID into the DA field of the outer IPv6 header.
Decrement the incoming outer IPv6 header hop-limit and write it into the outgoing packet’s outer IPv6 header hop-limit field.
If the first SID lookup of the current SID in the FIB matched an End function, use the outcome of the second SID lookup of the next SID to forward the packet to the next hop of the next SID (in the DA field of the outer IPv6 header).
If the first SID lookup of the current SID in the FIB matched an End.X function, override the outcome of the second SID lookup of the next SID with the set of next hops of the adjacency and forward the packet.
If both the current and the next SIDs match a local End or End.X SID, the packet is forwarded as indicated in Table: Forwarding behavior for back-to-back local SIDs.
Current SID match | Next SID match | Forwarding action |
---|---|---|
End |
End |
Packet is extracted to the CPM which drops it if next SID in not the last SID. An ICMPv6 packet (type: dest unreachable, code: communication prohibited) is sent to the address in the SA field If the next SID is the last SID, the packet is processed as per Table: ICMPv6 reply messages to extracted SRv6 packets. |
End |
End.X |
Packet is forwarded over the adjacency of next SID to the downstream neighbor which forwards it back to this node for the next SID processing. The bounced packet is forwarded again over the same adjacency. If the next SID is the last SID, the packet is processed as per Table: ICMPv6 reply messages to extracted SRv6 packets. |
End.X |
End |
Packet is forwarded over the adjacency of the current SID to the downstream neighbor, which forwards it back to the current node for the next SID processing If the next SID is the last SID, the packet is processed as per Table: ICMPv6 reply messages to extracted SRv6 packets. |
End.X |
End.X |
Packet is forwarded over the adjacency of the current SID to the downstream neighbor, which forwards it back to the current node for the next SID processing If the next SID is the last SID, the packet is processed as per Table: ICMPv6 reply messages to extracted SRv6 packets. |