Skip to content

rhicks/bgp-dashboard

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
log
 
 
 
 
 
 

BGP Dashboard

A "realtime" web view of your BGP network

  • Who do I peer with?
  • How many routes do I receive from my peers?
  • Who do I use for tranist?
  • What AS path does a prefix take out of my network?
  • How many routes and autonomous systems do I see?
  • BGP Looking Glass (IPv4/IPv6/ASN)

How it works

This is beta code.

  • BGP peering session using GoBGP
  • GoBGP pipes BGP information into MongoDB
  • Flask App queries MongoDB to build website and JSON API
This project uses three Docker containers
GoBGP

The GoBGP container serves two functions:

  • Peer with the "real" network
    • Configure gobgpd.conf to peer with the real network.
    • Only IPv4-Unicast and IPv6-Unicast supported at this time.
  • Pass BGP updates into BGP
    • The gobgp_to_mongo.py script pipes the JSON updates from GoBGP into the MongoDB container
MongoDB
  • Mongo receives JSON updates from the GoBGP container
  • The Flask App queries Mongo for relevant information
Flask
  • Flask presents a Dashboard for realtime BGP updates
  • A JSON API is used on the backend to support the frontend and display Looking Glass queries

Screenshot

screenshot

Install

$ git clone https://github.com/rhicks/bgp-dashboard.git
$ cd bgp-dashboard
$ # modify ./gobgp/gobgpd.conf to peer with your network
$ # modify ./flask/app/constants.py globals to use your ASN and BGP communities
$ docker-compose build
$ docker-compose up (watch the log to verify BGP peeering is established)

Todo

  • ???