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
arouteserver bgp bgp-daemon bird internet-exchange ixp ixp-manager ixps network-automation openbgpd peering route-server routing

.. DO NOT EDIT: this file is automatically created by /utils/build_doc

ARouteServer

|Documentation| |Build Status| |Unique test cases| |PYPI Version| |Python Versions|

A Python tool to automatically build (and test) feature-rich configurations for BGP route servers.

How it works

. Two YAML files provide general policies and clients configurations options:

.. code:: yaml

  cfg:
    rs_as: 64496
    router_id: "192.0.2.2"
    filtering:
      irrdb:
        enforce_origin_in_as_set: True
        enforce_prefix_in_as_set: True
      rpki_bgp_origin_validation:
        enabled: True
        reject_invalid: True
        ...

.. code:: yaml

  clients:
    - asn: 64511
      ip:
      - "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/bgpq3 for IRR data, PeeringDB_ for max-prefix limit and AS-SETs, RPKI ROAs, ...

. Jinja2_ built-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) and OpenBGPD (OpenBSD >= 7.0 also OpenBGPD Portable >= 7.0) are supported, with almost feature parity <https://arouteserver.readthedocs.io/en/latest/SUPPORTED_SPEAKERS.html#supported-features>__ between them.

Validation and testing of the configurations generated with this tool are performed using the built-in live tests framework: Docker_ instances are used to simulate several scenarios and to validate the behaviour of the route server after configuring it with ARouteServer. More details on the Live tests <https://arouteserver.readthedocs.io/en/latest/LIVETESTS.html>__ section.

A Docker-based playground <https://github.com/pierky/arouteserver/tree/master/tools/playground>__ is available to experiment with the tool in a virtual IXP environment.

Also, a Docker image <https://hub.docker.com/r/pierky/arouteserver>__ is provided to start building rich and secure configurations in a couple of minutes.

.. _bgpq3: https://github.com/snar/bgpq3 .. _bgpq4: https://github.com/bgp/bgpq4 .. _PeeringDB: https://www.peeringdb.com/ .. _Jinja2: http://jinja.pocoo.org/ .. _Docker: https://www.docker.com/

Features

A comprehensive list of features can be found within the comments of the distributed configuration file on GitHub <https://github.com/pierky/arouteserver/blob/master/config.d/general.yml> or on the documentation web page <https://arouteserver.readthedocs.io/en/latest/GENERAL.html>.

More feature are already planned: see the Future work <https://arouteserver.readthedocs.io/en/latest/FUTUREWORK.html>__ section for more details.

.. _RFC7947: https://tools.ietf.org/html/rfc7947 .. _RFC7948: https://tools.ietf.org/html/rfc7948 .. _RFC9234: https://tools.ietf.org/html/rfc9234 .. _RFC5082: https://tools.ietf.org/html/rfc5082 .. _RFC7911: https://tools.ietf.org/html/rfc7911 .. _RFC8950: https://tools.ietf.org/html/rfc8950

Full documentation

Full documentation can be found on ReadTheDocs: https://arouteserver.readthedocs.org/

Presentations

Mentions / endorsements:

Who is using ARouteServer?

Are you using it? Do you want to be listed here? Drop me a message <https://pierky.com/#contactme>__!

\ :sup: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 an issue on GitHub <https://github.com/pierky/arouteserver/issues> or drop me a message <https://pierky.com/#contactme>.

A Slack channel is also available on the network.toCode() <https://networktocode.herokuapp.com/>__ community: arouteserver.

Author

Pier Carlo Chiodi - https://pierky.com

Blog: https://blog.pierky.com Twitter: @pierky <https://twitter.com/pierky>_

.. |Documentation| image:: https://readthedocs.org/projects/arouteserver/badge/?version=latest :target: https://arouteserver.readthedocs.org/en/latest/?badge=latest .. |Build Status| image:: https://github.com/pierky/arouteserver/actions/workflows/cicd.yml/badge.svg?branch=master :target: https://github.com/pierky/arouteserver/actions/workflows/cicd.yml .. |Unique test cases| image:: https://img.shields.io/badge/dynamic/json.svg?uri=https://raw.githubusercontent.com/pierky/arouteserver/master/tests/last.json&label=unique%20test%20cases&query=$.unique_test_cases&colorB=47C327 :target: https://github.com/pierky/arouteserver/blob/master/tests/last .. |PYPI Version| image:: https://img.shields.io/pypi/v/arouteserver.svg :target: https://pypi.python.org/pypi/arouteserver/ .. |Python Versions| image:: https://img.shields.io/pypi/pyversions/arouteserver.svg :target: https://pypi.python.org/pypi/arouteserver/