Border Routing & Routing Security

Deploying RPKI Route Origin Validation:Shielding Enterprise Multi-Homed BGP from Route Leaks

Trusting unauthenticated BGP announcements leaves your corporate IP space defenseless.

Border Gateway Protocol was built on unverified trust. A misconfigured upstream transit provider or malicious actor can announce a more specific /24 route for your enterprise prefix and silently divert global traffic. Here is how to create ROAs via RIPE NCC and enforce RFC 6811 Route Origin Validation (ROV) on your edge routers.

Operating a multi-homed enterprise network with your own Autonomous System Number (ASN) and Provider-Independent (PI) IPv4/IPv6 address allocations delivers resilience across multiple Tier-1 transit providers. However, standard BGP path selection prioritizes the longest prefix match. If a third party erroneously or maliciously advertises a more-specific route (e.g. advertising a /24 out of your /22 supernet), global internet traffic will steer toward the rogue announcer.

Resource Public Key Infrastructure (RPKI) combined with Route Origin Validation (ROV) solves this systemic vulnerability by cryptographically binding an IP address block to an authorized Origin AS.

The Architecture: ROA Cryptography & RTR Protocol

RPKI implementation operates in two discrete planes:

RPKI Route Validation States & BGP Policy

When an eBGP border router receives an IP prefix advertisement from an upstream peer, it queries its local RTR cache and evaluates the route into one of three distinct RFC 6811 states:

RFC 6811 Route Origin Validation State Machine

Validation StateEvaluation CriteriaProduction Policy ActionSecurity Posture
Valid (RFC 6811)Prefix and Origin AS match an active, cryptographically signed ROAAccept and assign standard or elevated Local-Preference (e.g. 100/110)Exceptional
NotFound / UnknownNo ROA has been signed for the covered IP prefix by the address holderAccept with baseline Local-Preference (e.g. 100) to maintain global reachabilitySuitable
Invalid (AS Mismatch)ROA exists for prefix, but originates from an unauthorized Autonomous SystemDrop unconditionally at ingress (`reject` / Local-Pref 0)Not Recommended
Invalid (MaxLength Exceeded)Origin AS matches, but advertised prefix is longer than ROA MaxLength permitsDrop unconditionally (prevents unauthorized sub-prefix de-aggregation)Not Recommended

Production Router Implementation: Dropping Invalids

Validating routes without dropping invalids provides zero operational security. Border routers must be configured to unconditionally reject routes that fail cryptographic origin or prefix-length checks:

Cisco IOS-XE / Juniper Junos RPKI Drop ConfigurationRFC 6811
# --- Juniper Junos: Define RTR Session & Validation Policy ---
routing-options {
    validation {
        group ROUTINATOR-CLUSTER {
            session 10.0.100.1 { port 8282; }
            session 10.0.100.2 { port 8282; }
        }
    }
}

policy-options {
    policy-statement RPKI-IMPORT-FILTER {
        term REJECT-INVALID {
            from {
                protocol bgp;
                validation-database invalid;
            }
            then {
                syslog;
                reject; # Drop RPKI Invalids unconditionally
            }
        }
        term ACCEPT-VALID {
            from {
                protocol bgp;
                validation-database valid;
            }
            then {
                validation-state valid;
                next policy;
            }
        }
        term ACCEPT-UNKNOWN {
            from {
                protocol bgp;
                validation-database unknown;
            }
            then {
                validation-state unknown;
                next policy; # Permit un-signed space to avoid partitioning
            }
        }
    }
}
Interactive BGP Visualizer

Model BGP Route Propagation, Prefix Filtering & RTBH DDoS Triggers

Simulate /24 and /48 route boundary acceptance across Tier-1 carriers, AS-Path prepending, and RFC 7999 RTBH blackholing:

Enterprise Implementation Checklist

Deploying RPKI across an enterprise autonomous system requires executing three synchronized phases: