IETF87 Berlin DCTCP implementation in FreeBSD
description
Transcript of IETF87 Berlin DCTCP implementation in FreeBSD
![Page 1: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/1.jpg)
IETF87 Berlin
DCTCP implementation in FreeBSDMidori Kato
Richard ScheffeneggerLars Eggert
Alexander Zimmermann
1
![Page 2: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/2.jpg)
DCTCP (Data Center TCP) overview
• Problem statement– Large FIFO buffers in the presence of bulk transfers impacts
latency-sensitive flows• DCTCP– Maintain the queue size short using ECN (Explicit Congestion
Notification)– Endpoint-only mechanism
• Switches/routers’ mechanism is same as standard ECN
2Long delay
High throughput
throughput-sensitive flows
latency-sensitive flows
Short delay
High throughput
ECN threshold
![Page 3: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/3.jpg)
DCTCP algorithm
Sender side1. Maintain the fraction of ECN
marked seg. for each RTT
and update average fraction of marked seg. ( )
2. Adopt alpha to cwnd decrease
Receiver side• Mark ECE only when CE
packet is received• send immediate ACK when
CE state is changed (regardless of delayed ACK)
3
S R
CE (Congestion Experience)ECE (ECN Echo)
S Rw Delayed ACKwo Delayed ACK
Immediate ACK
** reaction to packet loss (e.g., dup ack and timeout) is same with NewReno
![Page 4: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/4.jpg)
FreeBSD implementation status [1/2]
• Total # of lines: 479 lines– tcp_input.c (24 lines), tcp_output.c (12 lines), cc.h (4 lines), cc_dctcp.c (439 lines) – Add ECN handling functions to CC module– Add DCTCP as one of CC algorithms
• References for FreeBSD DCTCP– Released Linux patch [1]
– DCTCP paper “Data Center TCP (DCTCP) [SIGCOMM’10]”
4[1] http://simula.stanford.edu/~alizade/Site/DCTCP.html
![Page 5: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/5.jpg)
• Design issues1. Cwnd behavior on first ECN• Halve or Ignore cwnd
2. Reconsideration of alpha update interval• every RTT or more frequent (e.g., every ack)
3. Alpha value handling after idle time• Discard or keep alpha
4. Alpha calculation affected by receive buffer control• Change nothing or handle alpha as special case
FreeBSD implementation status [2/2]
5
In progress
Topic in this talk
![Page 6: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/6.jpg)
Open issue: cwnd behavior on first ECN
6
Option 1: DCTCP never reduces cwnd at first congestion recovery
0
Linux DCTCP
FreeBSD DCTCP
Option 2: halves cwnd at first congestion recovery
0.5
Benefit: Delay convergesquickly
0.4 0.8 1.2 1.6 Time[s]
0.4 0.8 1.2 1.6 Time[s]
Linux DCTCP
FreeBSD DCTCP
[KBytes]
15010050
4020
4020
15010050
[ms]
![Page 7: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/7.jpg)
Performance with small queue size
7
BW: 2Mbps, delay: 20msqlen: 7, ecn_thresh: 5
sender receiverdummynetExperiment- Measure transfer time for X MB and SRTT (Smoothed RTT) using flowgrind
![Page 8: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/8.jpg)
Performance with large queue size
8
BW: 2Mbps, delay: 20msqlen: 30, ecn_thresh: 10
sender receiverdummynetExperiment- Measure transfer time for X MB and SRTT (Smoothed RTT) using flowgrind
![Page 9: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/9.jpg)
Summary
• Introduce DCTCP implementation in FreeBSD and design issues
• Plan to submit our code to FreeBSD
• Future work– Interaction with RFC3168– CUBIC and DCTCP– Change architecture for coexist of DCTCP and other
CC algorithms
9
![Page 10: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/10.jpg)
Performance evaluation
10
BW: 2Mbps, delay: 20msqlen: 14, ecn_thresh: 10
sender receiverdummynetExperiment- Measure transfer time for X KB and SRTT (Smoothed RTT) using flowgrind
![Page 11: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/11.jpg)
Microscope view of Sack TCP with ECN
11
![Page 12: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/12.jpg)
Microscope view of Linux DCTCP
12
![Page 13: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/13.jpg)
Microscope view of FreeBSD DCTCP
13
![Page 14: IETF87 Berlin DCTCP implementation in FreeBSD](https://reader036.fdocuments.net/reader036/viewer/2022062501/568164cd550346895dd6f0a2/html5/thumbnails/14.jpg)
TCP(RFC3168) and DCTCPQuestion TCP (RFC 3168) DCTCP
sender When is cwnd reduced?
Reduce cwnd to half as soon as it receives ECE seg.
Reduce cwnd using the proportion of marked bytes
When CWR is marked?
Only when the host receives CWR
When the host reduces cwnd
Receiver (wo Delayed ACK)
When is ECE marked?
Keep sending segment with ECE until the host receives CWR
Send a segment with ECE only when the packet is marked CE (*)
Receiver (w Delayed ACK)
(*) + Send immediate ack when CE state has changed
14