Network & delivery
7 min readUpdatedWhat is RPKI? ROAs and route origin validation explained
Quick answer
RPKI (Resource Public Key Infrastructure) lets the holder of an IP prefix publish a signed statement, called a ROA, naming the autonomous system allowed to originate that prefix in BGP and the longest prefix length it may announce. Networks that perform route origin validation compare every BGP route with these statements and mark it valid, invalid or not found. Invalid routes are increasingly dropped, so a missing or wrong ROA can make your own announcement unreachable.
01What is RPKI?
RPKI is a certificate system for internet number resources. RFC 6480 describes the architecture: the regional internet registries issue certificates that bind IP prefixes and AS numbers to the organisations holding them, and holders use those certificates to sign statements about how their resources may be routed.
The statement that matters most is the ROA. Networks fetch and verify every published ROA with relying-party software such as Routinator, rpki-client or FORT, and pass the result to their routers, usually over the RPKI-to-Router protocol (RFC 8210). Routers then check each BGP announcement against it. That check is route origin validation, or ROV.
RPKI answers one question: is this AS allowed to originate this prefix? It does not verify the rest of the AS path, which matters for the limits discussed below.
02What is a ROA?
A Route Origin Authorization (ROA), profiled in RFC 9582, is a signed object that names one origin ASN and one or more prefixes it may announce, each with an optional maximum length. The maximum length, or maxLength, is the longest prefix the AS may announce inside the ROA's prefix; without it, only the exact prefix is authorised.
- Prefix: the address block, for example 193.0.0.0/21
- Origin ASN: the AS allowed to originate it under this ROA, for example AS3333
- maxLength: the most specific announcement allowed; /21 here means no more-specifics
- Several ROAs can cover the same space, for example one for your own ASN and one for a DDoS mitigation provider
- A ROA for AS 0 states that the space should not be routed at all (RFC 6483), useful for unused blocks
03Valid, invalid, not found: how origin validation works
RFC 6811 defines the states. A ROA covers a route if the route's prefix is the ROA prefix or a more specific part of it. It matches if it covers the route, the route is no longer than maxLength, and the origin ASN is the one in the ROA. Valid means at least one ROA matches; invalid means at least one ROA covers the route but none matches; not found means no ROA covers it at all.
Every row below was checked against RIPEstat's validator, using the RIPE NCC's real ROA for its own address block; RIPEstat reports not found as unknown.
| Announcement | Against ROA 193.0.0.0/21, maxLength /21, AS3333 | State |
|---|---|---|
| 193.0.0.0/21 from AS3333 | Covered and matched | Valid |
| 193.0.0.0/22 from AS3333 | Covered, but longer than maxLength | Invalid (length) |
| 193.0.0.0/21 from AS64496 | Covered, wrong origin | Invalid (origin) |
| 192.0.2.0/24 from AS64496 | No ROA covers it | Not found |
04Why does an RPKI-invalid prefix lose reachability?
Because a growing number of networks drop invalid routes rather than just marking them. When a large transit provider rejects your announcement, every network behind it loses the route too, and the only remaining paths run through networks that do not validate. The result is partial, hard-to-diagnose unreachability: some users reach you and others time out.
Coverage has grown quickly. The NIST RPKI Monitor, which validates the unique prefix-origin pairs seen by the RouteViews collectors, reported for 23 October 2026 that 71.0% of IPv4 pairs were valid, 27.5% not found and 1.5% invalid; on 23 October 2024 the valid share was 53.5%. Measured by address space instead, 63.3% of announced IPv4 space was covered by valid announcements.
The 1.1.1.1 incident of 27 June 2024 shows both sides. AS267613 announced 1.1.1.1/32; Cloudflare's ROA allowed nothing longer than /24, so the route was invalid and networks performing ROV ignored it, while networks that did not validate accepted it. The same mechanism will drop your legitimate announcement if your ROA is wrong.
05How do I create a ROA?
ROAs are created where your address space is registered. Most holders use their regional registry's hosted RPKI service, which keeps the keys and signs on their behalf; some large networks run a delegated certificate authority instead.
- List every announcement first: prefix, origin ASN and where it is announced, including more-specifics used for traffic engineering or DDoS mitigation
- RIPE NCC: the RPKI dashboard can create ROAs from announcements it already sees and previews which routes a change would make invalid
- ARIN: hosted RPKI in ARIN Online needs a registration services agreement (RSA or LRSA) covering the resources
- APNIC, LACNIC and AFRINIC also operate RPKI services; look in your registry's member portal
- Set maxLength equal to the prefix length unless you really announce every more-specific; RFC 9319 recommends avoiding maxLength
- Verify the result with a validator, then enable your registry's alerts for invalid or not-found announcements
06ROAs for DDoS protection and bring-your-own-IP
Routing-based DDoS protection works by having the protection network announce your prefix, or a more specific part of it, so that attack traffic arrives there to be filtered; clean traffic is then delivered to you, usually through a GRE tunnel, as compared in GRE vs IPIP. If the provider originates the route from its own ASN while your ROAs name only your own ASN, the announcement is invalid and validating networks will not use it, exactly when you need it most.
RFC 9319 covers this case directly. Its example gives the customer a ROA for its own ASN and a second ROA authorising the mitigation provider's ASN for the protected block, created well in advance because RPKI data reaches routers more slowly than BGP updates. It also states the cost: while the protected block is not announced, its addresses are open to forged-origin sub-prefix hijacks, and if that second ROA uses maxLength to allow any /24 inside a /22, every /24 not under mitigation is exposed as well.
That risk is not theoretical. In August 2026 a /24 inside a /16 was hijacked with a forged origin, and because the holder's ROA allowed any length from /16 to /24 the hijack was RPKI-valid; the details are in what BGP hijacking is. For how routed protection fits into the bigger picture, see what DDoS mitigation is.
prefix 192.168.0.0/16 origin AS64496 maxLength 16 # your normal announcement
prefix 192.168.0.0/22 origin AS64500 maxLength 22 # provider, during mitigation
# looser variant discussed in the same RFC, with its stated risk:
prefix 192.168.0.0/22 origin AS64500 maxLength 24 # any /24 can be diverted, but
# unannounced /24s become hijackable07What RPKI does not protect against
Origin validation stops the most common accident, someone announcing space that is not theirs, and many sub-prefix hijacks. It leaves gaps, which is why it is one layer among several alongside filtering and monitoring.
| Threat | Stopped by ROV? | What helps |
|---|---|---|
| Wrong origin AS for your prefix | Yes, if a ROA exists | ROAs for all announced space |
| More-specific hijack from another AS | Yes, if maxLength is tight | No loose maxLength |
| Forged origin: the attacker puts your ASN last in the path | No, the route looks valid | ASPA path checks (still an IETF draft in October 2026), monitoring |
| Route leak with the correct origin | No | BGP roles (RFC 9234), customer prefix filters, max-prefix limits |
| Someone announcing your unused space | Only if a ROA covers it | AS0 ROAs for unrouted blocks |
08How to check a prefix's RPKI status
RIPEstat exposes a validator through its public API. Pass the origin ASN and the prefix; the data.status field returns valid, invalid_asn, invalid_length or unknown. To find out whether your own ISP drops invalid routes, Cloudflare's isbgpsafeyet.com deliberately announces an invalid route and tests whether your browser can still reach it.
curl -s 'https://stat.ripe.net/data/rpki-validation/data.json?resource=AS3333&prefix=193.0.0.0/21'
# data.status: "valid"
curl -s 'https://stat.ripe.net/data/rpki-validation/data.json?resource=AS3333&prefix=193.0.0.0/22'
# data.status: "invalid_length"
curl -s 'https://stat.ripe.net/data/rpki-validation/data.json?resource=AS64496&prefix=193.0.0.0/21'
# data.status: "invalid_asn"Questions
Frequently asked questions
Sources
Sources and verification
RIPEstat rpki-validation queries run with curl 7.88.1 on Debian 12, October 2026; adoption figures read from the NIST RPKI Monitor snapshot of 23 October 2026.
- 01RFC 6480: An Infrastructure to Support Secure Internet Routing · RFC Editor
- 02RFC 6811: BGP Prefix Origin Validation · RFC Editor
- 03RFC 9582: A Profile for Route Origin Authorizations (ROAs) · RFC Editor
- 04RFC 9319: The Use of maxLength in the RPKI · RFC Editor
- 05RFC 6483: Validation of Route Origination Using the RPKI and ROAs (AS 0 ROAs) · RFC Editor
- 06RFC 8210: The RPKI to Router Protocol, Version 1 · RFC Editor
- 07NIST RPKI Monitor: RPKI-ROV analysis of unique prefix-origin pairs · NIST
- 08Managing ROAs · RIPE NCC
- 09Resource Public Key Infrastructure (RPKI): requirements for certifying resources · ARIN
- 10Cloudflare 1.1.1.1 incident on June 27, 2024 · Cloudflare blog
- 11Latest BGP hijack targets hosting software vendor · APNIC Blog
- 12BGP AS_PATH Verification Based on ASPA Objects (Internet-Draft) · IETF
- 13Is BGP safe yet? · Cloudflare
- 14RIPEstat Data API: rpki-validation · RIPE NCC
Last updated