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