Netdev 0x12 - A PCC-Vivace Kernel Module for Congestion Control
Channel: netdevconf
Date: 2018-09-11

On July 13th, 2018 at Netdev 0x12 in Montreal, Tomer Gilad gave a talk asserting that there is no one-size-fits-all TCP congestion control algorithm.

Different apps have different goals for their service lifetimes:
- streaming video apps are sensitive to bandwidth fluctuations,
- voice chats desire low latency and bulk transfers only care about completion time.
Varying link characteristics add another dimension to a congestion control algorithm:
- hardwired assumptions about the cause of packet loss, or
- measured latency inflation can lead to reduced application performance.

PCC-Vivace was created to address these issues.
PCC-Vivace congestion control algorithm provides an explicit utility function that allows developers to provide weights to different performance metrics like throughput, latency, packet loss and jitter. PCC-Vivace's online learning framework also allows it to adapt to a variety of network conditions, consistently delivering high performance.

The talk discussed the challenges of implementing PCC-Vivace in the Linux kernel. Tomer presented initial results comparing the performance of Vivace with other existing Linux congestion controllers (BBR etc). The talk also demonstrated the implementation's flexibility by creating and testing a variety of utility functions.

More info:
https://www.netdevconf.org/0x12/session.html?a-pcc-vivace-kernel-module-for-congestion-control