GSOC2025Ipv6GlobalRouting: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
No edit summary |
||
(13 intermediate revisions by the same user not shown) | |||
Line 12: | Line 12: | ||
* '''Repository:''' [https://gitlab.com/ShashwatPatni/IPv6GlobalRouting/-/tree/GSoC25?ref_type=heads Link] | * '''Repository:''' [https://gitlab.com/ShashwatPatni/IPv6GlobalRouting/-/tree/GSoC25?ref_type=heads Link] | ||
* '''About Me:''' I am a Pre-final year CS Undergrad student at Bits-Pilani K. K. Birla Goa Campus (BITS Pilani). I like Exploring and Tinkering with code.I am currently exploring the fields of Computer Networks and Distributed Systems. I enjoy solving problems. | * '''About Me:''' I am a Pre-final year CS Undergrad student at Bits-Pilani K. K. Birla Goa Campus (BITS Pilani). I like Exploring and Tinkering with code.I am currently exploring the fields of Computer Networks and Distributed Systems. I enjoy solving problems. | ||
* '''Proposal: ''' [https://docs.google.com/document/d/ | * '''Proposal: ''' [https://docs.google.com/document/d/1EvRRghRgJtvX1y8YsolRdOqN8pKKVK_ucc9SXZKl_ys/edit?usp=sharing Link] | ||
* '''Design Doc: ''' [https://docs.google.com/document/d/126BEGTd0OouWu7KscYEkLI2cqreOKXgxP6OawyZgsxc/edit?usp=sharing Link] | |||
= Milestones = | = Milestones = | ||
These are the current Macro Goals for the project: | |||
Note: For each phase , the plan is to work in the following order of classes: Interface Classes -> Setup Classes -> Route Computation Classes | |||
'''Phase 1:''' | |||
* Port existing Ipv4GlobalRouting to generic GlobalRouting | |||
* Generalize ipv4-global-routing-test-suite and global-route-manager-impl-test-suite | |||
* Create tests and verify GlobalRouting works for Ipv4 after templatization | |||
* Design Tests for Ipv6 Specific Properties for GlobalRouting | |||
* Introduce Type Aliases for IP classes | |||
'''Phase 2:''' | |||
* Extend GlobalRouting to IPv6 | |||
* Handle the Implementation differences of IPv6 | |||
'''Phase 3:''' | |||
* Work On suggested Changes | |||
* Add Documentation For IPv6 GlobalRouting | |||
* Prepare edge Testcases, Check for Bugs , fix any remaining issues | |||
* Discuss any new features to GlobalRouting | |||
= Weekly Reports= | |||
=== Community Bonding Period === | |||
'''Duration: 8 May - 1 June''' | |||
* Working on the patch requirement [https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/2434 !2434] :Adds the Print Route-Path Functionality to GlobalRouting. | |||
* A [https://docs.google.com/document/d/126BEGTd0OouWu7KscYEkLI2cqreOKXgxP6OawyZgsxc/edit?usp=sharing Design Document] has been created to allow for discussions and evolving the design for the project | |||
=== Week 1 === | |||
'''Duration: 2 June - 9 June''' | |||
This week we | |||
*Designed Tests For IPv4 GlobalRouting Specifically tests for the GlobalRouteManagerImpl Class | |||
*Created a draft MR For the tests [https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/2471 !2471] for review | |||
*There was a discussion on if Link Local Addresses or Global Unicast Addresses Should be used as Next Hops in the RoutingTable Entries. Since routers can forward traffic even if they don't have Global Unicast Addresses, it was decided that Link Local Addresses will be used as next hops. | |||
=== Week 2 === | |||
'''Duration: 10 June - 17 June''' | |||
This Week the plan is to: | |||
*Start Templatizing the Ipv4GlobalRouting Classes to Generic Classes | |||
*Create a draft MR for the Same | |||
Currently there are two MRs Open for review [https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/2471 !2471] and [https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/2434 !2434] | |||
=== Week 3 === | |||
'''Duration: 18 June - 23 June''' | |||
This Week we did the following: | |||
* Finished Templatizing ipv4-global-routing classes to generic global-routing classes. The CI and tests pass . The latest version of the code is available at [https://gitlab.com/ShashwatPatni/IPv6GlobalRouting/-/tree/GSoC25?ref_type=heads GSoC25] | |||
* While Working on tests we found a few bugs in the existing implementation related to Equal Cost Multipath Topologies. We worked on resolving them | |||
* We discussed if a templateless approach is possible . Templates are bad because they create a learning curve for the model and the compiler errors may be cryptic for new users.A hybrid version with minimal templatization would be better. | |||
===Week 4 === | |||
'''Duration: 24 June - 30 June''' | |||
* A draft MR [https://gitlab.com/ShashwatPatni/IPv6GlobalRouting/-/merge_requests/2 Link] for Milestone 1 is created. To preserve includes and allow backwards compatibility as well as API consistency , We decided to keep two seperate Ipv[4,6] Global Routing Helpers. The Manager classes were kept templated. Since ipv4-global-routing would behave differently than ipv6-global-routing, we think it best to seperate them as well. | |||
* We decided to develop two alternatives to Global Routing , One using static polymorphism, we have the polymorphic address class for this. The other alternative is "Compile time Polymorphism using templates". The end goal is to choose the design which works the best for the projects goals. | |||
* A few performance improvements for globalRouting are possible. Keeping a Ptr<Node> in the SPF Vertex Itself will avoid its Lookup again in the Algorithm | |||
* |
Latest revision as of 07:37, 4 July 2025
Main Page - Roadmap - Summer Projects - Project Ideas - Developer FAQ - Tools - Related Projects
HOWTOs - Installation - Troubleshooting - User FAQ - Samples - Models - Education - Contributed Code - Papers
Back to GSoC 2025 projects
Project Overview
- Project Name: IPv6 Global Routing
- Student: Shashwat Patni
- Mentors: Tommaso Pecorella and Manoj Kumar Rana
- Google page: Link
- Project Goals: The aim of this project is to extend the functionality of GlobalRouting to Ipv6, while maintaining minimal code duplication. Global Routing is based on the OSPFv2 routing protocol and uses the Djikstra Shortest path algorithm to compute paths for a single area network configuration. The problem is that GlobalRouting doesn't work for IPv6, and that's a huge limitation. The goal of the project is to fix that limitation. Deliverables include a working implementation of Ipv6GlobalRouting which handles different Address Types in Ipv6, while also maintaining Minimal Code Duplication.
- Repository: Link
- About Me: I am a Pre-final year CS Undergrad student at Bits-Pilani K. K. Birla Goa Campus (BITS Pilani). I like Exploring and Tinkering with code.I am currently exploring the fields of Computer Networks and Distributed Systems. I enjoy solving problems.
- Proposal: Link
- Design Doc: Link
Milestones
These are the current Macro Goals for the project:
Note: For each phase , the plan is to work in the following order of classes: Interface Classes -> Setup Classes -> Route Computation Classes
Phase 1:
- Port existing Ipv4GlobalRouting to generic GlobalRouting
- Generalize ipv4-global-routing-test-suite and global-route-manager-impl-test-suite
- Create tests and verify GlobalRouting works for Ipv4 after templatization
- Design Tests for Ipv6 Specific Properties for GlobalRouting
- Introduce Type Aliases for IP classes
Phase 2:
- Extend GlobalRouting to IPv6
- Handle the Implementation differences of IPv6
Phase 3:
- Work On suggested Changes
- Add Documentation For IPv6 GlobalRouting
- Prepare edge Testcases, Check for Bugs , fix any remaining issues
- Discuss any new features to GlobalRouting
Weekly Reports
Community Bonding Period
Duration: 8 May - 1 June
- Working on the patch requirement !2434 :Adds the Print Route-Path Functionality to GlobalRouting.
- A Design Document has been created to allow for discussions and evolving the design for the project
Week 1
Duration: 2 June - 9 June
This week we
- Designed Tests For IPv4 GlobalRouting Specifically tests for the GlobalRouteManagerImpl Class
- Created a draft MR For the tests !2471 for review
- There was a discussion on if Link Local Addresses or Global Unicast Addresses Should be used as Next Hops in the RoutingTable Entries. Since routers can forward traffic even if they don't have Global Unicast Addresses, it was decided that Link Local Addresses will be used as next hops.
Week 2
Duration: 10 June - 17 June
This Week the plan is to:
- Start Templatizing the Ipv4GlobalRouting Classes to Generic Classes
- Create a draft MR for the Same
Currently there are two MRs Open for review !2471 and !2434
Week 3
Duration: 18 June - 23 June
This Week we did the following:
- Finished Templatizing ipv4-global-routing classes to generic global-routing classes. The CI and tests pass . The latest version of the code is available at GSoC25
- While Working on tests we found a few bugs in the existing implementation related to Equal Cost Multipath Topologies. We worked on resolving them
- We discussed if a templateless approach is possible . Templates are bad because they create a learning curve for the model and the compiler errors may be cryptic for new users.A hybrid version with minimal templatization would be better.
Week 4
Duration: 24 June - 30 June
- A draft MR Link for Milestone 1 is created. To preserve includes and allow backwards compatibility as well as API consistency , We decided to keep two seperate Ipv[4,6] Global Routing Helpers. The Manager classes were kept templated. Since ipv4-global-routing would behave differently than ipv6-global-routing, we think it best to seperate them as well.
- We decided to develop two alternatives to Global Routing , One using static polymorphism, we have the polymorphic address class for this. The other alternative is "Compile time Polymorphism using templates". The end goal is to choose the design which works the best for the projects goals.
- A few performance improvements for globalRouting are possible. Keeping a Ptr<Node> in the SPF Vertex Itself will avoid its Lookup again in the Algorithm