====== 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