Internet-Draft ROV_TAG February 2026
Ling, et al. Expires 10 August 2026 [Page]
Workgroup:
SIDROPS
Internet-Draft:
draft-ling-sidrops-rov-tag-profile-00
Published:
Intended Status:
Standards Track
Expires:
Authors:
S. Ling
Zhongguancun Lab
K. Xu
Tsinghua University
Q. Li
Tsinghua University
Z. Liu
Tsinghua University
X. Wang
Capital Normal University

A Profile for ROV Deployment Transparency

Abstract

This document defines a Cryptographic Message Syntax (CMS) protected content type for ROV Deployment Transparency (ROV_TAG) objects for use with the Resource Public Key Infrastructure (RPKI). An ROV_TAG is a digitally signed object through which an Autonomous System (AS) that has deployed Route Origin Validation (ROV) can declare its ROV deployment status. When validated, an ROV_TAG's eContent can be used by ASes to identify which ASes have deployed ROV, enabling secure path selection and optimized ROV validation that reduces redundant validation operations in partial ROV deployment scenarios.

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 10 August 2026.

Table of Contents

1. Introduction

Route Origin Validation (ROV) [RFC6811] is a critical security mechanism for BGP routing that uses the Resource Public Key Infrastructure (RPKI) to verify the legitimacy of route announcements. However, ROV deployment is currently partial, with a significant portion of ASes not yet having deployed ROV.

In partial ROV deployment scenarios, two problems arise:

  1. Security vulnerabilities: Even if an AS has deployed ROV and filters invalid route announcements, the AS may still have its traffic hijacked if upstream ASes have not deployed ROV. This occurs because upstream ASes that have not deployed ROV may accept and propagate hijacked routes, allowing attackers to redirect traffic through upstream paths where ROV has not been deployed.

  2. Validation redundancy: Each AS independently re-validates ROV and is unable to leverage previous validation results.

This document defines a profile for ROV Deployment Transparency (ROV_TAG) objects that allows ASes to register their ROV deployment status in RPKI. This provides transparency about which ASes have deployed ROV, enabling secure path selection and optimized ROV validation that reduces redundant validation operations. See Section 3 for detailed use cases.

This CMS [RFC5652] protected content type definition conforms to the [RFC6488] template for RPKI signed objects. In accordance with Section 4 of [RFC6488], this document defines:

  1. The object identifier (OID) that identifies the ROV_TAG signed object. This OID appears in the eContentType field of the encapContentInfo object as well as the content-type signed attribute within the signerInfo structure.

  2. The ASN.1 syntax for the ROV_TAG content, which is the payload signed by the AS. The ROV_TAG content is encoded using the ASN.1 [X.680] Distinguished Encoding Rules (DER) [X.690].

  3. The steps required to validate an ROV_TAG beyond the validation steps specified in [RFC6488].

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.

1.2. Terminology

This document uses the following terminology:

  • Origin AS: The Autonomous System (AS) that originates a BGP route announcement. The Origin AS is defined as the last AS in the AS_PATH attribute of the BGP route announcement, as specified in [RFC4271].

  • Non-origin AS: Any AS in the AS_PATH of a BGP route announcement that is not the Origin AS. In an AS_PATH containing multiple ASes, all ASes except the last one (the Origin AS) are non-origin ASes.

2. The ROV_TAG

2.1. The ROV_TAG Content Type

The content-type for an ROV_TAG is defined as id-ct-ROVTAG, which has the numerical value of 1.2.840.113549.1.9.16.1.TBD. This OID MUST appear both within the eContentType in the encapContentInfo structure as well as the content-type signed attribute within the signerInfo structure (see [RFC6488]).

2.2. The ROV_TAG eContent

The content of an ROV_TAG identifies the AS that has deployed ROV.

The eContent of an ROV_TAG is an instance of ROVDeploymentAttestation, formally defined by the following ASN.1 module:

``` RPKI-ROV-TAG-2026 { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-rpki-rov-tag-2026(TBD) }

DEFINITIONS EXPLICIT TAGS ::= BEGIN

IMPORTS CONTENT-TYPE FROM CryptographicMessageSyntax-2010 -- RFC 6268 { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) } ;

id-ct-ROVTAG OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) id-smime(16) id-ct(1) rovtag(TBD) }

ct-ROVTAG CONTENT-TYPE ::= { TYPE ROVDeploymentAttestation IDENTIFIED BY id-ct-ROVTAG }

ROVDeploymentAttestation ::= SEQUENCE { version [0] INTEGER DEFAULT 0, asID ASID, rovDeployed BOOLEAN }

ASID ::= INTEGER (0..4294967295)

END ```

Note that this content appears as the eContent within the encapContentInfo as specified in [RFC6488].

2.3. version

The version number of the ROVDeploymentAttestation that complies with this specification MUST be 0 and MUST be explicitly encoded.

