SRv6 Path Verification
draft-yang-spring-srv6-verification-05
This document is an Internet-Draft (I-D).
Anyone may submit an I-D to the IETF.
This I-D is not endorsed by the IETF and has no formal standing in the
IETF standards process.
| Document | Type | Active Internet-Draft (individual) | |
|---|---|---|---|
| Authors | Feng Yang , Xiaoqiu Zhang , Changwang Lin , Zhang Han | ||
| Last updated | 2026-06-28 | ||
| RFC stream | (None) | ||
| Intended RFC status | (None) | ||
| Formats | |||
| Stream | Stream state | (No stream defined) | |
| Consensus boilerplate | Unknown | ||
| RFC Editor Note | (None) | ||
| IESG | IESG state | I-D Exists | |
| Telechat date | (None) | ||
| Responsible AD | (None) | ||
| Send notices to | (None) |
draft-yang-spring-srv6-verification-05
SPRING F. Yang
Internet-Draft X. Zhang
Intended status: Standards Track China Mobile
Expires: 29 December 2026 C. Lin
New H3C Technologies
H. Zhang
Tsinghua University
27 June 2026
SRv6 Path Verification
draft-yang-spring-srv6-verification-05
Abstract
SRv6 is being rapidly deployed and is currently primarily used in
trusted-domain backbone networks. However, we have also observed
that SRv6 is beginning to extend toward customer site devices, e.g.,
SD-WAN and enterprise network deployments. Both of the scenarios can
be deployed in third-party clouds or at customer sites. This
introduces certain security risks, such as packet injection and path
manipulation attacks. Section 6 of
[I-D.draft-ietf-spring-srv6-security] identifies these risks as well,
including Section 6.2.1 on Modification Attacks and Section 6.2.3 on
Packet Insertion. This proposal mitigates these risks by enhancing
the HMAC mechanism defined in [RFC8754].
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on 29 December 2026.
Copyright Notice
Copyright (c) 2026 IETF Trust and the persons identified as the
document authors. All rights reserved.
Yang, et al. Expires 29 December 2026 [Page 1]
Internet-Draft SRv6 Path Verification June 2026
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components
extracted from this document must include Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4
2. Process . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Authentication Algorithms . . . . . . . . . . . . . . . . 5
2.1.1. Sequence Number Handling: . . . . . . . . . . . . . . 6
2.1.2. Algorithm Selection Guidelines . . . . . . . . . . . 6
3. Extensions . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1. SRv6 SID Verify TLV . . . . . . . . . . . . . . . . . . . 7
4. Operational Consideration . . . . . . . . . . . . . . . . . . 8
5. Backward Compatibility . . . . . . . . . . . . . . . . . . . 8
6. Security Considerations . . . . . . . . . . . . . . . . . . . 8
6.1. Key Management Considerations . . . . . . . . . . . . . . 8
6.2. Replay Attack Prevention . . . . . . . . . . . . . . . . 9
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
7.1. SRv6 SID Verify TLV . . . . . . . . . . . . . . . . . . . 9
7.2. SRv6 SID Verify Algorithm Registry . . . . . . . . . . . 9
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
8.1. Normative References . . . . . . . . . . . . . . . . . . 9
8.2. Informative References . . . . . . . . . . . . . . . . . 10
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10
1. Introduction
SRv6 is being rapidly deployed and is currently primarily used in
trusted-domain backbone networks. However, we have also observed
that SRv6 is beginning to extend toward end-user devices, e.g., in
SD-WAN deployments. SD-WAN can be deployed in third-party clouds or
at customer sites, causing the physical boundary of SRv6 to become
blurred. This introduces certain security risks, such as packet
injection and path manipulation attacks. Section 6 of
[I-D.draft-ietf-spring-srv6-security] identifies these risks as well,
including Section 6.2.1 on Modification Attacks and Section 6.2.3 on
Packet Insertion. This proposal mitigates these risks by enhancing
the HMAC mechanism defined in [RFC8754].
Yang, et al. Expires 29 December 2026 [Page 2]
Internet-Draft SRv6 Path Verification June 2026
[RFC8754] describes how to use the HMAC TLV to verify the integrity
and authenticity of the SRH during the transmission process, and to
prevent the SRH from being maliciously tampered with or forged.
Although the HMAC mechanism specified in RFC 8754 can verify the
integrity of the entire SID List, if we want to force the SRv6
endpoints the packet must pass through during forwarding, it is
necessary to retain some information each time the packet passes
through an SRv6 endpoint. This draft proposes an enhancement to HMAC
specified by RFC 8754 that provides the capability to enforce the
packet's forwarding path to go through all or certain SRv6 endpoints
in the SID List. Meanwhile, the SRv6 HMAC mechanism performs end-to-
end cryptographic verification of the entire IPv6 header and SRH
header. This significantly increases the processing performance and
storage overhead of forwarding chips, making it challenging to
implement in practical commercial deployments.
This document proposes a path verification mechanism for SRv6, which
adopts a hop-by-hop cryptographic computation on the destination
segment identifier at each node, combined with an end-to-end
verification at the last hop. Although the HMAC mechanism specified
in RFC 8754 can verify the integrity of the entire SID List, if we
want to force the SRv6 endpoints the packet must pass through during
forwarding, it is necessary to retain some information each time the
packet passes through an SRv6 endpoint. This draft proposes an
enhancement to HMAC specified by RFC 8754 that provides the
capability to enforce the packet's forwarding path to go through all
or certain SRv6 endpoints in the SID List. This approach also
significantly reduces the processing overhead associated with hop-by-
hop path verification.
Three authentication algorithms are defined for the SRv6 path
verification: HMAC-SHA256 and AES-CMAC-128. These algorithms provide
operators with flexibility to choose the most appropriate mechanism
based on their hardware capabilities and security requirements.
HMAC-SHA256 and AES-CMAC-128 incorporate a sequence number to prevent
replay attacks.
1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
Yang, et al. Expires 29 December 2026 [Page 3]
Internet-Draft SRv6 Path Verification June 2026
1.2. Terminology
ALG: Authentication algorithm
DA: Destination address in IPv6 header
CMAC: Cipher-based Message Authentication Code, defined in [RFC4493]
HMAC: Hash-based Message Authentication Code, defined in [RFC6234]
MAC: Message Authentication Code
SID: Segment Identifier, defined in [RFC8402]
SRH: Segment Routing Header, defined in [RFC8402]
SRv6: SR over IPv6, defined in [RFC8402]
2. Process
The improved SRv6 path verification mechanism proposed in this
document follows the processing flow at the head node, intermediate
nodes, and tail nodes as described below:
Attack traffic: SRH (P1, P3, PE2) w/ HMAC captured from user traffic
|
| +----+
+---->| P2 |
/+----+\
/ \
+------+ +-+--+ +-+--+ +------+
| Head |------| P1 |-----| P3 |------| Tail |
+---+--+ +----+ +----+ +------+
|
+<---- User traffic: SRH (P1, P3, PE2) w/ correct HMAC
Figure 1: Example topology
Head Node:
The head node sends an SRv6 packet. It MUST perform the selected an
authentication algorithm and produce an authentication tag. This
authentication tag MUST be placed into SRv6 SID Verify TLV within the
SRH. The packet, now containing authentication tag, is forwarded to
the next SRv6 node.
Intermediate Nodes:
Yang, et al. Expires 29 December 2026 [Page 4]
Internet-Draft SRv6 Path Verification June 2026
After an node receives the SRv6 packet and replaces the DA with the
next SID, it MUST perform the selected authentication algorithm again
with authentication tag and DA from the packet as inputs, and produce
a new authentication tag. The packet MUST be updated with the newly
generated authentication tag, then forwarded to next SRv6 node.
Subsequent intermediate nodes repeat this process.
Tail Node:
An SDN controller MAY pre-compute the expected authentication tag for
each SRv6 tunnel and programme it to tail node. Once the tail node
receives the packet carrying the authentication tag, it MUST compare
the authentication tag with the expected value. If they do not
match, the packet is considered to have violated path verification
and MUST be discarded. If they match, it means the packet strictly
follows the SID List carried in the packet.
In summary, the algorithm works in the following way. Define auth(n)
as the path authentication function, which produces a tag on node n
and sends it to the next SRv6 endpoint with the packet. The auth(n)
SHOULD be calculated in the following manner:
if n == 0: auth(0) = 0
if n >= 1: auth(n) = ALG(k(n), auth(n-1), x)
Suppose the SRv6 path starts from head to tail, the path verification
information would be computed incrementally on each node. In this
way, the intermediate nodes specified in the SID list will not be
allowed to be skipped since every hop will have a fingerprint in the
auth(n).
2.1. Authentication Algorithms
This section defines three authentication algorithms for SRv6 path
verification. The AlgoID field in the SRv6 SID Verify TLV identifies
which algorithm is used.
Several MAC algorithms are selected, including HMAC and CMAC.
HMAC-SHA256 [RFC6234] provides strong cryptographic integrity
protection using the SHA-256 hash function. It is RECOMMENDED for
deployments where hardware-accelerated SHA-256 is available. Note,
it requires two 64-bytes blocks of HMAC processing.
Yang, et al. Expires 29 December 2026 [Page 5]
Internet-Draft SRv6 Path Verification June 2026
AES-CMAC-128 [RFC4493] provides efficient message authentication
using the AES block cipher. It is RECOMMENDED for deployments with
AES-NI hardware acceleration or dedicated crypto engines. Note, AES-
CMAC requires four AES encryptions on the 16-bytes key,
authentication tag, DA and SN.
Computation on node n:
auth(n) = ALG(k(n), auth(n-1) || DA || SN)
Where x includes: - ALG is the MAC algorithm, CMAC or HMAC - key(n)
is the pre-shared key for node n - DA is the 16-byte IPv6 Destination
Address on node n - SN is the sequence number in the packet - "||"
denotes concatenation
+================+==============+==========+==============+
| Algorithm Name | Auth Tag Len | Key Len | SN Len |
+================+==============+==========+==============+
| HMAC-SHA-256 | 16/32 bytes | 32 bytes | 0 ~ 128 bits |
+----------------+--------------+----------+--------------+
| AES-CMAC-128 | 16 bytes | 16 bytes | 0 ~ 128 bits |
+----------------+--------------+----------+--------------+
Table 1: SRv6 SID Verify Algorithms
2.1.1. Sequence Number Handling:
The sequence number SHOULD be present to prevent replay attacks. The
head node generates a unique sequence number for each packet flow.
The tail node maintains a sliding window of recently seen sequence
numbers and rejects packets with duplicate or out-of-window sequence
numbers.
2.1.2. Algorithm Selection Guidelines
Implementations SHOULD select algorithms based on the following
deployment characteristics:
Yang, et al. Expires 29 December 2026 [Page 6]
Internet-Draft SRv6 Path Verification June 2026
+======================+==============+=========================+
| Deployment Scenario | Recommended | Rationale |
| | Algorithm | |
+======================+==============+=========================+
| Hardware with | HMAC-SHA256 | Strong security, widely |
| SHA-256 acceleration | | supported in hardware |
+----------------------+--------------+-------------------------+
| Hardware with AES-NI | AES-CMAC-128 | Efficient in hardware, |
| or dedicated AES | | low power consumption |
| crypto engines | | |
+----------------------+--------------+-------------------------+
Table 2: Algorithm Selection Guidelines
3. Extensions
3.1. SRv6 SID Verify TLV
A new SRv6 SID Verify TLV is requested from "Segment Routing Header
TLVs" in this document.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type(TBD) | Length |AlgoID |S| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Sequence Number (128 bits) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Auth Tag (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Type (1 octet): TBD, SRv6 SID Verify TLV
- Length (1 octet): The length of data in bytes.
- AlgoID(4 bits): The authentication algorithm ID.
- S(1 bit): 0/1 indicates presentation of sequence number.
- Sequence Number(0 or 128bits): SN is for replay attack
prevention.
- Auth Tag: Value produced by authentication algorithm, in
multiples of 8 octets.
- Reserved (1 octet): MUST be set to zero on transmission,
ignored on receipt.
Figure 2: SRv6 SID Verify TLV
Yang, et al. Expires 29 December 2026 [Page 7]
Internet-Draft SRv6 Path Verification June 2026
4. Operational Consideration
Operators SHOULD configure a single algorithm for an SRv6 domain to
ensure interoperability. Mixed-algorithm paths are NOT RECOMMENDED
and may lead to verification failures. All nodes along the SRv6 path
MUST support the path verification. The algorithm selection SHOULD
be consistent with the hardware capabilities of all nodes along the
path. Sequence number is RECOMMENDED as the default if it is
available for the implementation. Deployments requiring strict path
verification SHOULD configure nodes to drop packets with missing or
invalid SRv6 SID Verify TLVs.
5. Backward Compatibility
If a path contains any node that does not support the TLV, path
verification MUST NOT be enabled for that path. Nodes that do not
support the SRv6 SID Verify TLV MUST ignore it and process the packet
normally, as per [RFC8754] Section 2.1. This preserves backward
compatibility but provides no path verification. Nodes that support
the SRv6 SID Verify TLV but do not recognize a specific AlgoID value
MUST treat the packet as having failed verification and SHOULD
discard it.
6. Security Considerations
The security strength of the path verification mechanism depends on
the selected algorithm and key management practices. HMAC-SHA256
provides 256-bit security against forgery. AES-CMAC-128 provides
128-bit security. Replay attack prevention relies on proper sequence
number management. Implementations MUST ensure sequence number
uniqueness and detect replayed packets. Key compromise at any
intermediate node allows that node to forge valid authentication tags
for paths passing through it. This is an inherent limitation of
symmetric-key designs. For high-security deployments, keys SHOULD be
rotated frequently and distributed via secure channels.
6.1. Key Management Considerations
Keys SHOULD be rotated periodically. The key lifetime is a local
policy decision. Key distribution is outside the scope of this
document and MAY use mechanisms such as NETCONF/YANG, BGP-SR Policy.
All nodes on a given SRv6 path MUST be configured with the same
algorithm (AlgoID) to ensure interoperability.
Yang, et al. Expires 29 December 2026 [Page 8]
Internet-Draft SRv6 Path Verification June 2026
6.2. Replay Attack Prevention
The head node generates a monotonically increasing sequence number
for each packet within a flow. The sequence number space MUST be
large enough to prevent wraparound during the key lifetime. The tail
node maintains a replay window and rejects packets with duplicate
sequence numbers within the window. The sequence number verification
failures SHOULD trigger logging and MAY trigger rate-limited alerts
to the management plane.
7. IANA Considerations
7.1. SRv6 SID Verify TLV
A new SRv6 SID Verify TLV is requested from "Segment Routing Header
TLVs".
+=======+=====================+===============+
| Value | Description | Reference |
+=======+=====================+===============+
| TBD | SRv6 SID Verify TLV | This document |
+-------+---------------------+---------------+
Table 3: Code Point
7.2. SRv6 SID Verify Algorithm Registry
IANA is requested to create a new registry "SRv6 SID Verify
Algorithms" under the "Segment Routing" registry group.
Initial allocations:
+=======+================+===============+
| Value | Algorithm Name | Reference |
+=======+================+===============+
| TBD | HMAC-SHA256 | This document |
+-------+----------------+---------------+
| TBD | AES-CMAC-128 | This document |
+-------+----------------+---------------+
| TBD | Unassigned | |
+-------+----------------+---------------+
Table 4: Algorithm Registry
8. References
8.1. Normative References
Yang, et al. Expires 29 December 2026 [Page 9]
Internet-Draft SRv6 Path Verification June 2026
[RFC4493] Song, JH., Poovendran, R., Lee, J., and T. Iwata, "The
AES-CMAC Algorithm", RFC 4493, DOI 10.17487/RFC4493, June
2006, <https://www.rfc-editor.org/rfc/rfc4493>.
[RFC6234] Eastlake 3rd, D. and T. Hansen, "US Secure Hash Algorithms
(SHA and SHA-based HMAC and HKDF)", RFC 6234,
DOI 10.17487/RFC6234, May 2011,
<https://www.rfc-editor.org/rfc/rfc6234>.
[RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L.,
Decraene, B., Litkowski, S., and R. Shakir, "Segment
Routing Architecture", RFC 8402, DOI 10.17487/RFC8402,
July 2018, <https://www.rfc-editor.org/rfc/rfc8402>.
[RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J.,
Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header
(SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020,
<https://www.rfc-editor.org/rfc/rfc8754>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/rfc/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.
8.2. Informative References
[I-D.draft-ietf-spring-srv6-security]
Buraglio, N., Mizrahi, T., tongtian124, Contreras, L. M.,
and F. Gont, "Segment Routing IPv6 Security
Considerations", Work in Progress, Internet-Draft, draft-
ietf-spring-srv6-security-15, 24 June 2026,
<https://datatracker.ietf.org/doc/html/draft-ietf-spring-
srv6-security-15>.
Authors' Addresses
Feng Yang
China Mobile
China
Email: yangfeng@chinamobile.com
Yang, et al. Expires 29 December 2026 [Page 10]
Internet-Draft SRv6 Path Verification June 2026
Xiaoqiu Zhang
China Mobile
China
Email: zhangxiaoqiu@chinamobile.com
Changwang Lin
New H3C Technologies
China
Email: linchangwang.04414@h3c.com
Han Zhang
Tsinghua University
China
Email: zhhan@tsinghua.edu.cn
Yang, et al. Expires 29 December 2026 [Page 11]