====== BirdPlan ======
^ Components ^^
| [[https://gitlab.oscdev.io/software/birdplan|BirdPlan]] | [[https://gitlab.oscdev.io/software/birdplan/-/commits/master|{{https://gitlab.oscdev.io/software/birdplan/badges/master/pipeline.svg?.png?}}]] [[https://gitlab.oscdev.io/software/birdplan/-/commits/master|{{https://gitlab.oscdev.io/software/birdplan/badges/master/coverage.svg?.png?}}]] |
| [[https://gitlab.oscdev.io/software/nsnetsim|nsnetsim]] | [[https://gitlab.oscdev.io/software/nsnetsim/-/commits/master|{{https://gitlab.oscdev.io/software/nsnetsim/badges/master/pipeline.svg?.png?}}]] [[https://gitlab.oscdev.io/software/nsnetsim/-/commits/master|{{https://gitlab.oscdev.io/software/nsnetsim/badges/master/coverage.svg?.png?}}]] |
| [[https://gitlab.oscdev.io/software/birdclient|birdclient]] | [[https://gitlab.oscdev.io/software/birdclient/-/commits/master|{{https://gitlab.oscdev.io/software/birdclient/badges/master/pipeline.svg?.png?}}]] [[https://gitlab.oscdev.io/software/birdclient/-/commits/master|{{https://gitlab.oscdev.io/software/birdclient/badges/master/coverage.svg?.png?}}]] |
===== Purpose =====
Tool to automatically configure [[https://bird.network.cz/|BIRD]] and unit test configurations, because proper BGP configuration for a carrier/ISP with a somewhat complete featureset is a complex task.
We will be using a new advanced network virtualization system that is capable of spinning up hundreds thousands of routers to create testing scenarios like this...
{{projects:birdplan:diagram.png?direct&400|}}
===== Features =====
* BGP configuration
* Peer types: customer, internal, peer, rrclient, rrserver, rrserver-rrserver, routecollector, routeserver, transit
* OSPF configuration
* RIPv2 configuration
===== Technologies =====
* Python
* [[https://bird.network.cz|BIRD]] - Bird Internet Routing Daemon
* Networking protocols: BGP, RIPv2, OSPF
* Network simulation using light weight network namespaces
* [[https://oscdev.io/software/nsnetsim|nsnetsim]] - Network simulation
* [[https://oscdev.io/software/birdclient|birdclient]] - Python library for parsing BIRD output
===== Challenges =====
* Conversion of code base from python 2 to clean python 3
===== TODO =====
* Pull in static config
* Unit tests
* Pull in RIP configuration
* Pull in OSPF configuration
* Pull in BGP configuration
* Support for RPKI
* Tests tests tests!
* Better documentation for nsnetsim code
* Better documentation for birdclient code
* Documentation for birdplan code