On 2015-04-28 15:21, Iljitsch van Beijnum wrote:
On 28 Apr 2015, at 20:27, Roque Gagliano (rogaglia)
<[email protected]> wrote:

It is not an implementation choice, it is by design. If a signed object does not validate (based on whatever reason not just expiration), it is like if did not existed.

No...

Suppose:

ROA: 193.0.0.0/21 up to /21 -> AS 3333 not valid after 20150430

In your example, is this the only ROA with a prefix that covers 193.0.0.0/21 or is covered by 193.0.0.0/21? Based on the states below, I'm assuming it is. Please correct me if I'm wrong.


BGP table 29 april:

193.0.0.0/21   3333 -> valid
193.0.0.0/21   4444 -> invalid
193.0.7.0/24   3333 -> invalid
192.0.0.0/16   5555 -> unknown

This part looks right to me.


But, two days later, after the ROA expires, do we have this:

193.0.0.0/21   3333 -> unknown
193.0.0.0/21   4444 -> unknown
193.0.7.0/24   3333 -> unknown
192.0.0.0/16   5555 -> unknown

or this:

193.0.0.0/21   3333 -> invalid
193.0.0.0/21   4444 -> invalid
193.0.7.0/24   3333 -> invalid
192.0.0.0/16   5555 -> unknown

?
[snip]
But the real issue is that this isn't written down anywhere as far as
I can tell, so we're dependent on implementers all independently
coming up with the preferred way to handle this. That's never good
business for a standards organization.

It's the first one (all unknowns). I don't think this is written down explicitly, but if implementations follow RFC6483, I don't think there's any way they can get the second result.

From RFC6483, Section 2:

   It is assumed here that a relying party (RP) has access to a local
cache of the complete set of valid ROAs when performing validation of
   a route.  (Valid ROAs are defined as ROAs that are determined to be
   syntactically correct and are signed using a signature that can be
verified using the RPKI, as described in [RFC6482].) The RP needs to
   match a route to one or more valid candidate ROAs in order to
   determine a validation outcome, which, in turn, can be used to
   determine the appropriate local actions to perform on the route.

This means that only valid (non-expired) ROAs are used for origin validation. Like Roque said, "if a signed object does not validate (based on whatever reason not just expiration), it is like if did not existed."

Then, in the next paragraph:

   However, routes
   for address prefixes that are not fully described by any single ROA
   (i.e., those routes whose address prefixes may be an aggregate of
   address prefixes described in a valid ROA, or have address prefixes
   where there is no intersection with any valid ROA), and are not
   matched by any valid ROA and do not have an address prefix that is a
   more specific address prefix described in any valid ROA, cannot be
   reliably classified as "invalid" in a partial deployment scenario.
   Such routes have a validation outcome of "unknown".

Since the {AS 3333, 193.0.0.0/21-21} ROA expired, there's no *valid* ROA that intersects any of {193.0.0.0/21, 193.0.0.0/21, 193.0.7.0/24, 192.0.0.0/16}. (See my assumption above about no other ROAs for these prefixes.) Since none of these four prefixes intersect any prefix in any valid ROA, all four routes you gave are unknown.

Based on the two snippets above, I do think it's clear enough for implementations to get it right. However, you asked a good question that other people will probably ask again. Do you think it would be helpful to make this case more explicit somewhere?

--
David Eric Mandelberg / dseomn
http://david.mandelberg.org/

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

Reply via email to