<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>
</p>
<div class="moz-text-flowed"
style="font-family: -moz-fixed; font-size: 14px;" lang="x-unicode"><br>
</div>
<div class="moz-text-flowed"
style="font-family: -moz-fixed; font-size: 14px;" lang="x-unicode">Hello
Bird Team!
<br>
<br>
My name is Ralph. I'm a network engineer and C programmer for
Hurricane Electric. I am a long time fan of the Bird project!
Keep up the great work!!
<br>
<br>
Earlier this year I was tasked with implementing reactive ASPA in
our network. My code was based off your older implementation of
static ASPA tables here:
<br>
<br>
<a class="moz-txt-link-freetext"
href="https://gitlab.nic.cz/labs/bird/-/tree/aspa">https://gitlab.nic.cz/labs/bird/-/tree/aspa</a>
<br>
<br>
This older implementation is based off of customer-provider pairs:
<br>
<br>
typedef struct net_addr_aspa {
<br>
u8 type;
<br>
u8 padding;
<br>
u16 length;
<br>
u32 customer_asn;
<br>
u32 provider_asn;
<br>
} net_addr_aspa;
<br>
<br>
I've attached the patch as "bird-2.15.1-aspa-asn-pairs.patch".
<br>
<br>
I took a look at 2.16 and ran into 2 problems. Respectfully, I
would like to report two issues with the ASPA code in 2.16.
<br>
<br>
Issue #1) There is no way to tell the difference between a
transit entry and an "AS0" entry.
<br>
<br>
$ cat bird-aspa.conf
<br>
aspa table at;
<br>
<br>
protocol static
<br>
{
<br>
aspa;
<br>
route aspa 12345 transit;
<br>
route aspa 970 provider 43, 56;
<br>
route aspa 43970 provider 0;
<br>
}
<br>
<br>
---
<br>
<br>
$ ./sbin/birdc
<br>
BIRD 2.16 ready.
<br>
bird> show route table at all
<br>
Table at:
<br>
43970 [static1 19:38:32.125] * (200)
<br>
Type: static univ
<br>
aspa_providers: 0
<br>
970 [static1 19:38:32.125] * (200)
<br>
Type: static univ
<br>
aspa_providers: 43 56
<br>
12345 [static1 19:38:32.125] * (200)
<br>
Type: static univ
<br>
aspa_providers: 0
<br>
bird>
<br>
<br>
---
<br>
<br>
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.
<br>
<br>
Issue #2) Changes in static ASPA tables are not reflected until
entries are removed and re-added.
<br>
<br>
$ cat bird-aspa.conf
<br>
aspa table at;
<br>
<br>
protocol static
<br>
{
<br>
aspa;
<br>
route aspa 12345 transit;
<br>
route aspa 970 provider 43, 56;
<br>
route aspa 43970 provider 0;
<br>
}
<br>
<br>
bird> show route table at all
<br>
Table at:
<br>
43970 [static1 19:38:32.125] * (200)
<br>
Type: static univ
<br>
aspa_providers: 0
<br>
970 [static1 19:38:32.125] * (200)
<br>
Type: static univ
<br>
aspa_providers: 43 56
<br>
12345 [static1 19:38:32.125] * (200)
<br>
Type: static univ
<br>
aspa_providers: 0
<br>
bird>
<br>
<br>
$ cat bird-aspa.conf
<br>
aspa table at;
<br>
<br>
protocol static
<br>
{
<br>
aspa;
<br>
route aspa 12345 transit;
<br>
route aspa 970 provider 43, 56, 78; <---- added
AS78
<br>
route aspa 43970 provider 0;
<br>
}
<br>
<br>
$ ./sbin/birdc
<br>
BIRD 2.16 ready.
<br>
bird> configure
<br>
Reading configuration from /home/rpki/bird/etc/bird.conf
<br>
Reconfigured
<br>
bird> show route table at all
<br>
Table at:
<br>
43970 [static1 19:38:32.125] * (200)
<br>
Type: static univ
<br>
aspa_providers: 0
<br>
970 [static1 19:38:32.125] * (200)
<br>
Type: static univ
<br>
aspa_providers: 43 56 <-------- changes not
reflected ***
<br>
12345 [static1 19:38:32.125] * (200)
<br>
Type: static univ
<br>
aspa_providers: 0
<br>
bird>
<br>
<br>
$ cat bird-aspa.conf
<br>
aspa table at;
<br>
<br>
protocol static
<br>
{
<br>
aspa;
<br>
route aspa 12345 transit;
<br>
#route aspa 970 provider 43, 56, 78; <----- remove
entries altogether
<br>
route aspa 43970 provider 0;
<br>
}
<br>
<br>
$ ./sbin/birdc
<br>
BIRD 2.16 ready.
<br>
bird> configure
<br>
Reading configuration from /home/rpki/bird/etc/bird.conf
<br>
Reconfigured
<br>
bird> show route table at all
<br>
Table at:
<br>
43970 [static1 19:38:32.125] * (200)
<br>
Type: static univ
<br>
aspa_providers: 0
<br>
12345 [static1 19:38:32.125] * (200)
<br>
Type: static univ
<br>
aspa_providers: 0
<br>
bird>
<br>
<br>
$ cat bird-aspa.conf
<br>
aspa table at;
<br>
<br>
protocol static
<br>
{
<br>
aspa;
<br>
route aspa 12345 transit;
<br>
route aspa 970 provider 43, 56, 78; <------- add
entry again
<br>
route aspa 43970 provider 0;
<br>
}
<br>
<br>
$ ./sbin/birdc
<br>
BIRD 2.16 ready.
<br>
bird> configure
<br>
Reading configuration from /home/rpki/bird/etc/bird.conf
<br>
Reconfigured
<br>
bird> show route table at all
<br>
Table at:
<br>
43970 [static1 19:38:32.125] * (200)
<br>
Type: static univ
<br>
aspa_providers: 0
<br>
970 [static1 20:17:30.142] * (200)
<br>
Type: static univ
<br>
aspa_providers: 43 56 78 <--------- changes
reflected correctly
<br>
12345 [static1 19:38:32.125] * (200)
<br>
Type: static univ
<br>
aspa_providers: 0
<br>
bird>
<br>
<br>
---
<br>
<br>
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.
<br>
<br>
Thanks!
<br>
</div>
<div class="moz-text-flowed"
style="font-family: -moz-fixed; font-size: 14px;" lang="x-unicode"><br>
</div>
<div class="moz-text-flowed"
style="font-family: -moz-fixed; font-size: 14px;" lang="x-unicode">--</div>
<div class="moz-text-flowed"
style="font-family: -moz-fixed; font-size: 14px;" lang="x-unicode"><br>
</div>
<div class="moz-text-flowed"
style="font-family: -moz-fixed; font-size: 14px;" lang="x-unicode">Ralph
Covelli</div>
<div class="moz-text-flowed"
style="font-family: -moz-fixed; font-size: 14px;" lang="x-unicode">Hurricane
Electric / AS6939</div>
<div class="moz-text-flowed"
style="font-family: -moz-fixed; font-size: 14px;" lang="x-unicode">Network
Engineer<br>
</div>
</body>
</html>