230 likes | 363 Views
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. Outline. OVERVIEW. DESIGN OF UDT/CCC.
E N D
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
Outline OVERVIEW DESIGN OF UDT/CCC PERFORMANCE EVALUATION CONCLUSIONS AND FUTURE WORK
>> OVERVIEW DESIGN OF UDT/CCC PERFORMANCE EVALUATION CONCLUSIONS AND FUTURE WORK
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
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
Motivations • Easy implementation and deployment of new control algorithms • Easy evaluation of new control algorithms • Application awareness support and dynamic configuration
>> DESIGN OF UDT/CCC OVERVIEW PERFORMANCE EVALUATION CONCLUSIONS AND FUTURE WORK
UDT with Configurable Congestion Control Applications CC UDT Socket CC Callbacks Memory Copy Bypass UDT Socket API UDP
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
Supported Protocols • Reliable UDP-based Protocols • Standard TCP (TCP NewReno) • Loss-based TCP Variants • Delay-based TCP Variants • Group-based Protocols • And more…
Examples: Reliable UDP Blast classCUDPBlast:publicCCC{public:CUDPBlast() {m_dCWndSize = 83333.0;}public:voidsetRate(intmbps){ m_dPktSndPeriod = (m_iSMSS * 8.0) / mbps; }protected:static const intm_iSMSS = 1500;};
Examples: Reliable UDP Blast UDT::setsockopt(usock, 0, UDT_CC, newCCCFactory<CUDPBlast>, sizeof(CCCFactory<CUDPBlast>)); CUDPBlast* cchandle = NULL; intsize = sizeof(CUDPBlast); UDT::getsockopt(usock, 0, UDT_CC, &cchandle, &size); if(NULL != cchandle)cchandle->setRate(500); ... cchandle->setRate(1000);
Examples: TCP NewReno virtual voidonACK(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 } }
>> PERFORMANCE EVALUATION OVERVIEW DESIGN OF UDT/CCC CONCLUSIONS AND FUTURE WORK
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?
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
CTCP TCP NewReno CGTP Group Transport Protocol CUDPBlast Reliable UDP Blast 28 CVegas TCP Vegas CScalable Scalable TCP CHS HighSpeed TCP CBiC BiC TCP CWestwood TCP Westwood 73 / +132-6 11 / +192-29 8 / +27-1 11 / +192-29 27 / +145-2 CFAST FAST TCP 37 / +351-2 Simplicity & Expressiveness CCC Base Congestion Control Class
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 Similarity and Overhead • CTCP vs. Linux TCP • Aggregate throughput • Jain’s fairness index • Stability index (standard deviation)
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 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
>> CONCLUSIONS AND FUTURE WORK OVERVIEW DESIGN OF UDT/CCC PERFORMANCE EVALUATION
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
Future Work • Keep improving • More built-in congestion control package • More configuration abilities (e.g., data reliability and timeliness)
The End Thank You! For More Information Please visit: SC|05 Exhibition Booth 2430 Or online at http://udt.sf.net