Hello Maria!

Thank you for taking the time to read my email.

Yes, "I have no providers" is a much more accurate description of AS 0.  It can be used by tier 1 networks as well as people trying to depreciate their old ASN.  It looks like the source of my confusion was that I was under the assumption that the transit ASPA entries could be used to auto-detect upstream vs downstream as opposed to doing the check in the filter script.  Sorry about that!

Thank you for fixing the problem with the static ASPA changes!!

I noticed in aspa_check() you check for confeds but AS_PATH_SET is never checked for.

The specs say they should return ASPA_INVALID however I noticed when I did that I lost about 64 routes which caused some customer complaints.  I had to end up slightly changing the code to return ASPA_INVALID if upstream and ASPA_UNKNOWN if downstream.

Thank you!

Ralph

On 12/26/2024 6:04 AM, Maria Matejka via Bird-users wrote:

Hello Ralph,

    Issue #1)  There is no way to tell the difference between a
    transit entry and an “AS0” entry.

There is no difference between a transit entry and an AS0 entry. The |transit| keyword is just a syntactic shortcut for |provider 0|.

    The treatment of AS0 providers is mentioned in section 5 of
    draft-ietf-sidrops-aspa-verification-19.  It is a mechanism for
    people to announce that “no one should announce this AS”.  I’ve
    attached a snapshot of the global ASPA table as
    “bird-aspa-v2.16.conf”. There is one AS0 announcement as of today.

No, it isn’t. It’s a mechanism to say “I have no providers”, as written in section 5 of the draft:

    Registering as AS0 ASPA is a statement by the registering AS that
    it has no transit providers (…)

This effectively means that in a valid AS Path, there may be:

  * no AS with AS0 ASPA
  * a single AS with AS0 ASPA
  * two adjacent AS’s with AS0 ASPA

I fell probably exactly into the same trap when reading the drafts first time, and the draft authors had to explain the principles to me several times in person for me to get it right. I tried to fix that by suggesting a different wording, please check this (long) message in sidrops:

https://mailarchive.ietf.org/arch/msg/sidrops/LE_nPFL6XFnIKE-25O9WIfZ-YFI/

    Issue #2)  Changes in static ASPA tables are not reflected until
    entries are removed and re-added.

Thanks, fixed: https://gitlab.nic.cz/labs/bird/-/commit/1e685bbc2a7411c09b6c80404c49a410d6c47a2a

    This problem does not occur when the ASPA elements are
    customer-provider pairs.  I believe this is an overall design
    issue, not a simple bug.  I will be bringing this issue up with
    ietf-sidrops.

There were massive data consistency problems in BIRD 3 when the ASPA elements were customer-provider pairs, and we won’t go back there.

Also, both the configuration and the in-table storage is more memory-greedy with the pairs storage.

Have a nice end-of-the-year! Maria

–
Maria Matejka (she/her) | BIRD Team Leader | CZ.NIC, z.s.p.o.

Reply via email to