This article, while a little (cough LOT) over the top with its flamebait rhetoric, was still a pretty interesting read for those who are familiar with the Internet’s protocol backbone – IP – and the transmission protocols that reside invisibly on top and make all our applications work.
For those not so inclined to Google/Wikipedia every technical term in the article, here are the cliff notes:
Two core protocols handle the vast majority of traffic over the interwubz: TCP (Transmission Control Protocol) and UDP (User Datagram Protocol). TCP is a highly regulated communication protocol, with lots of complex control mechanisms built in to ensure that information transferred between two computers is sent and received successfully and in the correct order. It also employs some fancy algorithms that ensure the connection between the two computers is not overly saturated; after all, other computers are more than likely sharing the same pipeline to swap information.
UDP, on the other hand, performs none of these checks. It’s a fire-and-forget protocol (hence why it is often referred to as “connectionless”) where information is sent and no guarantees are made that it will arrive at its destination or that it will be correctly ordered. It also makes no absolutely no attempt to “share” bandwidth with any other computers that might be using the same internet corridor – applications using this protocol simply fire off the information as fast as the internet connection will possibly allow.
Given these differences, the first question in your mind is probably “Why on earth would anyone want to use UDP?” Well, gentle reader, I’m glad you asked! 😛
TCP is excellent for applications which require absolute (or as close as possible) perfection in data transmission; say, a web browser. It would kind of defeat the purpose of web browsing if a few images on your page randomly didn’t load. Or if the second half of the page was rendered before the first half. However, all these checks and complex calculations require a lot of overhead. For web browsers this isn’t all that much of an issue. But if I was playing fast-paced online game, it’d be pretty frickin’ annoying to have my game lock up every two seconds when packets of information were lost over the network and the application stopped to query the server to resend that lost information.
UDP, then, does not have the large overhead. It is very useful for applications which rely heavily on a continuous stream of information, but it’s also ok if a few bits of information here or there are lost. For instance, if I’m watching streaming video, a few small skips might elude my notice entirely, provided the video kept playing. If the video kept stopping every time a small amount of information was lost (or even a little bit late), I’d get fed up with it pretty quickly.
With that background, on to the article!
Bittorrent, Inc. recently made the announcement that their flagship bittorrent client, uTorrent, will be outfitted with UDP instead of its usual TCP. The article points out the inherent drawbacks of this move by showing how a protocol like UDP could be deleterious to the Internet on a whole if a program as ubiquitous as uTorrent employed UDP.
Since UDP is a fire-and-forget protocol, it does not employ any sort of congestion control for regulating itself on crowded networks. It simply shoots off information as fast as it possibly can. Since bittorrent traffi these days makes up quite a sizeable chunk of the overall internet traffic, changing the protocol it uses from TCP (which utilizes congestion control) to UDP (which does not) could, theoretically, create a measurable impact on the overall performance of networks everywhere.
As pointed out on Slashdot, a great deal of this theory rests on exactly what the ISPs are going to do. Since they are the gatekeepers to the internet (scary thought), they could probably regulate their clients to the point of mitigating this possibility before it even becomes a concern. Granted, the whole reason this protocol change is being implemented is to circumvent the controls some ISPs have put in place in order to squelch the barrage of bittorrent traffic (not because there’s a lot of it, but because it’s often [NOT ALWAYS] illigit downloads). It’ll be interesting to see how this scenario plays out.
Nevertheless, I’m secretly hoping that Bittorrent, Inc. decides to change this one up. It really doesn’t seem like a very bright idea at all.
Bittorrent, Inc. just released a response to the article above, calling the belief that their change in protocol will bring down the internet “utter nonsense.” In fact, they say it will help reduce latency and overall network traffic! I don’t know about you, but last I checked, the very definition of UDP was that it was unregulated…so I fail to see how switching the most ubiquitous application to an unregulated protocol from a regulated one will reduce overall internet traffic. But maybe that’s just me. After all, I am only a lowly graduate student.