Overloading RTR to load IRR (Was: Defines for mixed IPv6/IPv4)

Maria Matejka maria.matejka at nic.cz
Thu Jan 25 18:11:48 CET 2024


On 2024-01-25 17:08, Alexander Zubkov wrote:
> But I think the problem with no filters is bigger when the RTR server 
> is out. It is not just the short period of time when the peer can 
> announce anything. If rpki autoreload is on it will cause all bad 
> announces that was rejected before to pass the filter now. And if we 
> turn rpki autoreload off, it might work like a classical filter, but 
> than we cannot do additional actual origin validation using rpki.
>
> On Thu, Jan 25, 2024, 14:41 Alexander Zubkov <green at qrator.net> wrote:
>
>     AFAIK in RPKI AS0 means implicit invalid.
>
>     On Thu, Jan 25, 2024, 14:31 Maria Matejka via Bird-users
>     <bird-users at network.cz> wrote:
>
>         On 2024-01-25 11:55, Erin Shepherd wrote:
>>         Spitballing slightly here, but could you avoid this problem
>>         by adding 0.0.0.0/0+ <http://0.0.0.0/0+> ::0/0+ AS0 RoAs to
>>         the table and accepting ROA Unknowns?
>>
>>         Obviously the disadvantage here is that if your IRR RTR
>>         server goes down you're basically unfiltered, but it at least
>>         avoids the availability problem
>
>         With this, you can just go like
>
>             if roa_check(irr, ::/0, 0) = ROA_VALID && roa_check(irr,
>         net, peerasn) != ROA_VALID then reject;
>
>         which should do the work, iirc.
>
I may have not written it completely. I would add the "::/0+ as 0", or 
"::/0+ as 65535" if AS0 is too shady, to the IRR RTR feed itself, not as 
a static record.

This way, if the RTR feed fails, the first roa_check fails and the 
second one is not performed at all, therefore nothing is rejected. OTOH, 
if the RTR feed works, the first roa_check is always true and the second 
one matters.

Do I miss something?

Maria




>>
>>         - Erin
>>
>>         On Thu, 25 Jan 2024, at 11:41, Job Snijders via Bird-users wrote:
>>>         On Thu, Jan 25, 2024 at 11:13:51AM +0100, Jeroen Massar via
>>>         Bird-users wrote:
>>>         > a quick stab at generating the slurm file:
>>>
>>>         why use SLURM though? SLURM doesn't have a 'maxLength' field
>>>         like the
>>>         regular JSON input formatted in this style has:
>>>         https://console.rpki-client.org/rpki.json - which might help
>>>         with
>>>         aggregation.
>>>
>>>         More importantly, a risk I perceive with overloading RTR
>>>         functionality
>>>         to load IRR data into routers is in the realm of fail-safes:
>>>
>>>         For RPKI-derived data, most ISPs do something along the
>>>         lines of:
>>>
>>>            if (roa_check(rpki, net, bgp_path.last) = ROA_INVALID)
>>>         then reject;
>>>
>>>         For IRR-derived data, you'd have to do:
>>>
>>>            if (roa_check(irr, net, peerasn) != ROA_VALID) then reject;
>>>
>>>         The above means that suddenly your EBGP routers/route
>>>         servers have a
>>>         very hard dependency on the IRR RTR session being up in
>>>         order to accept
>>>         routes (fail closed), whereas how the RPKI-derived data is
>>>         used is in a
>>>         'fail open' fashion.
>>>
>>>         The above friction goes back to RPKI ROAs being defined as
>>>         "if ROAs
>>>         exist, all BGP routes that do not match any of the ROAs are
>>>         invalid"
>>>         (following the RFC 6811 algorithm), but for IRR route/route6
>>>         objects
>>>         such a definition was never established, those predate the
>>>         RFC 6811
>>>         algorithm.
>>>
>>>         Kind regards,
>>>
>>>         Job
>>>
>         -- 
>         Maria Matejka (she/her) | BIRD Team Leader | CZ.NIC, z.s.p.o.
>
-- 
Maria Matejka (she/her) | BIRD Team Leader | CZ.NIC, z.s.p.o.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20240125/f3861bff/attachment.htm>


More information about the Bird-users mailing list