2.4. asID

The asID field contains the AS number of the Autonomous System that is declaring its ROV deployment status.

2.5. rovDeployed

The rovDeployed field is a BOOLEAN that indicates whether the AS has deployed ROV. Since only ASes that have deployed ROV register ROV_TAG objects, this field MUST be set to TRUE.

For ASes that provide transit services (i.e., ASes that forward traffic for other ASes) that have deployed ROV, it is RECOMMENDED that they register an ROV_TAG object with rovDeployed set to TRUE. Stub ASes (end networks, content providers, etc. that do not provide transit services) MAY register ROV_TAG objects but are not required to do so.

2.6. ROV_TAG Validation

To validate an ROV_TAG, a relying party MUST perform all the validation checks specified in [RFC6488] as well as the following additional ROV_TAG-specific validation steps:

  • The Autonomous System Identifier Delegation Extension [RFC3779] MUST be present in the end-entity (EE) certificate contained within the ROV_TAG. The asID in the ROV_TAG eContent MUST match the ASId specified by the EE certificate's Autonomous System Identifier Delegation Extension.

  • The Autonomous System Identifier Delegation Extension MUST contain exactly one "id" element (Section 3.2.3.6 of [RFC3779]) and MUST NOT contain any "inherit" elements (Section 3.2.3.3 of [RFC3779]) or "range" elements (Section 3.2.3.7 of [RFC3779]).

  • The IP Address Delegation Extension [RFC3779] MUST be absent.

  • The rovDeployed field MUST be present and MUST be set to TRUE. Since only ASes that have deployed ROV register ROV_TAG objects, this field MUST always be TRUE.

If any of the above checks fail, the ROV_TAG in its entirety MUST be considered invalid and an error SHOULD be logged.

3. Use Cases

3.1. Secure Path Selection

In partial ROV deployment scenarios, when an AS filters a hijacked route announcement received from an upstream AS through ROV validation, this indicates that the upstream AS has accepted and propagated the hijacked route. This may occur because the upstream AS has not deployed ROV or is not properly performing ROV validation. In this situation, the AS SHOULD avoid using paths through that upstream AS for traffic destined to the affected prefix.

To implement this defensive measure, an AS can use ROV_TAG information obtained from its RPKI Relying Party (RP) to identify alternative paths from the BGP route announcements it has already received. An alternative path is one where the immediate upstream AS has deployed ROV (i.e., has registered an ROV_TAG object with rovDeployed set to TRUE). The AS checks the ROV deployment status of upstream ASes in the AS_PATH of received route announcements against the ROV_TAG information. If such alternative paths exist, the AS MAY prefer them over the path through the upstream AS that propagated the hijacked route.

This approach is based on the following reasoning:

  • If an upstream AS has deployed ROV, it will filter invalid route announcements and will not propagate hijacked routes.

  • If an upstream AS has deployed ROV, it may also implement secure path selection (i.e., avoid paths through upstream ASes that have propagated hijacked route announcements when it detects such announcements). This creates a mechanism where ASes can prefer paths through upstream ASes that have deployed ROV. The logic is straightforward: if an AS detects that an upstream AS has propagated a hijacked route announcement (by filtering it through ROV validation), it SHOULD select an alternative secure path. Conversely, if no hijacked route announcements are detected from an upstream AS, that upstream AS is considered secure, and there is no need to select an alternative path.

  • Therefore, if an alternative path exists where the immediate upstream AS has deployed ROV, that path is more likely to be secure from that point forward, reducing the risk that traffic will be hijacked.

The decision to use alternative paths is a matter of local policy. An AS MAY:

  • Continue using normal BGP path selection when no hijacked route announcements are detected.

  • When an AS filters a hijacked route announcement received from an upstream AS, consider alternative paths (where the immediate upstream AS has deployed ROV) as a defensive measure to avoid the path through the upstream AS that propagated the hijacked route.

  • Fall back to normal BGP path selection if no alternative paths with ROV-deployed upstream ASes are available.

This addresses the security vulnerability problem by enabling ASes to avoid paths through upstream ASes that have propagated hijacked routes. Such paths are identified through ROV validation. When alternative secure paths are available, this reduces the risk of route hijacking even in partial ROV deployment scenarios.

Note: This is a heuristic defensive mechanism and does not provide cryptographic security guarantees. The use of alternative paths is OPTIONAL and subject to local policy.

3.2. Optimized ROV Validation

When an AS receives a BGP route announcement, it can use ROV_TAG information obtained from its RPKI Relying Party (RP) to optimize ROV validation and reduce redundant validation operations. The AS checks the AS_PATH of the received route announcement against the ROV_TAG information to determine whether any non-origin ASes in the path have deployed ROV (i.e., have registered an ROV_TAG object with rovDeployed set to TRUE).

