In a network that cannot control end clients to cooperate with marked packets, bufferbloat must be alleviated by dropping packets. Since bufferbloat leads to higher latency and network jitter, it is imperative the amount of buffered data be minimized and packets dropped as soon as possible to notify senders to reduce their transmission rate. In this work we propose an enhanced AQM packet dropping approach, Neighborhood Watch, that considers congestion in downstream neighboring routers and adjusts its egress scheduling policy to help alleviate bufferbloat and reduce network latency and jitter.
Gain experience with Linux Networking internals, distributed computing, and protocol design. Specific objectives include learning the flow of a packet in a Linux kernel before and after reaching the IP/TCP stack and learning how to shape and police network traffic traveling through a machine. Necessary tools will include tc and Python development for the daemon.
Learn the concepts of QoS to achieve optimal performance of the network by developing a custom protocol for communication between neighbours. Gain knowledge and understand the difference between the centralized approach and the traditional network design. Develop a AQM strategy, implement and compare the results with the theoretical expectations.
To develop understanding of RED, qdisc and their impact on traffic. Gain knowledge about configuring the routers using bash scripting. Develop understanding about distributed daemon running on each nodes of the network. To understand how the traditional approach and SDN design would affect the network performance.
Learn configuring linux networking machine and connecting them automated bash script. Learn how RED pseudo code work and gain experience of modifying basic parameter on RED or extension protocol. Develop a distributed client application by retrieving AQM information. Instead of retrieving information about congestion from kernel level, we focus on how to get advantage of existed output of tc (qdisc, filter) command and utilize ifb to help us get congestion information. Figuring out how to set an appropriate dropping policy based upon a set of probability.
This project will require knowledge in Linux administration, Linux networking, traffic control using the tc command, virtualization, protocol design, and distributed application design.