1 :: 23
udt.sourceforge.net
Supporting Configurable Congestion Control in Data Transport Services
Yunhong Gu and Robert L. Grossman
Laboratory for Advanced Computing
National Center for Data Mining
University of Illinois at Chicago
November 16, 2005
udt.sourceforge.net
2 :: 23
udt.sourceforge.net
Outline
OVERVIEW
DESIGN OF UDT/CCC
PERFORMANCE EVALUATION
CONCLUSIONS AND FUTURE WORK
3 :: 23
udt.sourceforge.net
>> OVERVIEW
DESIGN OF UDT/CCC
PERFORMANCE EVALUATION
CONCLUSIONS AND FUTURE WORK
4 :: 23
udt.sourceforge.net
From UDT to Composable UDT
UDT (UDP-based Data Transfer Protocol) New application level protocol: add reliability and congestion control to
UDP New congestion control algorithm designed for high performance data
transfer over high-speed wide area networks Open source: http://udt.sourceforge.net
Composable UDT An expansion to UDT with ability to allow users to configure the UDT
library: congestion control, data reliability, etc. Compile time option: no performance drop for the original UDT
5 :: 23
udt.sourceforge.net
UDT with Configurable Congestion Control (CCC)
CCC support is the first step of Composable UDT
UDT/CCC allows user to implement or assign a specific congestion control algorithm to a UDT connection Per connection control Dynamically configurable
6 :: 23
udt.sourceforge.net
Motivations
Easy implementation and deployment of new control algorithms
Easy evaluation of new control algorithms
Application awareness support and dynamic configuration
7 :: 23
udt.sourceforge.net
>> DESIGN OF UDT/CCC
PERFORMANCE EVALUATION
CONCLUSIONS AND FUTURE WORK
OVERVIEW
8 :: 23
udt.sourceforge.net
UDT with Configurable Congestion Control
UDP
Socket API
Applications
UDT
UDT Socket
CC
CC
Cal
lbac
ks
Mem
ory
Cop
y B
ypas
s
9 :: 23
udt.sourceforge.net
Methodologies
Packet sending control Window-based, rate-based, and hybrid
Control event handling onACK, onLoss, onTimeout, onPktSent, onPktRecved, etc.
Protocol parameters access RTT, loss rate, RTO, etc.
Packet extension User-defined control packets
10 :: 23
udt.sourceforge.net
Supported Protocols
Reliable UDP-based Protocols
Standard TCP (TCP NewReno)
Loss-based TCP Variants
Delay-based TCP Variants
Group-based Protocols
And more…
11 :: 23
udt.sourceforge.net
Examples: Reliable UDP Blast
class CUDPBlast: public CCC{public: CUDPBlast() {m_dCWndSize = 83333.0;}
public: void setRate(int mbps) { m_dPktSndPeriod = (m_iSMSS * 8.0) / mbps; }
protected: static const int m_iSMSS = 1500;};
12 :: 23
udt.sourceforge.net
Examples: Reliable UDP Blast
UDT::setsockopt(usock, 0, UDT_CC,
new CCCFactory<CUDPBlast>,
sizeof(CCCFactory<CUDPBlast>));
CUDPBlast* cchandle = NULL;
int size = sizeof(CUDPBlast);
UDT::getsockopt(usock, 0, UDT_CC, &cchandle, &size);
if (NULL != cchandle)cchandle->setRate(500);
...
cchandle->setRate(1000);
13 :: 23
udt.sourceforge.net
Examples: TCP NewReno
virtual void onACK(const int& ack)
{
if (three duplicate ACK detected) {
// ssthresh = max{flight_size / 2, 3}
// cwnd = ssthresh + 3 * SMSS
} else if (further duplicate ACK detected) {
// cwnd = cwnd + SMSS
} else if (end fast recovery) {
// cwnd = ssthresh
} else {
// cwnd = cwnd + 1/cwnd
}
}
14 :: 23
udt.sourceforge.net
>> PERFORMANCE EVALUATION
CONCLUSIONS AND FUTURE WORK
OVERVIEW
DESIGN OF UDT/CCC
15 :: 23
udt.sourceforge.net
Evaluation
Simplicity Can it be easily used?
Expressiveness Can it be used to implement most control protocols?
Similarity Can Composable UDT based implementations reproduce the
performance of their native implementations?
Overhead Will the overhead added by Composable UDT be too large?
16 :: 23
udt.sourceforge.net
Simplicity & Expressiveness
Eight event handlers, four protocol control functions, and one performance monitoring function.
Support a large variety of protocols Reliable UDT blast TCP and its variants (both loss and delay based) Group transport protocols
17 :: 23
udt.sourceforge.net
Simplicity & Expressiveness
CCCBase Congestion
Control Class
CTCPTCP NewReno
CGTPGroup Transport
Protocol
CUDPBlastReliable UDP
Blast
CFASTFAST TCP
CVegasTCP Vegas
CScalableScalable TCP
CHSHighSpeed TCP
CBiCBiC TCP
CWestwoodTCP Westwood
28
73 / +132-6 11 / +192-29 8 / +27-1 11 / +192-29 27 / +145-2
37 / +351-2
18 :: 23
udt.sourceforge.net
Similarity and Overhead
CTCP vs. Linux TCP Aggregate throughput Jain’s fairness index Stability index (standard deviation)
Flow#
Throughput Fairness Stability
TCP CTCP TCP CTCP TCP CTCP
1 112 122 1 1 0.517 0.415
2 191 208 0.997 0.999 0.476 0.426
4 322 323 0.949 0.999 0.484 0.492
8 378 422 0.971 0.999 0.633 0.550
16 672 642 0.958 0.985 0.502 0.482
32 877 799 0.988 0.997 0.491 0.470
64 921 716 0.994 0.996 0.569 0.529
19 :: 23
udt.sourceforge.net
CPU Overhead vs. ACK Frequencies
CPU usage Sender: CTCP uses about 100% more times of CPU as Linux TCP Receiver: CTCP uses about 20% more CPU than Linux TCP
Source of overheads Additional memory copy and context switch
ACK Frequencies is one of the major factors
Flow#
ACK Intervals2 4 8 16 32 64 128
1 3.28 3.15 3.20 3.43 2.57 2.59 2.07
2 3.91 3.77 3.95 3.59 3.52 3.35 3.51
4 4.32 4.36 1.45 3.08 3.54 3.44 3.27
8 4.05 4.87 4.32 3.84 3.91 3.63 3.63
16 4.59 5.07 5.60 4.41 4.41 4.17 3.12
32 5.41 5.31 5.27 4.99 5.15 4.53 4.01
64 6.63 6.58 6.15 5.89 5.35 5.08 4.51
20 :: 23
udt.sourceforge.net
>> CONCLUSIONS AND FUTURE WORK
OVERVIEW
DESIGN OF UDT/CCC
PERFORMANCE EVALUATION
21 :: 23
udt.sourceforge.net
Conclusions
We expanded our UDT protocol with support for configurable congestion control Easy implementation and deployment of new control algorithms Easy evaluation of new control algorithms Application awareness support and dynamic configuration
Pros Simplicity and expressiveness Easily deployable
Cons CPU overhead
22 :: 23
udt.sourceforge.net
Future Work
Keep improving
More built-in congestion control package
More configuration abilities (e.g., data reliability and timeliness)
23 :: 23
udt.sourceforge.net
The End
Thank You!
For More Information
Please visit:
SC|05 Exhibition Booth 2430
Or online at http://udt.sf.net