GSOC2021NixVector

From Nsnam
Revision as of 14:37, 6 June 2021 by Ameyanrd (Talk | contribs)

Jump to: navigation, search

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - Samples - Models - Education - Contributed Code - Papers

Back to GSoC 2021 projects

Project Overview

  • Project Name: IPv6 Nix-Vector Routing
  • Student: Ameya Deshpande
  • Mentors: Manoj Kumar Rama, Tommaso Pecorella
  • Project Goals: The project aims to implement IPv6 Nix-Vector Routing with minimal code duplication from IPv4 Nix-Vector Routing. ns-3 has an implementation of Nix-Vector routing for IPv4. Routing protocols like Global Routing and Nix-Vector Routing help the user a lot when dealing with complex topologies. Unlike any dynamic routing protocol, these protocols simply fill the routing tables and prevent any overhead involved. Currently, there is no such implementation for IPv6 available in ns-3. For IPv6 Nix-Vector Routing, the implementation should handle link-local and global unicast addresses.
  • Repository: https://gitlab.com/ameyanrd/ns-3-dev/-/commits/gsoc-21/
  • About Me: I am currently a pre-final undergraduate student at the National Institute of Technology Karnataka, Surathkal (NITK). I like to play with open-source softwares, browse through their code, make changes and contribute back, if suitable. My areas of interest include Computer Networking, Operating Systems, and Cloud Computing. I have around three years of experience working with C and C++ and around a year working with Python. I have worked before in the development of Linux Kernel (IPv6) and Wireshark (libwireshark).
  • Project Proposal: link
  • Design Document: link

Milestones and Deliverables

The GSoC period is divided into three phases. Following are the deliverables according to the proposal:

Phase 1

Duration: Week 1 to Week 4

  • Prepare tests for the existing IPv4 NixRouting implementation.
  • Port the existing IPv4 Nix code to generic Nix code.
  • Convert the routing and helper classes into template classes.
  • Introduce aliases for IPv*-related classes and make the changes at all their occurrences.

Phase 2

Duration: Week 5 to Week 8

  • Prepare simple examples and tests for IPv6 NixRouting.
  • Handle different member functions for similar IPv*-related classes, virtual functions, and callback functions.
  • Handle link-local and global unicast addresses.

Phase 3

Duration: Week 9 and 10

  • Work on additional tests and a large IPv6 networking topology example (similar to nms-p2p-nix.cc).
  • Update the Nix-Vector Routing documentation.

Weekly Reports

Community Bonding Period

Duration: May 17 - June 6

  • Prepare the initial tests for IPv4 Nix-Vector routing (MR link).
  • Discussed the proposal ideas and any potential issues.
  • Since the proposal uses C++ templates, aliases, etc., it is a concern if Python Bindings will be generated for some of the constructs.
  • Complete the Python Bindings setup for rescanning the nix-vector-routing module.
  • Start the Design Documentation for discussing and developing the best possible way for implementation.