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:
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 Callbacks
Memory Copy
Bypass
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
CCC
Base Congestion
Control Class
CTCP
TCP NewReno
CGTP
Group Transport
Protocol
CUDPBlast
Reliable UDP
Blast
CFAST
FAST TCP
CVegas
TCP Vegas
CScalable
Scalable TCP
CHS
HighSpeed TCP
CBiC
BiC TCP
CWestwood
TCP 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 Intervals
2 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