GSoC'25 Final Work Report - Arnab Ghosh
Google Summer of Code 2025, final work report.
Organization: Internet Health Report (IHR)
Project: Integration of BGPlay API and Improving BGP Monitoring
Dashboard
Project Info:
Link
Student: Arnab Ghosh
Mentors: Romain Fontugne, Malte Tashiro, Dimitrios Panteleimon Giakatos, Emile Aben
About the project
This project is a continuation of the GSoC 2024 project Real-Time BGP Monitor, which was also developed by me 😎, see 2024 work report.
While the previous version of the tool was highly effective for real-time BGP monitoring, it lacked the ability to review past BGP events. To address this limitation, we integrated the BGPlay API, which allows users to explore historical BGP events for a specified time duration while still preserving real-time monitoring functionality.
We also introduced several enhancements to the BGP monitoring dashboard, including new visualizations for BGP Sources and RPKI Status Validation, along with an index-based navigation system that enables users to view specific BGP messages, which was not possible in the earlier version of the tool.
My Work Summary
- Integrated BGPlay API into the Real-Time BGP Monitor (GSoC’24) to enable historical BGP event visualization alongside real-time monitoring.
- Developed a custom RPKI status indicator to provide route validation insights.
- Added an index-based navigation feature to view individual BGP events.
- Added two new visualizations to monitor Origin ASN and Global RPKI status.
- Refactored and modularized the existing codebase, reducing redundancy by 20%.
- Reduced the time complexity of searching BGP communities from O(n²) to O(1).
- Improved overall performance and efficiency of the tool by 30%.
PRs Merged
PR #1015
- After resetting BGPlay and fetching again without changing parameters the the internal Prefix Length was set to null causing wrong RPKI status.
- Handled a undefined
.size
edge case on RisLIve when we get a Withdrawn before Announcement.
PR #1013
- Added a dialog box which shows messages received from the BGPlay response
data.messages[]
. If there are messages then the complete response data is ignored. For example"Data is only available until 2025-09-04 07:59:52! Query time has been changed."
- Fixed a UX bug where the zoomed chart layout persisted after resetting
- Changed the behaviour of the date time picker, now it will apply the date time only after clicking the "Apply" button.
PR #1008
- Fetched VRPs from the rpki-history/api/vrp
- Implemented
getRPKIStatus
function similar to rpki-history/api/status - Added RPKI Status in the table and a new Global RPKI Status Bar Chart
- Split No of Announce BGP Sources Line Chart into No of Announce BGP Origins
- UI and Layout Improvements
PR #1004
- Added a new line chart for number of BGP sources
PR #1002
- Added controls (Next and Previous buttons), this method uses index based approach to navigate and view specific BGP messages.
- Optimized and reduced redundancy in generating line chart data.
- Bug Fixed - Sorted RisLive all raw messages, sometimes the timestamps differed by few seconds (old messages came after new messages). This issue went unnoticed earlier since only the time range slider was used, not the new Next and Previous buttons.
PR #997
- Added RRC locations in the input box for RIS Live similar to BGPlay
- Added an option to sort the table by any column
PR #995
- This PR fixes the determination of RIS Live message types (Announcements and Withdrawals). It uses the ip-address library to convert both the user monitored prefix and the prefixes in the message's Announcements and Withdrawals arrays into their RFC 5952 canonical form. For example: Input: 2001:0db8:0000:0000:0000:0000:0000:0001 Output: 2001:db8::1
PR #993
- Implemented BGPlay Line Chart Data (Announcements and Withdrawals)
PR #992
- Modified and implemented the BGP Messages table and Sankey chart
- Added a button that allows the user to switch between the Initial State messages and the time range slider
- Merged The Initial State data with the events (The user does not have to switch manually)
- Optimized and removed unnecessary iterations within the BGP Messages table
- Added a browser alert if the selected time range is more then a week.
PR #988
- Integrated the BGPlay API
- Generated the required data to match the RIS Live data
- Filtered the initial state data to exclude sources whose RRCs were not selected by the user
- Added AS and community information
- Split and refactored existing code logic to remove redundancy
- Reset data and disabled the input/button when the tool is in use.
- Improved the community matching logic by replacing slow loop based matching with pre-generated community combinations stored in an object, allowing fast O(1) lookups
PR #987
- Added Initial UI elements and two Data Source option Ris-Live and BGPlay
Files involved
Screenshorts
Main Input Controls
Announcements AS Path
BGP Origins
No of Announcements and Withdrawals over time
RPKI Status
RPKI Data, Validated ROA Payloads (VRPs)
Detailed BGP messages information
What’s left to do?
I am currently working on adding some small improvements and features to the tool. Below are some features which are pending.
- Real-Time rpki status validation for Ris-Live Data source
- Event Overview Panel
Final thoughts
I am very thankful for the opportunity given to me again this year and in 2024. It has truly exposed me to technologies especially Computer Networks and BGP, that I might not have explored on my own. The experience was full of learning, and I am deeply grateful for the guidance, advice, and time my mentors spent reviewing my work. I hope to stay in touch with the IHR team to continue contributing by helping and add new features to the tool.