IPv6 Global Routing | GSoC '25

40 views
Skip to first unread message

Shashwat Patni

unread,
May 20, 2025, 4:04:11 PMMay 20
to ns-developers
Hello All,
This is meant as an introduction Email

I am Shashwat , a CS Undergrad Student at BITS Pilani. I will be working on the "IPv6 Global Routing" Project this summer. For details about the project please visit the Wiki Page.
Also Please feel free to jump in on discussions for the project on Zulip and Gitlab.

Thanks,
Shashwat Patni

Shashwat Patni

unread,
Jul 22, 2025, 1:13:06 PMJul 22
to ns-developers
Hello All,
We are almost halfway Into the GSoC Coding period and it has been an amazing experience so far.
We Completed Milestone 1 for the Project and created an MR for the same gitlab.com/nsnam/ns-3-dev/-/merge_requests/2508 .
As Always, Concerns Reviews suggestions recommendations and any debates on related topics of/for the project are always welcome on gitlab and/or zulip.

Here is a week wise run down for the project so far.

Week 1
Duration: 2 June - 9 June


  •     Designed tests for the Ipv4GlobalRouting module, focusing on the GlobalRouteManagerImpl class.
  •     Created a draft merge request for the new tests to be reviewed.
  •    We discussed and Decided to use Link-Local Addresses as next-hops in routing table entries.

Week 2
Duration: 10 June - 17 June


  •     Started templatizing the Ipv4GlobalRouting classes to make them generic.
  •     Created a draft merge request for the templatization work.

Week 3
Duration: 18 June - 23 June


  •     Finished templatizing ipv4-global-routing into generic classes; all tests and CI passed.
  •     Found and fixed bugs related to Equal Cost Multipath (ECMP) topologies.
  •     Discussed the downsides of templates, like complexity and cryptic compiler errors, and considered other approaches.

Week 4
Duration: 24 June - 30 June


  •     Created a draft merge request for Milestone 1.
  •     Decided to keep separate Ipv[4,6]RoutingHelper classes for compatibility, while the manager classes remain templated.
  •     Started developing two alternatives—one using static polymorphism and one using templates—to find the best design.
  •     Identified a possible performance improvement: caching a Ptr<Node> in the SPF vertex to avoid lookups.

Week 5
Duration: 1 July - 8 July


  •     Worked on a dynamic approach using runtime checks to support IPv6.
  •     Looked into using C++20 Concepts to get clearer compiler errors than SFINAE.
  •     Used std::optional to explore design implications in the dynamic approach.

Week 6
Duration: 9 July - 15 July


  •     Found that dynamic polymorphism caused too many address type conversions and a lot of if/else branches and planned to develop a hybrid version.
  •     Worked on merge request comments and a bug related to StubNetwork.

Week 7
Duration: 16 July - 22 July


  •     Ultimately we decided to go forward with the static polymorphism as the final design approach for the project due to its benefits.
  •     Submitted the Milestone 1 merge request for the project, which is now open for active review.

Thank You
Shashwat Patni
Reply all
Reply to author
Forward
0 new messages