Package: arouteserver
ARouteServerA Python tool to automatically build (and test) feature-rich configurations for BGP route servers.How it worksTwo YAML files providegeneral policiesandclients configurationsoptions:cfg:rs_as:64496router_id:"192.0.2.2"filtering:irrdb:enforce_origin_in_as_set:Trueenforce_prefix_in_as_set:Truerpki_bgp_origin_validation:enabled:Truereject_invalid:True...clients:-asn:64511ip:-"192.0.2.11"-"2001:db8:1:1::11"irrdb:as_sets:-"RIPE::AS-FOO"...ARouteServer acquires external information to enrich them: i.e.bgpq4/bgpq3for IRR data,PeeringDBfor max-prefix limit and AS-SETs, RPKI ROAs, …Jinja2built-in templates are used to render the final route server’s configuration file.Currently,BIRD(>= 1.6.3 up to 1.6.8),BIRD v2(starting from 2.0.7),BIRD v3(only for testing, still in pre-release/alpha) andOpenBGPD(OpenBSD >= 7.0 also OpenBGPD Portable >= 7.0) are supported, with almostfeature paritybetween them.Validationand testing of the configurations generated with this tool are performed using the built-inlive testsframework:Dockerinstances are used to simulate several scenarios and to validate the behaviour of the route server after configuring it with ARouteServer. More details on theLive testssection.A Docker-basedplaygroundis available to experiment with the tool in a virtual IXP environment.Also, aDocker imageis provided to start building rich and secure configurations in a couple of minutes.FeaturesPath hidingmitigation techniques (RFC7947section 2.3.1).Basic filters (mostly enabled by default):NEXT_HOPenforcement (strict / same AS -RFC7948section 4.8);minimum and maximum IPv4/IPv6prefix length;maximumAS_PATH length;rejectinvalid AS_PATHs(containingprivate/invalid ASNs);reject AS_PATHs containingtransit-freeornever via route-serversASNs (usingPeeringDB info_never_via_route_servers attribute);rejectbogons;max-prefix limitbased on global or client-specific values or onPeeringDBdata.Prefixes and origin ASNs validation (also intag-onlymode):IRR-based filters(RFC7948section 4.6.2);AS-SETs configured manually or fetched from PeeringDB;support forIRR sources(RIPE::AS-FOO, RADB::AS-BAR);white listssupport;extended dataset for filters generation:RPKIROAs used as route objects;Origin ASfromARIN Whoisdatabase dump;NIC.BR Whois data(slide n. 26) from Registro.br;RPKI-based filtering (BGP Prefix Origin Validation);ROAs can be retrieved from publicly available JSON files or from a local validating cache;Route Leak Prevention and Detection UsingBGP Roles(RFC9234).Blackhole filteringsupport:optionalNEXT_HOP rewriting;signalling via BGP Communities (BLACKHOLEand custom communities);client-by-client control over propagation.Graceful shutdownsupport:honor theGRACEFUL_SHUTDOWNBGP community received from clients (draft-ietf-grow-bgp-gshut-11);allow to perform a graceful shutdown of the route server itself.Control and informative BGP communities:prefix/origin ASN present/not present inIRRDBs data;do (not) announce to any /peer/ onRTT basis;prependto any /peer/ onRTT basis;addNO_EXPORT/NO_ADVERTISEto any /peer;32bit ASNs mappingto 16bit ASNs for announcement control BGP communities;Euro-IX large BGP communitiesto track reject reasons;custom informational BGP communities.Optional session features on a client-by-client basis:prepend route server ASN (RFC7947section 2.2.2.1);active sessions;GTSM(Generalized TTL Security Mechanism -RFC5082);ADD-PATHcapability (RFC7911).Automatic building of clients list:integrationwithIXP-Manager;fetch listsfromPeeringDBrecords andEuro-IX member list JSONfiles.IX-F Member ExportJSON filescreation.Related tools:ThePlayground, to experiment with the tool in a virtual IXP environment.Invalid routes reporter, to log or report invalid routes and their reject reason.A comprehensive list of features can be found within the comments of the distributed configuration file onGitHubor on thedocumentation web page.More feature are already planned: see theFuture worksection for more details.Full documentationFull documentation can be found on ReadTheDocs:https://arouteserver.readthedocs.org/PresentationsEuro-IX “Learn with us: ARouteServer tutorial”, 28 July 2021:video(33:13)RIPE74, 10 May 2017, Connect Working Group:video(9:53),slides(PDF)Salottino MIX, 30 May 2017:slidesMentions / endorsements:Job Snijders, LACNIC29, 3 May 2018:slides(PDF)Anurag Bhatia, APNIC46, 12 September 2018:video,slides(PDF)Claudio Jeker, RIPE Labs, 28 November 2018:OpenBGPD - Adding Diversity to the Route Server Landscape.Who is using ARouteServer?BharatIX, BIRD.CATNIX, BIRD.CHIX, BIRD and OpenBGPD.CNX, BIRD v2.DO-IX, BIRD.EVIX, BIRD.FCIX, BIRD.GAVLIX.GigaPIX, BIRD and BIRD v2.IX Australia, BIRD v2.IX-Denver, BIRD.MBIX, BIRD.MIX, BIRD.Netnod, BIRD and GoBGP1.NIXI Mumbai (GPX), BIRD.NZIX, BIRD v2.PIT-IX, BIRD.QCIX, BIRD.RO-CIX, OpenBGPD.SFMIX, BIRD and OpenBGPD.SwissIX, OpenBGPD.Unmetered.Exchange, BIRD.VANIX.YEGIX, OpenBGPD.YXEIX, OpenBGPD.YYCIX, OpenBGPD.Are you using it? Do you want to be listed here?Drop me a message!1: GoBGP configurations are generated using a fork of the project which is still WIP and that hopefully will be merged upstream in the future.Bug? Issues? Support requests?But also suggestions? New ideas?Please create anissue on GitHubordrop me a message.A Slack channel is also available on thenetwork.toCode()community:arouteserver.AuthorPier Carlo Chiodi -https://pierky.comBlog:https://blog.pierky.comTwitter:@pierkyChange logNoteUpgrade notes: after upgrading, run thearouteserversetup-templatescommand to sync the local templates with those distributed with the new version. More details on theUpgradingsection of the documentation.1.21.6Fix: fetching Registro.br dataset via HTTPS.A“Can’t decode Registro.br Whois DB raw file”error was raised when trying to fetch the dataset from Registro.br using HTTPS.See alsoGitHub PR 128.1.21.5Fix:irr-as-setcommand, the parser considers hierarchical AS-SET names.Names in the formatAS<n>:
were considered as in the formatsource:name.See alsoGitHub issue 126.1.21.4Fix:irr-as-setcommand, omit AS-SETs having a source different from the target registry.The list of members used to build the IRR object no longer includes client’s AS-SETs if their origin does not match the registry for which the object is being created.See alsoGitHub issue 126.Improvement:irr-as-setcommand,--include-membersand--exclude-membersoptions.Add options to the command that allow the operator to include/exclude AS-SETs from the members list of the object being generated.1.21.3Fix:--merge-from-custom-fileoverriding configs fromclients-from-euroix.The--merge-from-custom-fileoption of theclients-from-euroixcommand is supposed to merge the configurations from a local file into the final content that it generates for clients.yml. However, a bug was triggering an undesired behaviour, for which thecfgsettings from the local file were overriding those automatically generated by the command. This was leading to the removal of information such as max-prefix and as-set that were originally populated using the Euro-IX records.1.21.2New: add support forBIRD 2.14andOpenBGPD 8.3, also added to the integration testing suite.1.21.1New: add support forOpenBGPD 8.0, also added to the integration testing suite.New: add early support for BIRD v3 (current release3.0alpha2), for testing purposes only.1.21.0This releasebreaks backward compatibility(BIRD configs only): the default target version used to build BIRD configurations (when the--target-versionargument is not given) is now the latest from the version 2 of BIRD (2.13 at the moment); previously it was 1.6.8. Use the--target-version1.6.8command line argument to build 1.6 compatible configurations.Please note:BIRD 1 will reach end of life at the end of the year 2023.New: add support forBIRD 2.13, also added to the integration testing suite.New: support to build configurations for multiple route servers at once.Providing a list of values in therouter_idsetting of thegeneral.ymlfile allows ARouteServer to build configurations for multiple route servers during the same execution.For more details seeBuilding configurations for multiple route serverson the doc web site.Fix:ixf-member-export(to build an Euro-IX JSON export file from clients.yml) now sets therouteserverflag of members toTrue.See alsoGitHub issue 120.1.20.1New: add support forOpenBGPD 7.8, also added to the integration testing suite.1.20.0Deprecation: support for overly old OpenBGPD versions (< 7.0) is removed.SeeGitHub PR 117.New: add support forBIRD 2.0.11, also added to the integration testing suite.New: mapping of 32bit ASNs to 16bit private ASNs for announcement control standard BGP communities.A new feature is added to allow 32bit ASN clients to be mapped to 16bit ASNs in the standard BGP communities used for announcement control. This feature allows clients to use the 16bit mapped ASN as thepeer_asvalue for standard BGP communities likedo not announce to $PEER. In those communities, the 32bit ASN will be represented by the 16bit value which is mapped to it.For details on how to configure this feature, see the documentation,“BGP Communities” section.See alsoGitHub issue 101.New: add support forRFC9234 Route Leak Prevention and Detection Using Roles.A new configuration option is available in general.yml to enable RFC9234 roles (supported by BIRD >= 2.0.11 and OpenBGPD >= 7.5, even thoughdiscouraged until 7.8 will be out).
When that’s set, BGP sessions on the route server are configured to announce the route-server role and routes received from clients and tagged with the OTC (Only To Customer) attribute are dropped.This option can be enabled in backward compatibility mode in the general.yml file, and can also be tuned on a client-by-client basis via the clients.yml file.Details can be found in thedocumentation page of general.yml.New: anchors in HTML pages.The route server policy textual representation HTML files generated via thehtmlcommand now have anchors at the various headers and sub-headers, so when referring other parties to the policy they can be pointed directly to the relevant section.See alsoGitHub issue 119.Fix: minor issues with the HTML pages.Wrong URL in some links and a misleading reference to a wrong mailing list post about private ASNs.See alsoGitHub issue 119.Please note: starting with the next release, the default target version used to build BIRD configurations (when the--target-versionargument is not given) will be the latest from the 2.x major version; until now it was 1.6.8. Operators will need to use the--target-version1.6.8command line argument to build BIRD 1.x compatible configurations.1.19.0Deprecation: the ARIN Whois OriginAS feature (config knobuse_arin_bulk_whois_data, documented inUse ARIN Whois database to accept routes) is being deprecated.PerRecommended Draft Policy ARIN-2021-8, the “Autonomous System Originations” field is going to be removed from the ARIN database. Consequentially, this feature that is based on that is going to be deprecated as well and will be dropped in future releases of ARouteServer.Operators that will run ARouteServer withuse_arin_bulk_whois_data.enabledset toTruewill see a warning message being logged, about the deprecation.The publicly available intermediate data relay which was running on the NLNOG infrastructure already removed the source file, which was used to fetch those records. So, operators willing to support this feature will need to provide their own version of the file.See alsoGitHub issue 116.1.18.0No new functionalities nor bug fixes here, just a change in the releases of Python which are supported and tested.Tests are no longer performed for Python 3.6 (EoL).Tests for Python 3.10 and 3.11 are introduced: 3.11 is the release used to perform the integration tests.Docker images are built on top of Python 3.11 and PyPy 3.9.1.17.1New: add support for OpenBGPD 7.6 and 7.7, also added to the integration testing suite (portable edition only).1.17.0New: add support forBIRD 2.0.10, also added to the integration testing suite.New: add support forOpenBGPD 7.5, also added to the integration testing suite (portable edition only).New (OpenBGPD): add support for ADD-PATH (on version 7.5 or above).Improvement: abort the configuration building process as soon as oneenricherfails.This shorten the user feedback in case of errors that unavoidably would make the final configuration broken and not usable.Fix: removeRGNETfrom the list of default IRR sources.To remove it from existing deployments, or to add it back, users can edit the arouteserver.yml file,bgpq3_sourcessection.See alsoGitHub issue 111.1.16.1New: add support for OpenBGPD 7.4, also added to the integration testing suite (portable edition only).Fix: pin downurllib3version to avoid issues on upgrade.See alsoGitHub issue 110.Fix: theplaygroundDocker image was not building anymore.Go and AliceLG birdwatcher versions have been bumped to the latest available.1.16.0Improvement: use bulk queries to get clients’ records from PeeringDB.Clients’ details (such as IRR records and max-prefix limits) are now retrieved from PeeringDB usingbulkAPI queries, where multiple ASNs are checked at once.This speeds up the configuration building process and reduces the number of queries to PeeringDB, reducing the risk of hitting the API rate limit.See alsoGitHub issue 107.1.15.1Fix: update the requirements.The min. version of Jinja2 reported in the requirements file was not enough to satisfy the needs of the templates.See alsoGitHub issue 106.Fix: allow setting PeeringDB API key to mitigate anonymous API throttling mechanism.ARouteServer can now be instructed to use an API key to perform authentication against the PeeringDB API server. This can be done by setting the environment variableSECRET_PEERINGDB_API_KEYor by storing the same key inside one of the following well-known files:~/.arouteserver/peeringdb_api.key,~/.peeringdb_api.key.This should mitigate the effects of the anonymous API throttling mechanism introduced on PeeringDB.See alsoGitHub issue 107.Improvement: retry on PeeringDB API failure or rate-limit.In case of failure or rate-limit of the PeeringDB API the tool now retries the same query multiple times.See alsoGitHub issue 107.1.15.0New: add support for OpenBGPD 7.3, also added to the integration testing suite (portable edition only).New:mdcommand, to build a textual representation in Markdown format.This command works like thehtmlcommand and can be used to build a textual representation of the route server’s configuration policy in Markdown format.For more details see theTextual representationsection of the documentation.New: addcustom_optionsto the clients definition file.This new section can be used to add BGP-speaker-specific arbitrary lines of configuration to the file generated by ARouteServer.For more details see theClient custom options.>`__ section of the documentation.See alsoGitHub PR 104.Improvement (BIRD): skip NEXT_HOP check for IPv6 link-local clients.Due to a limitation of BIRD, it is not possible to verify the NEXT_HOP attribute of routes announced by IPv6 clients configured using link-local addresses.
The configurations generated using this release skip that check (upon operator’s approval if such clients are present).See alsoGitHub PR 104.Fix: detect infeasible extended BGP communities when a 32bit ASN is used for the route server.When the route server uses a 32bit ASN, certain extended BGP communities may end being configured to match multiple 32bit values, which is not possible because the way they are encoded.This release detects similar situations in advance and aborts the configuration building process.See alsoGitHub PR 104.1.14.1Fix: import limit is not set if PeeringDB records are not found.For clients not configured with a specific max-prefix value, when a PeeringDB record was not found the value from the general limit was not used to build the import limit configuration. The tool was expected to fallback to thegeneral_limit_ipv4value instead.See alsoGitHub issue 105.1.14.0New: Add support forBIRD 2.0.9(also included into the integration testing suite).Improvement (OpenBGPD): improve readability of the configurations.A better formatting of the output configuration allows a better readability. Also, wherever possible, extended communities are removed using wildcard matching, allowing a more compact configuration.See alsoGitHub issue 97and99.Improvement (Docker image): usebgpq4version 1.4.The Docker image was using version 1.2.Improvement (Docker image): PyPy3-based image added.The Docker images based on PyPy3 will have tags in the formlatest-pypy3and<version>-pypy3(like1.14.0-pypy3).Improvements: drop dependencies on libraries needed for Python 2 compatibility.Also, tests are now performed using Python 3.6, 3.8 and 3.9 too.1.13.1Fix: avoid runningbgpq4using the-3option.It seems that the-3CLI option has been dropped inbgpq4and is no longer supported (it was added as a way to not break compatibility withbgpq3syntax).See alsoGitHub issue 95.Fix (OpenBGPD): syntax error when prepend functionalities were configured with ‘std’ communities only and 32bit ASN clients were present.See alsoGitHub issue 98.Improvement: better explaination of when error messages can be ignored.See alsoGitHub issue 96.1.13.0New (OpenBGPD): use theexpiresattribute of ROAs from rpki-client format.In OpenBGPD configurations (starting with 7.2), theexpiresattribute of ROAs gathered from JSON feeds that contain it is passed on into the configuration of theroa-set.See alsoGitHub issue 92.1.12.0New: add the--merge-fileoption to theixf-member-exportcommand, to include user-created content into the IX-F Member Export JSON file.For more details on how it works please check thedocumentation.See alsoGitHub issue 89.Improvement: in theixf-member-exportcommand, the value of IXP ID can now be set via the--ixp-idin addition to the existing--ixp_idoption.In the future, the--ixp_idversion of the option will be dropped. A warning message will be shown when the deprecated version of that command line argument is used.Improvement: ask for 16bit placeholder ASN inconfigurewhen the route-server is on a 32bit ASN.When theconfigurecommand is used to generate the policy for a route-server running on a 32bit ASN, a prompt asks the operator which 16bit placeholder ASN should be used to setup the BGP communities. So far, the fixed value 65534 was used.See alsoGitHub issue 88.Improvement (OpenBGPD): useas-setto configure the list of “never via route server” ASNs.This change reduces the size of the configuration and hopefully makes the filter processing faster.See alsoGitHub issue 90.Fix: when the route-server ASN was a 32bit value, theEuro-IX Large BGP Communitiesautomatically configured viaconfigurewere using the 16bit placeholder ASN.When theconfigurecommand was used to build thegenera.ymlpolicy for route-servers running on 32bit ASNs, the Large BGP Communities used to map route reject causes to Euro-IX codes were using the 16bit placeholder ASN instead of the actual route-server’s 32bit ASN.1.11.1Fix: better error handling for clients configured with no IP address.When a client was mistakenly configured with no IP addresses, the program raised an unhandled exception, instead of providing a good feedback to the user.See alsoGitHub issue 87.1.11.0New: add support forOpenBGPD 7.2, also added to the integration testing suite (portable edition only).Improvement: better handling of IRRd query failures.Multiple hosts can now be configured as servers used for the IRR queries performed viabgpq3/bgpq4. In case of timeout or failure, the next host in the list is used.
A timeout of 2 minutes is used by default. These settings can be modified in thearouteserver.ymlfile.See alsoGitHub issue 85.1.10.1Fix: the HTML representation of RPKI validation custom communities was broken.After adding custom RPKI validation communities implemented as part of v1.10.0 the route server configuration textual representation file hada small cosmetic problem.See alsoGitHub issue 83.1.10.0New: add support for custom BGP communities to track rejected routes.A new section of the general.yml file (reject_cause_map) allows to configure custom BGP communities for each reject reason (the list can be found on theReject reasonsparagraph of on the doc site).When this is implemented along withreject_policyset totagortag_and_reject, ad-hoc custom BGP communities can be used to describe why a route was rejected by the route server.New: add support for custom BGP communities to internally track the outcome of BGP Origin Validation (or the lack of it).3 new BGP communities are introduced to track the outcome of BGP Origin Validation (if enabled):rpki_bgp_origin_validation_valid,rpki_bgp_origin_validation_unknownandrpki_bgp_origin_validation_invalid. These communities can be used to classify routes depending on the their validation state using custom values, in addition toRFC8097 communities. They are not announced to clients, but rather they are meant to be used only internally within the route server, just to make it easier the integration with external tools, like looking glasses.An additional fourth BGP community is also introduced, to classify routes for which BGP Origin Validation has not been performed:rpki_bgp_origin_validation_not_performed. When configured, this community is added when BOV is not enabled, or when it is not performed for some specific reasons (only blackhole route processing at the moment). Contrary to the 3 previous ones, this community is announced to the clients.See alsoGitHub issue 78.New: Euro-IX Large BGP Communities are included into the policy generated by theconfigurecommand.This feature leverages the newreject_cause_mapoption commented above.The general.yml file generated by theconfigurecommand now includes a mapping between internal reject codes and the communities proposed in theEuro-IX Large BGP Community standarddocument.Please note: to make the policies generated byconfigureconsistent between BIRD and OpenBGPD, thereject_policyoption for the latter is now set totag(so rejected routes are kept in OpenBGPD but are still not advertised to the route server clients).In addition to this, some of the BGP communities set by theconfigurecommand have been changed in order to match those suggested in the Euro-IX document above.New:check-configcommand, to verify configuration files (general.yml and clients.yml).This command can be used to verify that the content of the two main configuration files is valid, without building the configurations.See alsoGitHub PR 82andissue 79.Improvement (OpenBGPD): informational extended BGP communities are now scrubbed from outbound routes.Certain informational extended BGP communities that need dynamic values (like the one used to track the reject code of a route that is discarded whenreject_policyis set totag) were not scrubbed from outbound routes, because of lack of wildcard matching in OpenBGPD. Since this feature was recently added to the BGP speaker, they are now removed.Fix (OpenBGPD): make behaviour ofrpki_bgp_origin_validation.reject_invalidconsistent with BIRD.Contrary to whatreject_invalid: Falsemight seem doing, the actual behaviour it is designed for is to still prevent the propagation of INVALID routes when RPKI BOV is enabled. When it’s set toTrue(the default value) the BGP daemons are configured to immediately drop INVALID routes in the inbound filters; when it’s set toFalsethose routes are accepted but not propagated to clients, they are blocked in the outbound filters: basically they are just kept internally within the route server to allow analysis and troubleshooting.While the BIRD implementation ofreject_invalid: Falsewas working fine, a bug was found in the OpenBGPD one that prevented those routes from being blocked in the outbound direction, letting them to be propagated to clients.1.9.0New: Add support forOpenBGPD 7.1, also added to the integration testing suite (portable edition only).Improvement: provide hint on how to change URL for external IRR DB data sources.See alsoGitHub issue 77.Fix (OpenBGPD only):RFC8097 communitieswere not added after BGP Origin Validation.TheBGP Prefix Origin Validation State Extended Communitieswere not added when RPKI OV was performed. INVALID routes were still dropped when the route server was configured to do so (those routes are internally marked using locally-meaningful communities).Improvement: RPKI ROAs files are checked for stale data.The JSON files fetched from validating caches are now checked to detect stale data (rpki-client and OctoRPKI formats include this information) and they are ignored if the data they contain is no longer valid. In this case, the next URL in therpki_roas.ripe_rpki_validator_urllist is used.By default, files whose content is older than 21600 seconds (6 hours) are ignored; it’s possible to change this option via the newly introducedrpki_roas.ignore_cache_files_older_thansetting.Where available (rpki-client format only at this time), also theVRP expiration timeis checked.As a consequence of this, the default ARouteServer cache expiration time for RPKI ROAs JSON files has been reduced to 60 minutes, to avoid caching ROAs that would turn out being expired at the next use of their cached copy.Improvement: new order for the default URLs of the RPKI JSON files.Since the RIPE NCC RPKI Validatoris now in EoL, the URL of the JSON file that points to rpki-validator.ripe.net has been moved as the last resort option forrpki_roas.ripe_rpki_validator_url.
The one exposed in therpki-client dashboardhas been added.Please note: this change only affects the default configuration file that ships with ARouteServer and is not be automatically reflected in existing configurations that route-servers operators are already using. If you wish this setup to be reflected in your configuration, please update your general.yml file accordingly.1.8.0Improvement: add theloggingoption to--use-local-filesargument, to allow customization of logging settings.Details on the documentation:Logging configuration of the BGP daemon.See alsoGitHub issue 75.1.7.0New: Add support forOpenBGPD 7.0, also added to the integration testing suite (portable edition only).Please note: starting with this release, since the default target version for OpenBGPD is 7.0, path-hiding mitigation will be enabled by default by theconfigurecommand. This option can be modified in thegeneral.ymlfile.1.6.0Starting with this release, the default target version for OpenBGPD will be the latest stable (6.9 in this case). Use the--target-versionCLI option if you want to build your configurations for a previous release of OpenBGPD.New: Add support for OpenBGPD/OpenBSD 6.9 and OpenBGPD Portable 6.9p0, also added to the integration testing suite.New (OpenBGPD): add support for RTR sessions starting with version 6.9.Please note the following issues with OpenBGPD 6.9 if you want to enable RTR sessions; you might want to apply the available patches:Invalid argumenterror and RTR session not coming up (issue #23 on GitHuband“bgpd, fix RTR connect”post on openbsd-tech)non blockingconnect()call for RTR session establishment (“bgpd behaviour when RTR endpoint is not available”post on openbgpd-users and“bgpd, non-blocking rtr connect”post on openbsd-tech)New (OpenBGPD): enable support for path-hiding mitigation.Even though OpenBGPD supports path-hiding mitigation starting with version 6.9, the feature is not automatically enabled by theconfigurecommand because of some issues that might impair the stability of the routing ecosystem:withdrawal of 2nd best route withrde evaluate all(issue #21 on GitHuband“bgpd fix for rde evaluate all”post on openbsd-tech)advertisement of 2nd best routes on reload withrde evaluate all(issue #21 on GitHuband“bgpd better reload behaviour”post on openbsd-tech)Please apply the existing patches before enabling it on a production environment, and acknowledge the error produced by ARouteServer using the--ignore-issuespath_hiding_69CLI option.Improvement: the default list of“transit free”ASNs has been updated and some networks have been removed.See alsoGitHub PR73.v1.5.1Improvement (Docker image): generate HTML representation of the route server configuration through the Docker image.See alsoGitHub PR70andissue 69.Fix (Docker image): makeRS_ASN,ROUTER_IDandLOCAL_PREFIXESenvironment variables not required when a custom general.yml file is used.See alsoGitHub PR68.Fix: the “Reject reasons” table in the HTML representation was rendered improperly.See alsoGitHub issue 71.v1.5.0New: Add support forBIRD 2.0.8(also included into the integration testing suite).v1.4.0New: Docker image to easily build route-server configurations.For more details, see thedocker directory.Improvement: change the default value ofbgpq3_pathtobgpq4.Thebgpq4tool is now referenced as the default one in thebgpq3_pathconfiguration line of arouteserver.yml.Please note: operators who are using the tool and who left thebgpq3_pathconfiguration line unset will now need to either explicitly configure that line to point to theirbgpq3binary or to make surebgpq4is available on their system.Fix: theixf-member-exportcommand now produces a JSON file compliant withversion 1.0of theEuro-IX schema.See alsoGitHub PR65.v1.3.0New:irr-as-setcommand, to build the route server AS-SET object for IRR databases.This new command can be used to build the AS-SET RPSL object that describes the ASes and AS-SETs of route server clients. Details and usage:https://arouteserver.readthedocs.io/en/latest/USAGE.html#irr-as-setRelated:issue #49 on GitHub.v1.2.0Improvement (BIRD only):tag_and_rejectis now the default reject policy set by theconfigurecommand.When theconfigurecommand is initially used to setup ARouteServer and to generate thegeneral.ymlfile, thereject policythat it configures istag_and_rejectif BIRD is specified as the route server daemon.Fix:setup-templateswas not generating the correct backup of customized templates.The bug only affected the upgrade procedure of deployments where the Jinja2 templates were locally customized. More details on the comments of commit2ea6df69106d473f9f4170c65f929bab4a0d7676.v1.1.0Improvement: multihop support.For BIRD, this option can be configured only when path-hiding mitigation is turned off.More details onGitHub PR61.Improvement (BIRD only): allowcount_rejected_routes: Truein BIRD 2.0.7 when the patch is used.Apatch for BIRD 2.0.7was released to address the bug that leads the daemon to crash when a configuration is built usingcount_rejected_routes: True. This release adds a new locally meaningful fictitious version of BIRD that can be used to overcome the limitation enforced in ARouteServer 1.0.1, by signalling to the tool the usage of a patched version of BIRD (--target-version2.0.7+b962967e).See the notes for the 1.0.1 release for more details.New: Add support for OpenBGPD/OpenBSD 6.8 and OpenBGPD Portable 6.8p1, also added to the integration testing suite.v1.0.1Fix (BIRD only): change default behaviour to count rejected routes towards the max-prefix limit threshold.So far, routes received by the route server and rejected as a result of ingress filtering were not counted towards the max-prefix limit threshold;this release changes the default behaviourin a way that they are now taken into account.Example: a peer is configured with max-prefix limit 10 and action ‘shutdown’. It announces 15 routes, 5 of which are rejected due to inbound filters.
BIRD route servers configured using previous releases will not perform any action on that peer, while a configuration generated with this release will lead to the shutdown of the BGP session with that peer.In case the previous implementation of the max-prefix limit is the desired one, it can be restored by setting the new configuration statement that has been introduced with this release,count_rejected_routes, toFalse. More details in thegeneral.yml file.BIRD 2.0.7 users, please note: if you are using ARouteServer to configure route servers which are based on BIRD 2.0.7, you’ll get an error message at configuration build time. This is due to the fact that in BIRD 2.0.7 there isa bugthat affects configurations generated using the statement that implements the new default behaviour for max-prefix limit handling. The error message will show you the options to unblock the config generation, but in any case it will not be possible to implement this new way of handling the max-prefix limit.v1.0.0No changes, just make it “stable”!v0.26.0New: Add support for OpenBGPD/OpenBSD 6.7 and OpenBGPD Portable 6.7p0, also added to the integration testing suite.v0.25.1Fix: BIRD, usebgp_path.lastsince it’s consistent withRFC 6907 7.1.9-11 <https://tools.ietf.org/html/rfc6907#section-7.1.9>(RPKI BOV of routes whose AS_PATH ends with an AS_SET).More info:https://www.mail-archive.com/bird-users@network.cz/msg05152.htmlRelated:PR #56 on GitHub.v0.25.0New feature:tag_and_rejectreject policy for BIRD.Invalid routes can be tagged with informational BGP communities and then discarded by BIRD.
With this option, alice-lg reject reasons are supported nicely, whilst keepingshow routes all filteredworking to keep birdwatcher happy.Related:PR #57 on GitHub.Improvement:clients-from-euroixcommand, option--merge-from-custom-fileto customise the list of clients generated from an Euro-IX JSON file.More details on how to use this option can be found runningarouteserverclients-from-euroix--help-merge-from-custom-file.v0.24.1Improvement: add support forbgpq4.At least version 0.0.5 is required.Related:PR #53 on GitHub.Fix:clients-from-euroixcommand, route server detection on Euro-IX schema versions 0.7 and 1.0.In version 0.7 and 1.0 of theEuro-IX member list JSON filethe way the route server information are exported changed. Theclients-from-euroixcommand was no longer able to filter out the IP addresses that represent the route server of the same IXP for which the members are processed, basically generating a client entry for the same route server being configured.v0.24.0New feature:never via route-serversASNs filtering.To drop routes containing an ASN which is classified as “never via route-servers” on PeeringDB (info_never_via_route_serversattribute).Please note: this feature is enabled by default.Related:issue #55 on GitHub.Improvement: addalice-lg/birdwatchersupport to BIRD configs.Changes the default BIRD time format to supportalice-lg/birdwatcherout of the box.Improvement: include a table with the reject codes in the HTML output.Related:issue #54 on GitHub.v0.23.0New: add support for BIRD v2.Please note: BIRD v2 support is in early stages. Before moving any production platform to instances of BIRD v2 configured with this tool, please review the configurations carefully and run some simulations.New: OpenBGPD/OpenBSD 6.6, OpenBGPD Portable 6.6p0 and BIRD 1.6.8 added to the integration testing suite.v0.22.2Fix: prevent environment variables with unknown escapes (likeu) from interrupting the execution.Related:issue #50 on GitHub.v0.22.1Fix: handle more formats for ROAs exported from the public instances of RIPE and NTT validators.A new way of representing ASNs (without the “AS” prefix) and new TA names which were not matched by the default values ofrpki_roas.allowed_trust_anchorsprevented ROAs from being imported and correctly processed when the default settings were used.v0.22.0This is the last release of ARouteServer for which Python 2.7 compatibility is guaranteed. From the next release, any new feature will not be tested against that version of Python.New:OpenBGPD Portable <https://github.com/openbgpd-portable/openbgpd-portable>(release 6.5p1) also supported.Release 6.5p1 of OpenBGPD Portable edition passed the integration testing suite.New: add support for OpenBGPD/OpenBSD 6.5 enhancements.Support for matching multiple communities at the same time allows to create more readable configurations.Improvement: OpenBGPD, some filters refinement.Avoid checking AS0 in AS_PATH since 6.4.
No needs to check routes of an address family different than the one used for the session.As announced with release 0.20.0, OpenBGPD/OpenBSD 6.2 is no longer tested. Also OpenBGPD/OpenBSD 6.3 tests have been decommissioned.
Starting with this release, tests will be executed only against the 2 most recent releases of OpenBGPD/OpenBSD and against the last release of the supported major versions of BIRD.
The implementation of new features may break compatibility of the configurations built for unsupported releases.v0.21.1Deprecation: SAVVIS IRR removed from the list of default sources used by bgpq3.Fix (minor): truncate the max length of AS-SET names to 64 characters.BIRD supports only names no longer than 64 characters.Related:issue #47 on GitHub.v0.21.0Improvement: whenripe-rpki-validator-cacheis set as the source of ROAs, multiple URLs can now be specified to fetch data from.URLs will be tried in the same order as they are configured; if the attempt to download ROAs from the first URL fails, the second URL will be tried, an so on.By default, theRIPE NCC public instanceof the RIPE RPKI Validator will be tried first, then theNTT instance. The list of URLs can be set in thegeneral.ymlconfiguration file,roas.ripe_rpki_validator_urloption.v0.20.0This is the last release of ARouteServer for which OpenBGPD/OpenBSD 6.1 and 6.2 CI tests are ran. From the next release, any new feature will not be tested against these versions of OpenBGPD. Users are encouraged to move to newer releases.New: add support for OpenBGPD/OpenBSD 6.4enhancements.Use new sets for prefixes, ASNum, and origins (prefix + source-as), and also RPKI ROA sets.Improvement: OpenBGPD, reduce the number of rules by combining some into the same rule.Improvement: route server policies definition files built using theconfigurecommand now have RPKI BGP Origin Validation and “use-ROAs-as-route-objects” enabled by default.As announced with release 0.19.0, OpenBGPD/OpenBSD 6.0 is no longer tested.
The implementation of new features may break compatibility of the configurations built for unsupported releases.Most of this release is based on the work made byClaudio Jeker.v0.19.1Fix (BIRD configuration only): changebgp_path.lastwithbgp_path.last_nonaggregated.When a route is originated from the aggregation of two different routes using the AS_SET,bgp_path.lastalways returns 0, so the origin ASN validation against IRR always fails.Related:issue #34 on GitHub.v0.19.0This is the last release of ARouteServer for which OpenBGPD/OpenBSD 6.0 CI tests are ran. Starting with the next release, any new feature will not be tested against version 6.0 of OpenBGPD. Users are encouraged to move to newer releases.New: use NIC.BR Whois data from Registro.br to enrich the dataset used for route validation.Details:RIPE76, Practical Data Sources For BGP Routing Security.Related:issue #28 on GitHub.New: introduce support for OpenBGPD/OpenBSD 6.4.OpenBSD 6.4 is not released yet, this is just in preparation of it.Related:issue #31 on GitHub.Fix (minor): RIPE NCC RPKI Validator v3 expectsAccept: text/jsonas HTTP header.Related:PR #29 on GitHub.v0.18.0New: add support for BIRD 1.6.4 and OpenBGPD/OpenBSD 6.3.This releasebreaks backward compatibility(OpenBGPD configs only): the default target version used to build OpenBGPD configurations (when the--target-versionargument is not given) is now 6.2; previously it was 6.0. Use the--target-version6.0command line argument to build 6.0 compatible configurations.Improvement: transit-free ASNs filters are applied also to sessions toward transit-free peers.Related:issue #21 on GitHub.Fix (minor): better handling of user answers inconfigureandsetupcommands.Fix:clients-from-peeringdb, list of IXPs retrieved from PeeringDB and no longer from IXFDB.v0.17.3Fix:clients-from-euroixcommand, use the configured cache directory.v0.17.2Fix:configurecommand, omit extended communities for OpenBGPD configurations.This is to avoid the need of using the--ignore-issuesextended_communitiescommand line argument.Improvement: environment variables expansion when YAML configuration files are read.v0.17.1Fix: minor installation issues.v0.17.0New feature: allow to set the source of IRR objects.AS-SETs can be prepended with an optional source:RIPE::AS-FOO,RIPE::AS64496:AS-FOO.New feature: support for RPKI-based Origin Validation added to OpenBGPD configurations.RPKI ROAs must be loaded from a RIPE RPKI Validator cache file (local or via HTTP).
Mostly inspired by Job Snijders’ toolhttps://github.com/job/rtrsubImprovement: RPKI ROAs can be loaded from a local file too.The file must be in RIPE RPKI Validator cache format.Fix (minor): remove internal communities before accepting blackhole routes tagged with a custom blackhole community.This bug did not affect routes tagged with the BLACKHOLE community; anyway, the internal communities were scrubbed before routes were announced to clients.v0.16.2Fix: avoid empty lists of prefixes when a client’swhite_list_prefcontains only prefixes for an IP version different from the current one.v0.16.1Fix: handle the new version of the JSON schema built byarin-whois-bulk-parser.v0.16.0Improvement: OpenBGPD, more flexibility for inbound communities values.This allows to use inbound ‘peer_as’ communities which overlap with other inbound communities whose lastpartis a private ASN.New feature: use ARIN Whois database dump to authorize routes.This feature allows to accept those routes whose origin ASN is authorized by a client AS-SET, whose prefix has not a corresponding route object but is covered by an ARIN Whois record for the same origin ASN.Improvement: extend the use ofRPKI ROAs as route objectsandARIN Whois database dumptotag_as_set-only mode.Before of this, theRPKI ROAs as route objectsandARIN Whois DB dumpfeatures were used only when origin AS and prefix enforcing was set.
Starting with this release they are used even when enforcing is not configured and only thetag_as_setmode is used.v0.15.0New feature:configureandshow_configsupportcommands.configure: it can be used to quickly generate a route server policy definition file (general.yml) on the basis of best practices and suggestions.show_config: to display current configuration settings and also options that have been left to their default values.New feature:ixf-member-exportcommand, to buildIX-F Member Export JSON filesfrom the list of clients.Improvement: cache expiry time values can be set for each external resource type: PeeringDB info, IRR data, …v0.14.1Fix: BIRD, “Unknown instruction 8574 in same (~)” error when reloading IPv6 configurations.Amissing casefor the!~operator triggers this bug when neighbors are established and trying to reload bird6 configuration.Related:issue #20 on GitHub.v0.14.0This releasebreaks backward compatibility(OpenBGPD configs only): for OpenBGPD configurations, starting with this release the Site of Origin Extended BGP communities in the range 65535:* (soo 65535:*) are reserved for internal reasons.New feature: use RPKI ROAs as if they were route objects.This feature allows to accept those routes whose origin ASN is authorized by a client AS-SET, whose prefix is not but it is covered by a RPKI ROA for the same origin ASN.Related:issue #19 on GitHub.New feature: automatic checking for new releases.This can be disabled by settingcheck_new_releaseto False inarouteserver.yml.Improvement: routes accepted solely because of awhite_list_routeentry are now tagged with theroute_validated_via_white_listBGP community.Fix: on OpenBGPD configurations, in case of duplicate definition of a client’s AS-SETs, duplicate BGP informational communities were added after the IRR validation process.v0.13.0New feature: an option to set RFC1997 well-known communities (NO_EXPORT/NO_ADVERTISE) handling policy: pass-through or strict RFC1997 behaviour.Thisbreaks backward compatibility: previously, NO_EXPORT/NO_ADVERTISE communities were treated accordingly to the default implementation of the BGP speaker daemon (BIRD, OpenBGPD). Now, ARouteServer’s default setting is to treat routes tagged with those communities transparently, that is to announce them to other clients and to pass-through the original RFC1997 communities.Improvement: when using PeeringDB records to configure the max-prefix limits, a margin is took into account to accomodate networks that fill the PeeringDB records with their exact route announcement count.Thisbreaks backward compatibility: if using max-prefix from PeeringDB, current limits will be raised by the default increment values (+100, +15%): this behaviour can be reverted to the pre-v0.13.0 situation by explicitly setting themax_prefix.peering_db.incrementconfiguration section to0/0.Related:issue #12 on GitHub.New feature: client-level white lists for IRRdb-based filters.This allows to manually enter routes that must always be accepted by IRRdb-level checks and prefixes and ASNs that must be treated as if they were included within client’s AS-SETs.Related:issue #16 on GitHub.v0.12.3Improvement: always take the AS*n* macro into account when building IRRdb-based filters.Related:issue #15 on GitHub.v0.12.2Fix: an issue on OpenBGPD builder class was preventing features offered via large BGP communities only from being actually implemented into the final configuration.Related:issue #11 on GitHub.v0.12.1Fix an issue that was impacting templates upgrading under certain circumstances.Related:issue #10 on GitHub.v0.12.0OpenBGPD 6.2 support.New feature:Graceful BGP session shutdownsupport, to honor GRACEFUL_SHUTDOWN communities received from clients and also to perform graceful shutdown of the route server itself (--perform-graceful-shutdowncommand line argument).v0.11.0Python 3.4 support.Improvement: GT registry removed from the sources used to gather info from IRRDB.Related:PR #8 on GitHub.Improvement: multiple AS-SETs used for the same client are now grouped together and queried at one time.
This allows to leverage bgpq3’s ability and speed to aggregate results in order to have smaller configuration files.v0.10.0New feature: when IRRDB-based filters are enabled and no AS-SETs are configured for a client, if thecfg.filtering.irrdb.peering_dboption is set ARouteServer tries to fetch their values from the client’s ASN record on PeeringDB.Related:issue #7 on GitHub.Improvement: config building process performances,reduced memory consumption by moving IRRDB information from memory to temporary files;responses for empty/missing resources are also cached;fix a wrong behaviour that led to multiple PeeringDB requests for the same ASN.Improvement:clients-from-euroixcommand, the new--merge-from-peeringdboption can be used to integrate missing information into the output clients list by fetching AS-SETs and max-prefix limit from PeeringDB.v0.9.3Fix: OpenBGPD, an issue was causing values > 65535 to be used in standard BGP communities matching.v0.9.2Fix: remove quotes from clients description.Fix: OpenBGPD, syntax error for prefix lists with ‘range X - X’ format.Fix:clients-from-euroixcommand, members with multiplevlanobjects with the samevlan_idwere not properly listed in the output, only the first object was used.v0.9.1Improvement: BIRD, new default debug options (states, routes, filters, interfaces, events, wasall).If needed, they can be overwritten using theheadercustom .local file.Fix:enricherserrors handling reported a generic message with no further details.Fix: HTTP 404 error handling for “Entity not found” error from PeeringDB.Fix: OpenBGPD, large prefix lists were causing a “string too long” error.Fix: OpenBGPD, clients descriptions longer than 31 characters were not properly truncated.v0.9.0New feature: RTT-based communities to control propagation of routes on the basis of peers round trip time.Improvement: in conjunction with the “tag” reject policy, therejected_route_announced_byBGP community can be used to track the ASN of the client that announced an invalid route to the server.Fix: when the “tag” reject policy is used, verify that thereject_causeBGP community is also set.v0.8.1Fix: default user configuration path not working.v0.8.0New feature:reject policyconfiguration option, to control how invalid routes must be treated: immediately discarded or kept for troubleshooting purposes, analysis or statistic reporting.New tool:invalid routes reporter.Fix: the following networks have been removed from the bogons.yml file: 193.239.116.0/22, 80.249.208.0/21, 164.138.24.80/29.v0.7.0New feature:custom BGP communitiescan be configured on a client-by-client basis to tag routes entering the route server (for example, for informative purposes).Fix: validation of BGP communities configuration for OpenBGPD.Error is given if a peer-AS-specific BGP community overlaps with another community, even if the last part of the latter is a private/reserved ASN.Improvement: the custom!include <filepath>statement can be used now in YAML configuration files to include other files.More detailshere.Improvement: IRRDB-based filters can be configured to allow more specific prefixes (allow_longer_prefixesoption).v0.6.0OpenBGPD 6.1 support: enable large BGP communities support.Improvement: theclients-from-peeringdbcommand now uses theIX-F databaseto show a list of IXP and their PeeringDB ID.Improvement: enable NEXT_HOP rewriting for IPv6 blackhole filtering requests on OpenBGPD afterOpenBSD 6.1 fixup.Related:issue #3.Improvement: BIRD, client-level.local file.Improvement: next-hop checks, theauthorized_addressesoption allows to authorize IP addresses of non-client routers for NEXT_HOP attribute of routes received from a client.v0.5.0Fix: avoid the use of standard communities in the range 65535:x.Improvement: option to set max-prefix restart timer for OpenBGPD.Deleted feature: tagging of routes a’ la RPKI-Light has been removed.Thereject_invalidflag, that previously was on general scope only, now can be set on a client-by-client basis.Theroa_valid,roa_invalid, androa_unknowncommunities no longer exist.Related:issue #4 on GitHubThisbreaks backward compatibility.New feature:BIRD hooksto add site-specific custom implementations.Improvement:BIRD local files.Thisbreaks backward compatibility: previously, *.local, *.local4 and *.local6 files that were found in the same directory where the BIRD configuration was stored were automatically included. Now, only the header([4|6]).local and footer([4|6]).local files are included, depending on the values passed to the--use-local-filescommand line argument.Improvement:setupcommand and program’s configuration file.The default path of the cache directory (cache_diroption) has changed: it was/var/lib/arouteserverand now it iscache, that is a directory which is relative to thecfg_diroption (by default, the directory where the program’s configuration file is stored).v0.4.0OpenBGPD support (somelimitationsapply).Add MD5 password support on clients configuration.Thebuildcommand used to generate route server configurations has been removed in favor of BGP-speaker-specific sub-commands:birdandopenbgpd.v0.3.0New--test-onlyflag for builder commands.New--clients-from-euroixcommandto build theclients.ymlfile on the basis of records from anEuro-IX member list JSON file.This also allows theintegrationwithIXP-Manager.New BGP communities: add NO_EXPORT and/or NO_ADVERTISE to any client or to specific peers.New option (set by default) to automatically add the NO_EXPORT community to blackhole filtering announcements.v0.2.0setup-templatescommand to just sync local templates with those distributed within a new release.Multithreading support for tasks that acquire data from external sources (IRRDB info, PeeringDB max-prefix).Can be set using thethreadsoption in thearouteserver.ymlconfiguration file.Newtemplate-contextcommand, useful to dump the list of context variables and data that can be used inside a template.New empty AS-SETs handling: if an AS-SET is empty, no errors are given but only a warning is logged and the configuration building process goes on.Any client with IRRDB enforcing enabled and whose AS-SET is empty will have its routes rejected by the route server.v0.1.2Fix local files usage among IPv4/IPv6 processes.Before of this release, only.localfiles were included into the route server configuration, for both the IPv4 and IPv6 configurations.
After this,.localfiles continue to be used for both the address families but.local4and.local6files can also be used to include IP version specific options, depending on the IP version used to build the configuration. Detailshere.To upgrade:# pull from GitHub master branch or use pip:pipinstall--upgradearouteserver# install the new template files into local systemarouteserversetupv0.1.1Add local static files into the route server’s configuration.v0.1.0First beta version.v0.1.0a11Thefiltering.rpslsection of general and clients configuration files has been renamed intofiltering.irrdb.The command line argument--template-dirhas been renamed into--templates-dir.New options in the program’s configuration file:bgpq3_hostandbgpq3_sources, used to set bgpq3-hand-Sarguments when gathering info from IRRDBs.v0.1.0a10New command to build textual representations of configurations:html.v0.1.0a9New command to initialize a custom live test scenario:init-scenario.v0.1.0a8New feature: selective path prepending via BGP communities.Thecontrol_communitiesgeneral option has been removed: it was redundant.v0.1.0a7Improved communities configuration and handling.Fix issue on standard communities matching against 32-bit ASNs.Fix issue on IPv6 prefix validation.v0.1.0a6New feature: RPKI-based filtering/tagging.v0.1.0a5New feature: transit-free ASNs filtering.Program command line: subcommands +clients-from-peeringdb.More logging and some warning.v0.1.0a4Fix issue with GTSM default value.Add default route to bogons.Better as-sets handling and cache handling.Config syntax change: clients ‘as’ -> ‘asn’.AS-SETs at AS-level.Live tests: path hiding mitigation scenario.Improvements in templates.v0.1.0a3Fix some cache issues.v0.1.0a2Packaging.System setup viaarouteserver--setup.v0.1.0a1First push on GitHub.