THE CASE FOR MOVING CONGESTION CONTROL OUT OF THE DATAPATH Akshay - - PowerPoint PPT Presentation

the case for moving congestion control out of the datapath
SMART_READER_LITE
LIVE PREVIEW

THE CASE FOR MOVING CONGESTION CONTROL OUT OF THE DATAPATH Akshay - - PowerPoint PPT Presentation

THE CASE FOR MOVING CONGESTION CONTROL OUT OF THE DATAPATH Akshay Narayan, Frank Cangialosi, Prateesh Goyal, Srinivas Narayana, Mohammad Alizadeh, Hari Balakrishnan MIT CSAIL CONGESTION CONTROL DCQCN TIMELY DCTCP pFabric Hybla NV RC3


slide-1
SLIDE 1

THE CASE FOR MOVING CONGESTION CONTROL OUT OF THE DATAPATH

Akshay Narayan, Frank Cangialosi, Prateesh Goyal, Srinivas Narayana, Mohammad Alizadeh, Hari Balakrishnan MIT CSAIL

slide-2
SLIDE 2

CONGESTION CONTROL

1987 2017

Vegas NewReno Westwood Eifel Compound PRR BIC H-TCP Cubic FAST EBCC Binomial LEDBAT Veno BBR PCC Remy Sprout RC3 pFabric XCP RCP DCTCP Illinois NV Hybla TIMELY DCQCN

Algorithms Datapaths

Kernel QUIC mTCP (DPDK) netFPGA SmartNICs netmap ABC

slide-3
SLIDE 3

CONGESTION CONTROL

1987 2017

QUIC mTCP (DPDK) Kernel Vegas NewReno Westwood Eifel Compound PRR BIC H-TCP Cubic FAST EBCC Binomial LEDBAT Veno BBR PCC Remy Sprout RC3 pFabric XCP RCP DCTCP Illinois NV Hybla TIMELY DCQCN QUIC mTCP (DPDK) netFPGA SmartNICs netmap ABC

Algorithms Datapaths

slide-4
SLIDE 4

CONGESTION CONTROL

1987 2017

QUIC Kernel Vegas NewReno Westwood Eifel Compound PRR BIC H-TCP Cubic FAST EBCC Binomial LEDBAT Veno BBR PCC Remy Sprout RC3 pFabric XCP RCP DCTCP Illinois NV Hybla TIMELY DCQCN mTCP (DPDK) netFPGA SmartNICs netmap ABC

Algorithms Datapaths

slide-5
SLIDE 5

CONGESTION CONTROL

1987 2017

QUIC mTCP (DPDK) Kernel Vegas NewReno Westwood Eifel Compound PRR BIC H-TCP Cubic FAST EBCC Binomial LEDBAT Veno BBR PCC Remy Sprout RC3 pFabric XCP RCP DCTCP Illinois NV Hybla TIMELY DCQCN netFPGA SmartNICs netmap ABC

Algorithms Datapaths

slide-6
SLIDE 6

NARROW WAIST

Congestion Control Datapaths Windows Rates RTT Rates Header Information

slide-7
SLIDE 7

PRIMITIVES

Signal Protocols ACKs Cubic, DCTCP, NewReno Loss Cubic, DCTCP, NewReno, PCC RTT BBR, Remy, Sprout, TIMELY, Vegas Rates BBR, PCC, Remy, Sprout ECN ABC, DCTCP

slide-8
SLIDE 8

CONGESTION CONTROL PLANE DESIGN

Off Datapath Asynchronous

CCP DATAPATH API DATAPATH APPLICATION

Data

CCP ALGORITHM API

Data

RENO CUBIC BBR

Without compromising performance

slide-9
SLIDE 9

fn OnMeasurement(m: Info) { }

Event Handler

ALGORITHM API

slide-10
SLIDE 10

fn OnMeasurement(m: Info) { } newlyAcked = m.Ack - lastAck; cwnd += newlyAcked / cwnd;

Event Handler State Update

ALGORITHM API

slide-11
SLIDE 11

ALGORITHM API

run_on_datapath( SetCwnd(cwnd) => WaitRtts(1.0) => Report() ); fn OnMeasurement(m: Info) { } newlyAcked = m.Ack - lastAck; cwnd += newlyAcked / cwnd;

Event Handler State Update Decision

slide-12
SLIDE 12

DIFFICULTY OF DATAPATH PROGRAMMING

fn OnMeasurement(m: Info) { } let K = pow(max(0, WlastMax - cwnd) / 0.4), 1/3) cwnd = WlastMax + 0.4 * pow(t - K, 3) net/ipv4/tcp_cubic.c 175 /* calculate the cubic root of x using a table lookup followed by one 176 * Newton-Raphson iteration. 177 * Avg err ~= 0.195% 178 */ 179 static u32 cubic_root(u64 a) // 40 lines of code

slide-13
SLIDE 13

DATAPATH API

How to collect measurements?

CCP DATAPATH API DATAPATH APPLICATION

Data

CCP ALGORITHM API

Data

RENO CUBIC BBR

slide-14
SLIDE 14

Store per-packet information Send vector of measurements to CCP Compute RTT, Rates, etc in CCP

VECTOR BATCHING

CCP DATAPATH API DATAPATH APPLICATION

Data

CCP ALGORITHM API RENO CUBIC BBR PKT1|PKT2|…

slide-15
SLIDE 15

IN-DATAPATH AGGREGATION

Expose primitives to user-defined fold Compute state aggregate in datapath

CCP DATAPATH API DATAPATH APPLICATION

Data

CCP ALGORITHM API RENO CUBIC BBR STATE

fold(state, pkt)

PKT

slide-16
SLIDE 16

CONGESTION WINDOW DYNAMICS

CCP Linux

Overall, the window evolution is similar

slide-17
SLIDE 17

IMPLICATIONS

Velocity of congestion control research New algorithms

Flexibility need not preclude performance

slide-18
SLIDE 18

OPEN QUESTIONS ▸ New algorithms? ▸ Hardware support for CCP primitives? ▸ Low-RTT paths ▸ Make decisions less frequently?

github.com/mit-nms/ccp

DATAPATH API DATAPATH APP

Data

ALGORITHM API RENO CUBIC BBR

Data