Being Friendly to TCP

UDP traffic should not affect TCP connections when there is a contention for bandwidth.

What is TCP-Friendliness?

UDP and other continuous streaming transports are becoming more common on the Internet as multimedia, telephony and P2P applications start to use larger and larger portions of available bandwidth.

One of the better definitions of TCP-friendliness is as follows: "a flow is TCP-friendly if other TCP connections sharing the same bottleneck link as it do not receive less bandwidth in the long term than they would receive if the flow in concern is also a TCP connection possibly with a short Round Trip Time(RTT)." 1

TCP is well-behaved in terms of transfer reliability and has built-in congestion control 2. Non-TCP flows are commonly used when such niceties are not required and a simpler data push/pull serves the job. However, as such flows take up more and more of the bandwidth, TCP connections start to lose out. The goal of TCP-friendliness is to allow non-TCP data flows to consume as much bandwidth as a TCP connection would and not much more, thus implementing a "fair" regime of resource-sharing. Since non-TCP transport protocols are usually less sophisticated and more varied, it would not be practical to prescribe congestion control WITHIN those protocols. It is much more feasible to prescribe such actions at the IP routing level.

Active Queue Management is just one of the techniques used to accomplish this within TCP-friendly routers. Such routers actively monitor traffic and exchange information and throttle certain types of traffic to achieve TCP-friendliness. 3

This is an active area of research and proposed solutions still lag behind requirements. Sally Ford 2 is a prominent researcher in this area and some of her research papers can be found here.




[2] Kurose and Ross, Computer Networking, Third Edition, p.298