Route Origin Validation
Validators reduce the whole RPKI to a list of Validated ROA Payloads (VRPs): tuples of (prefix, maxLength, origin AS). Your routers compare every BGP route against that list. Route Origin Validation (RFC 6811) gives each route one of three states:
| State | Condition |
|---|---|
| Valid | At least one VRP covers the prefix, its ASN equals the route's origin AS, and the route's prefix length ≤ the VRP's maxLength |
| Invalid | At least one VRP covers the prefix, but none of them match (wrong origin, or too specific) |
| NotFound | No VRP covers the prefix at all |
A VRP covers a route if the route's prefix is equal to or inside the VRP prefix. The origin AS is the last AS in the AS_PATH. If the path ends in an AS_SET (from old-style aggregation), there is no single origin, so it can never match.
The three states are deliberately asymmetric. NotFound means "no information", which is still most of the old internet, and must be accepted. Only Invalid is evidence that something is wrong.
Try the cases from the lab below, then edit the VRPs. Add a second VRP for the same prefix from a different AS, set maxLength to 25, or create an AS0 VRP.
Interactive: ROV calculator The VRPs and routes from the lab. Pick a scenario or type your own prefix and AS_PATH. Try a path ending in an AS_SET such as "64497 {64501 64502}". (needs JavaScript)
Check your understanding
VRPs: 192.0.2.0/24-24 AS64502, and 192.0.2.0/23-24 AS64503. A route arrives for 192.0.2.0/24 with AS_PATH "64497 64503". What state is it?
- Invalid, because the /24 VRP says AS64502
- Valid, because the /23-24 VRP covers it with origin AS64503 and length 24 ≤ 24
- NotFound, because there's no exact /24 VRP for AS64503
- Invalid, because two VRPs disagree