Here is a demo of the tool I developed from scratch in this GSoC'24 project:
GSOC_BGP_Monitor_Demo_Arnab_Ghosh.mp4
Network operators need to monitor the global reachability of their IP prefixes every time they update their routing policies or make BGP announcements.
This project addresses this need by providing a monitoring dashboard on the IHR website that allows network operators, policymakers, and other stakeholders to easily track how a prefix propagates across the Internet. The tool takes a prefix from the user, along with a RIS collector and the maximum number of hops from the monitored prefix to display. Once the user presses the 'play' button, the tool connects to RIS Live with the specified parameters and visualizes the AS paths received in a Sankey diagram. The data is continuously updated with new BGP information, ensuring real-time monitoring.
- Created a monitoring dashboard using Vue.js, JavaScript, Quasar UI, and Plotly.js.
- Integrated the RIS Live
WebSocket API
for primary data collection. - Wrote custom optimized JavaScript logic to generate
visualization data for AS paths and line charts
for BGP announcements and withdrawals. - Overall, I
optimized and modularized
all the code to handle displaying1000+
messages while maintaining the website's responsiveness without overwhelming the browser. - Integrated the
GitHub API
to fetch additional BGP community information from a third-party repository NLNOG/lg.ring.nlnog.net , automatically retrieving andprocessing .txt files with CSV data
. This includes filtering out invalid or inconsistent data and extracting valid BGP community descriptions. - Developed four custom
wildcard patterns
and regular expressions to identify BGP communities from the fetched data. - Integrated the AsNames.js
plugin
to retrieve all AS names and country codes. - Wrote filtering logic to
automatically update
BGP peer messages when new data is received or when viewing past BGP messages. - Added a
feature
that allows users to view past BGP messages by implementing a timestamp slider or by clicking on a specific timestamp in the line chart, which updates the Sankey diagram and messages table to reflect the data at that particular time.
My work is in a dedicated branch named gsoc24,It has currently been merged into the dev
branch PR link, which will later be merged into the master
branch.
Files involved:
The primary requirements for this project have been completed, and the first version of the tool is now ready. Below are items left for future versions of the tool:
- Add more charts, for example, the number of AS repetitions over time.
- Currently, the AS info description about a particular AS is fetched from a file asnames.txt, which is outdated. We need to fetch the data from the IYP.
- Due to time constraints, the tool currently does not support more or less specific prefixes.
I want to extend my sincere thanks to my mentors for always guiding me and creating a friendly environment where I felt comfortable discussing and asking questions. The experience I gained from working on IHR with them has taught me a lot.