udt.sourceforge.net 1 :: 23 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 Outline OVERVIEW DESIGN OF UDT/CCC PERFORMANCE EVALUATION CONCLUSIONS AND FUTURE WORK
udt.sourceforge.net 3 :: 23 >> OVERVIEW DESIGN OF UDT/CCC PERFORMANCE EVALUATION CONCLUSIONS AND FUTURE WORK
udt.sourceforge.net 4 :: 23 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
udt.sourceforge.net 5 :: 23 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
udt.sourceforge.net 6 :: 23 Motivations Easy implementation and deployment of new control algorithms Easy evaluation of new control algorithms Application awareness support and dynamic configuration
udt.sourceforge.net 7 :: 23 >> DESIGN OF UDT/CCC PERFORMANCE EVALUATION CONCLUSIONS AND FUTURE WORK OVERVIEW
udt.sourceforge.net 8 :: 23 UDT with Configurable Congestion Control UDP Socket API Applications UDT UDT Socket CC CC Callbacks Memory Copy Bypass
udt.sourceforge.net 9 :: 23 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
udt.sourceforge.net 10 :: 23 Supported Protocols Reliable UDP-based Protocols Standard TCP (TCP NewReno) Loss-based TCP Variants Delay-based TCP Variants Group-based Protocols And more…
udt.sourceforge.net 11 :: 23 Examples: Reliable UDP Blast class CUDPBlast: public CCC { public: CUDPBlast() {m_dCWndSize = ;} public: void setRate(int mbps) { m_dPktSndPeriod = (m_iSMSS * 8.0) / mbps; } protected: static const int m_iSMSS = 1500; };
udt.sourceforge.net 12 :: 23 Examples: Reliable UDP Blast UDT::setsockopt(usock, 0, UDT_CC, new CCCFactory, sizeof(CCCFactory )); CUDPBlast* cchandle = NULL; int size = sizeof(CUDPBlast); UDT::getsockopt(usock, 0, UDT_CC, &cchandle, &size); if (NULL != cchandle) cchandle->setRate(500);... cchandle->setRate(1000);
udt.sourceforge.net 13 :: 23 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 }
udt.sourceforge.net 14 :: 23 >> PERFORMANCE EVALUATION CONCLUSIONS AND FUTURE WORK OVERVIEW DESIGN OF UDT/CCC
udt.sourceforge.net 15 :: 23 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?
udt.sourceforge.net 16 :: 23 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
udt.sourceforge.net 17 :: 23 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 / / / / / /
udt.sourceforge.net 18 :: 23 Similarity and Overhead CTCP vs. Linux TCP Aggregate throughput Jain’s fairness index Stability index (standard deviation) Flow # ThroughputFairnessStability TCPCTCPTCPCTCPTCPCTCP
udt.sourceforge.net 19 :: 23 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
udt.sourceforge.net 20 :: 23 >> CONCLUSIONS AND FUTURE WORK OVERVIEW DESIGN OF UDT/CCC PERFORMANCE EVALUATION
udt.sourceforge.net 21 :: 23 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
udt.sourceforge.net 22 :: 23 Future Work Keep improving More built-in congestion control package More configuration abilities (e.g., data reliability and timeliness)
udt.sourceforge.net 23 :: 23 The End Thank You! For More Information Please visit: SC|05 Exhibition Booth 2430 Or online at