Folks,

In response to the discussion on the list, and at the meeting, I want to suggest a new format for ROAs, which addresses some of the issues that have been discussed.

First, I note that the original format reused much of the RFC 3779 format for representing address space. However, on further reflection, we should probably use a smaller subset of that format, just the part that represents address prefixes, not address ranges. I say that because we will be using the content of a ROA to generate route filters or in a similar fashion, and BGP advertises only prefixes, not the arbitrary ranges that 3779 can express. Making a change just to accommodate prefixes (vs. ranges) we get some simplification of the format:

      RouteOriginAttestation ::= SEQUENCE {
        version [0] INTEGER DEFAULT 0,
        asID   ASID,
        ipAddrBlocks ROAIPAddrBlocks }

      ASID ::= INTEGER
ROAIPAddrBlocks ::= SEQUENCE of ROAIPAddressFamily ROAIPAddressFamily ::= SEQUENCE {
        addressFamily OCTET STRING (SIZE (2..3)),
        addresses SEQUENCE OF IPAddress }
      -- Only two address families are allowed: IPv4 and IPv6
IPAddress ::= BIT STRING

Note that this is just a subset of the 3779 ASN.1, so it retains the advantage of reusing that syntax, and that should make comparison against the cert used to verify a ROA easier than if we adopt a different syntax. It allows multiple prefixes to be associated with one AS in each ROA.

Additionally, there were suggestions about what controls we should make available to a ROA signer, to express the semantics of the ROA. The simplest one, other than my ill-conceived exact match suggestion, was a proposal by Geoff for a flag to say exact match vs. inclusion. There was also a suggestion from Curtis to allow for a mask length range, e.g., prefix/len1 [-len2]. Larry enumerated 4 prefix range operators taken from RPSL, which support even more expressiveness.

It is important to note that the ASCII syntax used in the latter two suggestions above is not directly compatible with the ASN.1 used in 3779. That prefix syntax is binary, and RFC 3779 has defined a canonical representation for it already (something we do for most digitally signed objects). So we would need to employ a different encoding to represent any of these more sophisticated prefix expression options, if we still want to keep the syntax in the ROA easy to match against the 3779 extension in the cert.

Another observation is that an address space holder can generate multiple ROAs to express constraints that might not be expressible via a single ROA if we adopt less expressive prefix range controls. Of course we have to balance complexity of such controls against the repository bloat that could arise if one had to generate lots of ROAs.

So, I'd like to ask the WG what level of expressiveness do we believe is required in ROAs? For example, what has the experience been using the RPSL range operators, e.g., do we see IRR entries that use all four of the ones Larry cited, or do most entries use only a subset, and if so, which subset? Can we get by with just a flag indicating whether a ROA confers authorization to advertise exactly the prefix contained in it, or the prefix and all more specifics?

Since the RIRs and others are already developing code to deal with ROAs, it is important that we make progress on selecting format sooner, rather than later :-) .

Steve


_______________________________________________
Sidr mailing list
[email protected]
https://www1.ietf.org/mailman/listinfo/sidr

Reply via email to