pierky / arouteserver

A tool to automatically build (and test) feature-rich configurations for BGP route servers.
https://arouteserver.readthedocs.org/
GNU General Public License v3.0
284 stars 46 forks source link

Bird config not correct - Symbol too long #47

Closed david-garay closed 5 years ago

david-garay commented 5 years ago

Hi There,

Thank you for the useful software. I tried generating bird config and got "Symbol too long" from bird.

Steps to reproduce:

As workaround I just made the string shorter, perhaps arouteserver can include this symbol length validation as part of code generation?

Cheers,

David

pierky commented 5 years ago

Hello, could you share your config files so that I can reproduce the problem? Maybe you can send them to my email address pierky@pierky.com Thanks

david-garay commented 5 years ago

Hi Pier,

Just sent an email to your email with problem description/input files. Thanks for your support!

David

david-garay commented 5 years ago

Hi Pier,

Thank you for the fix provided. I recreated the config file based on the same clients list, and bird does not complain anymore about symbol lengths. There seem to be differences between the files (possibly resulting from bgpq3 output) but otherwise, clients are correct. Cheers!

David

Before:

usage: arouteserver [-h]
                    {build,bird,openbgpd,html,template-context,clients-from-peeringdb,clients-from-euroix,setup,setup-templates,verify-templates,configure,show_config,ixf-member-export,init-scenario,check_update}
                    ...

ARouterServer v0.21.0: a tool to automatically build route servers

After installation:

dgaray@hull:/opt/arouteserver$ arouteserver -h
usage: arouteserver [-h]
                    {build,bird,openbgpd,html,template-context,clients-from-peeringdb,clients-from-euroix,setup,setup-templates,verify-templates,configure,show_config,ixf-member-export,init-scenario,check_update}
                    ...
ARouterServer v0.21.1-alpha1: a tool to automatically build route servers
configuration.
dgaray@hull:/opt/arouteserver$ grep "protocol bgp AS" corrected_AMS_bird.txt >1.out && grep "protocol bgp AS" sym_len_fix.txt > 2.out && diff 1.out 2.out
dgaray@hull:/opt/arouteserver$
arouteserver bird --ip-ver 4 -o ./sym_len_fix.txt --client corrected_AMS-IX.yml

Restarting bird with new config:

dgaray@hull:/opt/arouteserver$ sudo ln -s /opt/arouteserver/sym_len_fix.txt /etc/bird/bird.conf
dgaray@hull:/opt/arouteserver$ sudo birdc configure
BIRD 1.6.3 ready.
Reading configuration from /etc/bird/bird.conf
Reconfiguration in progress
dgaray@hull:/opt/arouteserver$

Restarting bird with old config:

dgaray@hull:/opt/arouteserver$ sudo rm /etc/bird/bird.conf
dgaray@hull:/opt/arouteserver$ sudo ln -s /opt/arouteserver/corrected_AMS_bird.txt /etc/bird/bird.conf
dgaray@hull:/opt/arouteserver$ sudo birdc configure
BIRD 1.6.3 ready.
Reading configuration from /etc/bird/bird.conf
/etc/bird/bird.conf, line 443574: Symbol too long
dgaray@hull:/opt/arouteserver$ grep define sym_len_fix.txt |grep prefixes |while read line; do count=$(echo $line | wc -c); echo $line $count;  done |grep  '= \[ 7'
define AS_SET_AS_BALKAN_IX_AS_BALKAN_IX_RG_AS_BALKAN_IX_V6_prefixes = [ 72
define AS_SET_RIPE__AS12779_AS_CUSTOMERS_RIPE__AS12779_A_0b73a_prefixes = [ 76
define AS_SET_RIPE__AS_OPENCARRIER_RIPE__AS_OPENCARRIER6_prefixes = [ 70

Confirming absence of long symbols on new config:

dgaray@hull:/opt/arouteserver$ grep define corrected_AMS_bird.txt |grep prefixes |while read line; do count=$(echo $line | wc -c); echo $line $count;  done |grep  '= \[ 8'
define AS_SET_RIPE__AS12779_AS_CUSTOMERS_RIPE__AS12779_AS_CUSTOMERS_V6_prefixes = [ 84
dgaray@hull:/opt/arouteserver$ grep define sym_len_fix.txt |grep prefixes |while read line; do count=$(echo $line | wc -c); echo $line $count;  done |grep  '= \[ 8'
dgaray@hull:/opt/arouteserver$
pierky commented 5 years ago

Thanks @david-garay for the update here.

Just for the sake of clarity, what David was referencing to above is an alpha release containing the fix for that weird condition.

The official 0.21.1 version is going to be released in a few minutes/hours, the CI/CD pipeline is running already.