Skip to content

ArnabBCA/GSoC-24

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 

Repository files navigation

GSoC'24 Final Report - Arnab Ghosh

Organization: Internet Health Report (IHR)
Project: Real Time BGP Monitor
Student: Arnab Ghosh
Mentors: Romain Fontugne, Dimitrios Panteleimon Giakatos, Emile Aben

Project Demo

Here is a demo of the tool I developed from scratch in this GSoC'24 project:

GSOC_BGP_Monitor_Demo_Arnab_Ghosh.mp4

About the Project

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.

My Work

  • 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 displaying 1000+ 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 and processing .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.

What code got merged?

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:

Screenshorts

GSoC'24 SS

What’s left to do?

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.

Final thoughts

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.

About

Google Summer of Code'2024, Final Report

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published