For AS_PATH parsing, the AS MUST check all ASes in the AS_PATH, including ASes that appear multiple times due to AS_PATH prepending. If the AS_PATH contains AS_SET or AS_CONFED_SET segments (as defined in [RFC9774]), the AS MAY check ASes within these segments for compatibility, though these segment types are deprecated.

The validation rule is as follows:

  • If the AS_PATH contains only the Origin AS (i.e., the route is received directly from the origin), the AS MUST perform ROV validation.

  • If the AS_PATH contains multiple ASes, the AS checks whether any non-origin AS in the AS_PATH has deployed ROV by querying the ROV_TAG information. If any non-origin AS in the AS_PATH has deployed ROV, the AS SHOULD skip ROV validation, assuming that at least one upstream AS that has deployed ROV has already performed validation. This assumption is based on the ROV_TAG information indicating ROV deployment, but does not guarantee that validation was actually performed. If no non-origin AS in the AS_PATH has deployed ROV, the AS MUST perform ROV validation.

  • If ROV_TAG information is unavailable (e.g., due to repository synchronization issues or the AS not supporting ROV_TAG), the AS MUST perform ROV validation.

  • If an implementer chooses not to skip validation even when a non-origin AS in the AS_PATH has deployed ROV, the AS MUST still perform ROV validation.

This addresses the validation redundancy problem by reducing redundant ROV validation operations. The logic is straightforward: if any non-origin AS in the AS_PATH has deployed ROV (as indicated by ROV_TAG information), it is assumed that validation has been performed, and downstream ASes can skip redundant validation. This ensures that at least one AS in the path performs ROV validation, maintaining security while reducing redundancy.

Note: This optimization is OPTIONAL. ASes that do not implement this optimization will continue to perform ROV validation for all received route announcements, maintaining the same security properties as traditional ROV deployment.

4. Operational Considerations

This section discusses operational aspects of ROV_TAG deployment and usage.

4.1. Querying ROV_TAG Information

ROV_TAG objects are stored in the RPKI repository alongside other RPKI objects (e.g., ROAs, ASPAs). Relying Parties (RPs) process ROV_TAG objects as part of their standard RPKI repository synchronization and validation procedures, as specified in [RFC6488].

ASes obtain ROV_TAG information from their RPKI Relying Party (RP) (e.g., through RPKI-to-Router protocols such as [RFC6810] or [RFC8210]). ASes can query this information efficiently to determine whether upstream ASes have deployed ROV. Real-time queries to the RPKI repository or RP are not required during BGP path selection.

4.2. Performance Considerations

The number of ASes that provide transit services is relatively small compared to the total number of ASes, which means the total number of ROV_TAG objects is expected to be manageable. This results in minimal storage and query overhead compared to other RPKI objects such as ROAs.

Query operations for ROV_TAG information can be performed efficiently using standard data structures (e.g., hash tables keyed by AS number), enabling fast lookups during BGP path selection.

4.3. Deployment Recommendations

For ASes that provide transit services and have deployed ROV, it is RECOMMENDED that they register an ROV_TAG object with rovDeployed set to TRUE. This provides transparency about ROV deployment. It also enables downstream ASes to make informed path selection decisions and enables optimized ROV validation that reduces redundant validation operations.

Stub ASes (end networks, content providers, etc.) MAY register ROV_TAG objects but are not required to do so. This is because they typically do not provide transit services, and their ROV deployment status is less critical for path selection decisions.

5. Implementation Considerations

This section provides guidance for implementers of ROV_TAG support.

ROV_TAG is a new RPKI object type. Existing RPKI RP implementations that do not support ROV_TAG will simply ignore ROV_TAG objects during repository synchronization, as per the RPKI validation rules specified in [RFC6488]. This ensures backward compatibility: ROV_TAG objects do not interfere with existing RPKI operations, and ASes that have not deployed ROV_TAG support can continue to operate normally.

RP implementations that support ROV_TAG SHOULD:

The number of ROV_TAG objects is expected to be relatively small compared to other RPKI objects such as ROAs. This is because only ASes that provide transit services are expected to register ROV_TAG objects.

Implementers that choose to implement the optimized ROV validation described in Section 3.2 SHOULD:

6. Security Considerations

The security considerations of [RFC6481], [RFC6485], and [RFC6488] also apply to ROV_TAG objects.

There is no assumption of confidentiality for the data in an ROV_TAG; it is anticipated that ROV_TAG objects will be stored in repositories that are accessible to all ISPs, and perhaps to all Internet users. The purpose of an ROV_TAG is to convey transparency about ROV deployment status. Thus, the integrity of an ROV_TAG MUST be established. ROV_TAG objects are cryptographically signed and validated according to [RFC6488], ensuring that the ROV deployment status information cannot be tampered with by intermediate ASes.

