Skip to content
Ankit Dash edited this page Dec 9, 2023 · 2 revisions

Revising the implementation of Deficit Round Robin in ns-3

Following is a project in the course Open Source Networking Technologies (CS435) course at NITK. The project was done by:

  • Ankit Dash (211CS212)
  • Vedika Gadia (201EE264)
  • Samhita R (201ME250)
  • Bishakh Dutta (201EC111)

Introduction

Deficit round robin is a hybrid queue discipline. It can be considered classful because the value of the Deficit Counter can be set dynamically. It can be considered classless because of static queue assignment and lack of priority among packets. Other queue disciplines using it like f-queue-codel are also classless. In ns-3 and Linux-net it is primarily used as a scheduling algorithm in the traffic control layer. The original implementation was done previously but was not updated with the current ns-3 main branch.

Modifications in the code

  • Used the modern APIs in ns-3.
  • Changed the way hash was calculated to classify packets into different flows.
  • Optimized the test suite.
  • Shifted from wscipt to CMake for the building process.
  • Added documentation for using the DRR module.
  • Used modern C++ coding standards.

Files changed/modified

  • examples/traffic-control/queue-disc-benchmark.cc
  • src/internet/model/ipv4-packet-filter.cc
  • src/internet/model/ipv4-packet-filter.h
  • src/internet/model/ipv6-packet-filter.cc
  • src/internet/model/ipv6-packet-filter.h
  • src/traffic-control/CMakeLists.txt
  • src/traffic-control/doc/drr.rst
  • src/traffic-control/examples/CMakeLists.txt
  • src/traffic-control/examples/drr-example.cc
  • src/traffic-control/examples/drr-queue-disc.cc
  • src/traffic-control/examples/drr-queue-disc.h
  • src/traffic-control/examples/drr-queue-disc-test-suite.cc