Difference between revisions of "GSOC2021DCE"

From Nsnam
Jump to: navigation, search
(Project Overview)
(Milestones and Deliverables)
Line 15: Line 15:
  
 
= Milestones and Deliverables =
 
= Milestones and Deliverables =
 +
* '''Phase 1'''
 +
** Add links to kernel exported functions in KernelHandle, used in DCE.
 +
** Fill up DceHandle struct with function references to DCE exported functions.
 +
** Implement all the host functions, link it to custom written mutex, semaphore and pthread functions, create the lkl_host_ops structure, initialize kernel with lkl_start_kernel.
 +
** Implement the sim_init method.
 +
 +
* '''Phase 2'''
 +
** Add support for socket networking and netdevices interface functions which will be exported to DCE.
 +
 +
* '''Phase 3'''
 +
** Add support for the new struct naming conventions.
 +
** Add support for liblkl by default in bake, ns-3-dce wscript, custom gcc parameters like -fpermissive(without which the header files won’t compile).
 +
** Align the sysctl usage in LinuxSocketFdFactory according to LKL.
 +
** Modify existing examples to load liblkl.so. Fix errors and bugs that might appear in this stage.

Revision as of 14:19, 28 May 2021

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: Direct Code Execution Modernization
  • Student: Parth Pratim Chatterjee
  • Mentors: Tom Henderson, Apoorva Bhargava, Vivek Jain
  • Project Goals: DCE currently makes use of net-next-nuse to extend the Linux kernel internals like the networking stack to host applications but over the years the project hasn't been updated with the latest releases of the Linux kernel. As Linux progressed with newer releases, a major part of the source code changed, making previous glue code incompatible with the newer implementations of the network stack as some of the init calls and function usage changed significantly making migration to newer releases non-trivial. This project aims at enabling support for latest Linux kernel features and toolchains in the DCE environment with support for the socket networking stack, sysctl interfaces, system call access, etc. without any changes to the user APIs currently being used by host applications. The project aims at incorporating the LKL(Linux Kernel Library) into the DCE environment for host applications to effortlessly make use of Linux kernel stacks with minimum to no change in existing simulation scripts.
  • Repository:
  • About Me: I'm a freshman Computer Science undergraduate student at Kalinga Institute of Industrial Technology, Bhubaneshwar, India. I have a keen interest in Linux internals and computer networking. I was a grand prize winner at Google Code-In, 2018 for ns-3 organization, which helped me initially get introduced to DCE. I have an aptitude for Competitive Programming and heavily make use of C/C++, STL and other OOP concepts in solving algorithmic puzzles. I have an experience with C/C++ and Python of more than 3 years, working on projects for numerous Hackathons.

Milestones and Deliverables

  • Phase 1
    • Add links to kernel exported functions in KernelHandle, used in DCE.
    • Fill up DceHandle struct with function references to DCE exported functions.
    • Implement all the host functions, link it to custom written mutex, semaphore and pthread functions, create the lkl_host_ops structure, initialize kernel with lkl_start_kernel.
    • Implement the sim_init method.
  • Phase 2
    • Add support for socket networking and netdevices interface functions which will be exported to DCE.
  • Phase 3
    • Add support for the new struct naming conventions.
    • Add support for liblkl by default in bake, ns-3-dce wscript, custom gcc parameters like -fpermissive(without which the header files won’t compile).
    • Align the sysctl usage in LinuxSocketFdFactory according to LKL.
    • Modify existing examples to load liblkl.so. Fix errors and bugs that might appear in this stage.