The secure path selection mechanism described in Section 3.1 is a heuristic approach and does not provide cryptographic security guarantees. The actual security properties depend on the operational practices of upstream ASes.

Regarding the optimized ROV validation use case (Section 3.2), implementers and operators are advised to be aware of the following security considerations:

The optimized ROV validation is OPTIONAL and SHOULD only be implemented after careful risk assessment. ASes that do not implement this optimization will continue to perform ROV validation for all received route announcements, maintaining the same security properties as traditional ROV deployment.

7. IANA Considerations

This document will require IANA to assign values in several registries. The specific assignments will be determined during the IETF review process. The following registrations are anticipated:

8. References

8.1. Normative References

[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC3779]
Lynn, C., Kent, S., and K. Seo, "X.509 Extensions for IP Addresses and AS Identifiers", RFC 3779, DOI 10.17487/RFC3779, , <https://www.rfc-editor.org/rfc/rfc3779>.
[RFC4271]
Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A Border Gateway Protocol 4 (BGP-4)", RFC 4271, DOI 10.17487/RFC4271, , <https://www.rfc-editor.org/rfc/rfc4271>.
[RFC5652]
Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, RFC 5652, DOI 10.17487/RFC5652, , <https://www.rfc-editor.org/rfc/rfc5652>.
[RFC6481]
Huston, G., Loomans, R., and G. Michaelson, "A Profile for Resource Certificate Repository Structure", RFC 6481, DOI 10.17487/RFC6481, , <https://www.rfc-editor.org/rfc/rfc6481>.
[RFC6485]
Huston, G., "The Profile for Algorithms and Key Sizes for Use in the Resource Public Key Infrastructure (RPKI)", RFC 6485, DOI 10.17487/RFC6485, , <https://www.rfc-editor.org/rfc/rfc6485>.
[RFC6488]
Lepinski, M., Chi, A., and S. Kent, "Signed Object Template for the Resource Public Key Infrastructure (RPKI)", RFC 6488, DOI 10.17487/RFC6488, , <https://www.rfc-editor.org/rfc/rfc6488>.
[RFC6810]
Bush, R. and R. Austein, "The Resource Public Key Infrastructure (RPKI) to Router Protocol", RFC 6810, DOI 10.17487/RFC6810, , <https://www.rfc-editor.org/rfc/rfc6810>.
[RFC6811]
Mohapatra, P., Scudder, J., Ward, D., Bush, R., and R. Austein, "BGP Prefix Origin Validation", RFC 6811, DOI 10.17487/RFC6811, , <https://www.rfc-editor.org/rfc/rfc6811>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/rfc/rfc8174>.
[RFC8210]
Bush, R. and R. Austein, "The Resource Public Key Infrastructure (RPKI) to Router Protocol, Version 1", RFC 8210, DOI 10.17487/RFC8210, , <https://www.rfc-editor.org/rfc/rfc8210>.
[RFC9774]
Kumari, W., Sriram, K., Hannachi, L., and J. Haas, "Deprecation of AS_SET and AS_CONFED_SET in BGP", RFC 9774, DOI 10.17487/RFC9774, , <https://www.rfc-editor.org/rfc/rfc9774>.
[X.680]
ITU-T, "Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation", name ITU-T Recommendation, value X.680, , <https://www.itu.int/rec/T-REC-X.680>.
[X.690]
ITU-T, "Information Technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)", name ITU-T Recommendation, value X.690, , <https://www.itu.int/rec/T-REC-X.690>.

8.2. Informative References

[RFC6268]
Schaad, J. and S. Turner, "Additional New ASN.1 Modules for the Cryptographic Message Syntax (CMS) and the Public Key Infrastructure Using X.509 (PKIX)", RFC 6268, DOI 10.17487/RFC6268, , <https://www.rfc-editor.org/rfc/rfc6268>.

Appendix A. Example ROV_TAG eContent Payload

Below is an example of a DER-encoded ROV_TAG eContent with annotation following the '#' character.

Example: Transit AS with ROV deployed

$ echo 30080201000203000D050201FF | xxd -r -ps | openssl asn1parse \ -inform DER -dump -i 0:d=0 hl=2 l= 8 cons: SEQUENCE 2:d=1 hl=2 l= 1 prim: INTEGER :00 # version = 0 5:d=1 hl=2 l= 3 prim: INTEGER :0D05 # asID = 3333 10:d=1 hl=2 l= 1 prim: BOOLEAN :FF # rovDeployed = TRUE

Authors' Addresses

Sitong Ling
Zhongguancun Lab
Beijing
China
Ke Xu
Tsinghua University
Beijing
China
Qi Li
Tsinghua University
Beijing
China
Zhuotao Liu
Tsinghua University
Beijing
China
Xiaoliang Wang
Capital Normal University
Beijing
China