Kyro is a set of python daemons designed to measure realtime network performance and inject optimal routes into a BGP router.
- Uses ICMP packets and IP TTL to map out network paths
- Implements BGP4 protocol and can peer with BGP routers
- Written in Python using the Twisted event framework
There are two daemons: router.py and analyzer.py
Router.py uses Kyro's BGP library to listen for best-path route updates from a BGP speaking router. These route updates are used to populate a list of prefixes that should be optimized.
Analyzer.py continuously checks the packet loss and mean round trip time for each prefix over each path. If a more optimal path is found than the current best-path, analyzer.py will ask router.py to inject the new route into the BGP router's routing table.
- Twisted - http://twistedmatrix.com/trac/wiki/Downloads
- matplotlib - http://matplotlib.sourceforge.net/
Run router.py --help for more information.