Skip to content
Suraj Singh edited this page Mar 28, 2019 · 9 revisions

Welcome to the Linux PI programmers wiki!

Purpose

The purpose of this organisation is to implement the PI AQM in the Linux Kernel. With PIE already implemented, implementing PI would involve removing the parts of PIE that are not involved in PI.

Progress

Week 1

  1. Found the original PI AQM paper
  2. Read through the paper to understand how it is different from PIE. Immediate observations - different T_Update (sampling frequency), alpha and beta are set differently - possibly dependant on the sampling frequency. Different drop probability equation. Wiki doc here
  3. Read through PIE fully, to understand its components and which components we would be chopping off.

Week 2

  1. Started reading through the PIE source code in Linux. We finished one pass of the code until line 450 and have accumulated a bunch of doubts. We have documented our findings here
  2. Created an organisation. Forked the kernel and pushed existing wiki articles here.
  3. Began Implementation.

Week 3

  1. To the best of our knowledge, chopped off all the parts of PIE that aren't needed. Knobs like alpha, beta, q_ref are yet to be updated.
  2. Made sch_pi.c in line with the formatting requirements of checkpatch.pl
  3. Downloaded and set up the testbed consisting of multiple VMs and namespaces.
  4. Got experience of compiling the entire Linux kernel for the first time and installed the same onto the router in the testbed topology
  5. Added the required files to iproute2 repository and installed the same on to the router. Now, have to set AQM to PI using tc on the router and record results using flent.

Week 4

  1. Updated the the knobs of a,b and q_ref to those of the original paper and tested using flent.
  2. Downgraded matplotlib to 2.1.2 (from 3.0.3) because flent was erroring out and obtained primitive visualizations for the implementation
  3. TODO: Clean up code and make a .github.io website to accompany the code we've written for reference when submitting the patch

Development

This is just a summary of the changes we've made till now. For more details, look at commit history.

  • Created a copy of sch_pie.c
  • Renamed all pie functions to pi.
  • Removed burst_time related statements.
  • Added tc_pi_xstats

In iproute2:

  • Created tc/q_pi.c
  • Updated include/uapi/linux/pkt_sched.h

flent:

  • install using sudo add-apt-repository ppa:tohojo/flent sudo apt-get update sudo apt-get install flent
  • in run-tests, change tcp_5up to tcp_4up and tcp50_up to tcp_12up
  • run the script using sudo ./run-tests

Members

Mentors

Clone this wiki locally