Supporting Configurable Congestion Control in Data Transport Services

23
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

description

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. - PowerPoint PPT Presentation

Transcript of Supporting Configurable Congestion Control in Data Transport Services

Page 1: Supporting Configurable Congestion Control in Data Transport Services

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

Page 2: Supporting Configurable Congestion Control in Data Transport Services

2 :: 23

udt.sourceforge.net

Outline

OVERVIEW

DESIGN OF UDT/CCC

PERFORMANCE EVALUATION

CONCLUSIONS AND FUTURE WORK

Page 3: Supporting Configurable Congestion Control in Data Transport Services

3 :: 23

udt.sourceforge.net

>> OVERVIEW

DESIGN OF UDT/CCC

PERFORMANCE EVALUATION

CONCLUSIONS AND FUTURE WORK

Page 4: Supporting Configurable Congestion Control in Data Transport Services

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

Page 5: Supporting Configurable Congestion Control in Data Transport Services

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

Page 6: Supporting Configurable Congestion Control in Data Transport Services

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

Page 7: Supporting Configurable Congestion Control in Data Transport Services

7 :: 23

udt.sourceforge.net

>> DESIGN OF UDT/CCC

PERFORMANCE EVALUATION

CONCLUSIONS AND FUTURE WORK

OVERVIEW

Page 8: Supporting Configurable Congestion Control in Data Transport Services

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

Page 9: Supporting Configurable Congestion Control in Data Transport Services

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

Page 10: Supporting Configurable Congestion Control in Data Transport Services

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…

Page 11: Supporting Configurable Congestion Control in Data Transport Services

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;};

Page 12: Supporting Configurable Congestion Control in Data Transport Services

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);

Page 13: Supporting Configurable Congestion Control in Data Transport Services

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

}

}

Page 14: Supporting Configurable Congestion Control in Data Transport Services

14 :: 23

udt.sourceforge.net

>> PERFORMANCE EVALUATION

CONCLUSIONS AND FUTURE WORK

OVERVIEW

DESIGN OF UDT/CCC

Page 15: Supporting Configurable Congestion Control in Data Transport Services

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?

Page 16: Supporting Configurable Congestion Control in Data Transport Services

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

Page 17: Supporting Configurable Congestion Control in Data Transport Services

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

Page 18: Supporting Configurable Congestion Control in Data Transport Services

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

Page 19: Supporting Configurable Congestion Control in Data Transport Services

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

Page 20: Supporting Configurable Congestion Control in Data Transport Services

20 :: 23

udt.sourceforge.net

>> CONCLUSIONS AND FUTURE WORK

OVERVIEW

DESIGN OF UDT/CCC

PERFORMANCE EVALUATION

Page 21: Supporting Configurable Congestion Control in Data Transport Services

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

Page 22: Supporting Configurable Congestion Control in Data Transport Services

22 :: 23

udt.sourceforge.net

Future Work

Keep improving

More built-in congestion control package

More configuration abilities (e.g., data reliability and timeliness)

Page 23: Supporting Configurable Congestion Control in Data Transport Services

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