Weekly Progress - gautamramk/FQ-PIE-for-Linux-Kernel GitHub Wiki

This is the weekly progress for Assignment SIM - 022 of the course Computer Networks CO300

Weekly Progress

Week 1 (September 21st - September 27th)

  • Allotted the project.
  • Read about Active Queue Management (AQM).
  • Read briefly the various AQM algorithms; RED, CoDel and PIE.
  • Read in detail the paper "PIE: A Lightweight Control Scheme to Address the Bufferbloat Problem".
  • Read RFC 8033 "Proportional Integral Controller Enhanced (PIE): A Lightweight Control Scheme to Address the Bufferbloat Problem"

Week 2 (September 28th - October 4th)

  • Asked mentor for reference material for implementation as no internet draft, paper or RFC exists.
  • Read implementation of RED, CoDel, and PIE algorithms for linux kernel.
  • Read implementation of CoDel FQ for linux kernel.

Week 3 (October 5th - October 11th)

  • Read up on Linux Kernel Modules
  • Read up on Linux Kernel Network Structures

Week 4 (October 12th - October 18th)

  • Incorporated changes on to the linux kernel tree.

Week 5 (October 19th - October 25th)

  • Detailed read-up of the IETF RFC on PIE.
  • Validated our implementation with the algorithm given in the RFC.
  • Corrected the bugs found.

Week 6 (October 26th- November 1st)

  • Discussed the implementation of FQ-PIE with mentors
  • Clarified doubts on whether the paremeter 'TARGET' can be used as a common value for all the queues.
  • Compiled the linux kernel 4.18 with FQ-PIE.
  • Added FQ-PIE support for the iproute2 tc package.

Week 8 (November 2nd - November 8th)

  • Started testing the code on the physical testbed, using flent.
  • Faced heavy logical errors. Multiple flows were crashing on the dequeue function.
  • Restart creating the module in a stepwise manner for easy debugging.
  • Started failing again when timer functionality was added. Failure occurs in dequeue function.
  • Recompiled kernel with lockdep, this functionality is to log all possible logs and deadlocks in the system.
  • System panic error while booting the kernel with lockdep. Recompiled the 4.18 kernel multiple times with lockdep enabled, kept failing to boot. Booted successfully when compiled without lockdep.
  • Found out the error, we missed out a pointer initialization to null, which caused a segfault. Thanks to our mentors Sachin Patil and Leslie for their support with the testing.

Week 9 (November 9th - November 15th)

  • Final touchups to the project, setting up the repository correctly.
  • Integrated the modularized sch_pie.c.