Slashdot Mirror


Replacing TCP?

olau writes "TCP, the transfer protocol that most of the Internet is using, is getting old. These guys have invented an alternative that combines UDP with rateless erasure codes, which means that packets do not have to be resent. Cool stuff! It also has applications for peer-to-peer networks (e.g. for something like BitTorrent). They are even preparing RFCs! The guy who started it, Petar Maymounkov, is of Kademlia fame."

112 of 444 comments (clear)

  1. Has anyone considered Decnet? by Power+Everywhere · · Score: 4, Interesting

    Now that Digital is little more than IP spread across a few different companies, maybe the holder of Decnet's patents could release the protocol under an Open Source license. If I recall correctly it was quite the networking layer.

    1. Re:Has anyone considered Decnet? by DAldredge · · Score: 2, Informative

      Not all of Digital's network tech was sane...

      DEC MMJ

      Digital Equipment Co.'s proprietary Modified Modular Jack. It is identical to a standard USOC 6-position jack, except that the locking tab has been offset to the right to prevent an MMP (modified modular plug) from fitting into a USOC jack. AMP5-555237-2 Plug

    2. Re:Has anyone considered Decnet? by JohnGrahamCumming · · Score: 5, Informative

      It was quite a complicated set of protocols and IIRC the final versions were using TCP/IP as their transport layer and below. The versions before that were using OSI.

      http://en.wikipedia.org/wiki/DECnet

      John.

    3. Re:Has anyone considered Decnet? by Anonymous Coward · · Score: 2, Informative

      Works GREAT! I've used it for some of my customers who need DECnet access and are running workstations and DECnet-enabled applications on Linux. The inaddr structures are virtually identical from the old Digital DECnet-PC libraries, so code is pretty portable.

      However, DECnet Phase IV only has a 16-bit address address range. You get larger networks using "hidden areas", which are similar to the 10.* and 192.168.* reserved addresses. It also requires that the NIC MAC address imply the DECnet address,
      which drops requirement for ARP support and means all interfaces have the same DECnet address.

      DECnet Phase V, as other posters have noted, has kindof moved from the OSI to TCP/IP type networking.

      DECnet is a nice protocol, but it just doesn't scale easily to Internet-sized networks.

    4. Re:Has anyone considered Decnet? by St.+Arbirix · · Score: 2, Interesting

      I found one of these in a warehouse back when I was in highschool. I always wondered what such a useless looking cable could be for. It wasn't like that tab would have prevented me from putting the cable in a plug wrong. I ended up grinding off the offensive bit and using it anyway, it was 80ft of otherwise good cable encased in the stiffest plastic I've ever seen used. Now it runs through dirt.

      --
      Direct away from face when opening.
  2. nonsense by N3wsByt3 · · Score: 4, Interesting

    TCP may be old, but it can go on for another 50 years wothout any problem.

    --
    --- "To pee or not to pee, that is the question." ---
    1. Re:nonsense by savagedome · · Score: 3, Interesting

      TCP may be old, but it can go on for another 50 years wothout any problem.

      Somehow, the title of your post is appropriate for the subject of your mesaage.
      Did you pull that 50 years out of your..... you know.

      Change is not going to happen overnight. They are suggesting a better protocol which is still in the labs for the most part.

      Remember how long since IPv6 is out? And now check what we are still using. It's all about changing it gradually.

    2. Re:nonsense by ebuck · · Score: 3, Insightful

      Who flamebaited this? It's not derogatory, and it's a valid opinion. TCP's shortcomings are going to constantly be mitigated by better router and switch hardware.

      The article is little more than an advertisment for their socket management software, so it's no more news than what SCO produces, but from what I can gather...

      There's no way to obtain data that was truly lost, so they are using an error correcting encoding of the data (and wasting some of the bandwith in the process) They're not really doing something radical, it's just UDP/IP. They just have some software that silently handles the data loss and unpacking which sits on top of a UDP/IP socket. So they've moved the problem from layer 3 into the application layer (layer 7).

      Their entire product places emphasis the amount of network utilization, but little else. I imagine that they're wasting a portion (but who knows how much) of their "utilized" bandwith, and they're certainly wasting a lot of CPU time encoding and decoding the packet payload. Thier sales pitch is basically "TCP/IP bad, UDP/IP better" but they never clearly address how much CPU time this solution requires or how much of the "utillized" bandwith is wasted.

      Using UDP/IP with retransmission in software has been done many times. Look at FTP.

    3. Re:nonsense by SavingPrivateNawak · · Score: 4, Funny

      TCP != IP...

      Duuude, you can't compare TCP to IP, they're different units! You have to divide them (TCP/IP)!

    4. Re:nonsense by Alioth · · Score: 2, Interesting

      Also, why layer it on top of UDP? Why not just have a new layer 3 IP protocol instead?

    5. Re:nonsense by Aragorn992 · · Score: 4, Insightful

      They are suggesting a better protocol which is still in the labs for the most part.

      And what makes this a better protocol? Its vast history of being a solid, reliable protocol with its massive amount of industrial testing? Oh wait thats TCP.

      Frankly, new stacks that look better than old ones are a dime a dozen. Until you test them in the real world you will never know and why bother changing TCP when it does a damn fine job right now?

      IPv6 was implemented for the sole reason (primarily) of addressing the shortage of IP addresses.

    6. Re:nonsense by bogomipz · · Score: 2, Insightful

      Using UDP/IP with retransmission in software has been done many times. Look at FTP. Umm, since when is TCP not software?

  3. Evil Bit? by Sexy+Commando · · Score: 5, Funny

    Does it have Evil Bit implemented?

  4. A working wikipedia link for Kademlia by jbellis · · Score: 3, Informative
    1. Re:A working wikipedia link for Kademlia by daserver · · Score: 2, Informative

      The link in the post is coralised. Maybe someone is blocking your outgoing port 8090 for you :-)

    2. Re:A working wikipedia link for Kademlia by squiggleslash · · Score: 2, Interesting
      Maybe someone is blocking your outgoing port 8090 for you :-)
      That would be fairly normal. Most businesses I've seen tend to block all ports except 80, 553, and, occasionally, 8080 because it's a popular "alternative".

      I'm kind of baffled to be honest that the Coralisational people chose a port other than 80. Still, if we're in an article discussing running a high level protocol over the top of another high level protocol (these people seem to understand efficient networking about as well as they understand the GPL), it kind of seems appropriate.

      --
      You are not alone. This is not normal. None of this is normal.
  5. Old!=bad by gspr · · Score: 5, Insightful

    The submitter says that TCP is getting old, but does that really tell us anything about how well it does its job?

    1. Re:Old!=bad by jfengel · · Score: 5, Interesting

      From the first paragraph of TFA:

      This problem stems from the fact that TCP calculates the congestion of the channel based on its round-trip time. The round-trip time, however, reflects not only the congestion level, but also the physical length of the connection. This is precisely why TCP is inherently unable to reach optimal speeds on long high-bandwidth connections.

      A secondary, but just as impairing, property of TCP is its inability to tolerate even small amounts (1% - 3%) of packet loss.

      I find it kind of interesting that these are two competing problems: one having to do with high bandwidth (and presumably high-reliability) connections, the other with low-reliability connections. My home DSL, however, often fits into the latter category: 3% packet loss is not uncommon on bad days. So maybe the two aren't so incompatible after all.

    2. Re:Old!=bad by RAMMS+EIN · · Score: 4, Insightful

      TCP does have its shortcomings.

      As they mention on their site, TCP's bandwidth usage is dependent on the latency of the link. This is due to the fact that sliding windows (the number of packets that are allowed to be out on the network) have a limited size. TCP sends a windowful of packets, then waits until one is acknowledged before sending another one. On high-latency links, this can cause a lot of bandwidth to go unused. There is an extension to TCP that allows for larger windows, addressing this problem.

      Another problem with TCP is slow start and rapid back-off. IIRC, a TCP connection linearly increases its bandwidth, but will halve it immediately when a packet is lost. The former makes for a very slow startup, whereas the latter causes a connection to slow down dramatically, even though a lost packet can be due to many factors other than congestion. Slow start has been addressed by allowing connections to speed up quicker, about rapid back-off I'm not sure.

      The solution this company provides seems to play nice with TCP by varying the transmission speed in waves. Apparently, this improves speed over TCP's back-off mechanism, but it obviously doesn't provide optimal bandwidth utilization.

      --
      Please correct me if I got my facts wrong.
    3. Re:Old!=bad by BridgeBum · · Score: 2, Informative

      TCP is a good protocol, but it is far from perfect. It does have weakness in it's windowing mechanism which can vastly reduce the throughput over long distances/mild latency with long durations. (Think FTP.) This is probably the problem they are refering to with #1.

      For #2, this could simply be retransmission problems. TCP has a strict sequential ordering to packets, so a packet lost in the stream could cause other packets to be discarded, forcing more retransmissions than were technically required. This could be considered a 'weakness' of the protocol, since under some circumstances it could be desireable to receive the packets in a random order and allow assembly at the endpoint. (Think BitTorrent) So it's not unreasonably to examine advances in networking protocols. As for wide spread adoption....well, that's another story all together.

      --
      My UID is the product of 2 primes.
    4. Re:Old!=bad by labradort · · Score: 2, Interesting

      Now I understand why my satellite based ISP from years ago would start off transfers at a trickle and slowly speed up. It interpreted the 700ms ping into space and back as congestion.

      This could have a benefit for parts of the world where the Internet is available only by satellite.
      People typically think of Antarctica and mountain regions when I say that, but really, any place without phone or cable, or where you need something better than text messaging over a blackberry, fits the role of using satellite ISP.

      I only need to travel a mile from my University with terrific bandwidth to be in place where there are no phone lines or cable available.

    5. Re:Old!=bad by amorsen · · Score: 4, Informative
      TCP has a strict sequential ordering to packets, so a packet lost in the stream could cause other packets to be discarded

      That's what selective ack is for. It's pretty old hat at this point, everyone has it implemented.

      --
      Finally! A year of moderation! Ready for 2019?
    6. Re:Old!=bad by ebuck · · Score: 4, Informative

      Most modern TCP/IP implementations use a sliding window algorithim internally, which caches the out of order packets while it's trying to re-get the missing packet.

      So you're really only concerining yourself with ordered delivery when the delay in the natural order is greater than that of the sliding window (the cache of received packets that you're not going to tell the software about just yet)

      This takes care of trivial things where packets arrive "just barely" out of order, but in a true packet loss situation, can block the channel for quite some time.

      So the strict sequence you refer to is the sequence the packets are presented to the next layer (usually the application in Ethernet), not the sequence the packets are received by the machine.

    7. Re:Old!=bad by Gilk180 · · Score: 5, Informative

      Actually, TCP increases exponentially until the first packet is dropped. It backs off to half, then increases linearly, until another packet is dropped, backs off to half ...

      This means that a TCP connection uses ~75% of the bandwidth available to it (after all this stabilizes). So if there is only a single tcp connection over a given length, it will be 75% full at best. However, the whole reason for doing a lot of this is to allow many connections to coexist. If you transmit as fast as possible, you will get the highest throughput possible, but you will end up with a lot of dropped packets and won't play nice with others.

    8. Re:Old!=bad by Harik · · Score: 2, Interesting
      I call bullshit to your logic. I've got a number of point-to-point T1s for specific uses, and I can quiesce them and do large file transfers over them for backups. I get ~170k transfer speeds, which are theoretical link maximum. (packet/frame overhead). According to you, I should saturate out at 144k.

      Now, what they're doing isn't quite the same. You wouldn't serve webpages or email over their protocol. You would do something like bittorrent, though, since you can snag the missing frame later or from another peer. It'd be really good for streaming media, since mere milliseconds after the frame is due it's already useless. Moreso with videoconferencing and VoIP, since those can't have even a tiny buffer.

    9. Re:Old!=bad by j1m+5n0w · · Score: 2, Informative
      TCP's bandwidth usage is dependent on the latency of the link. This is due to the fact that sliding windows (the number of packets that are allowed to be out on the network) have a limited size.

      TCP's window size is not a fixed size. There is a maximum, but most "normal" connections are well below it. (Links with very high bandwidth and high delay may reach this limit, which can be increased somewhat with the right TCP extensions.) TCP's window size, in fact, regulates its bandwidth consumption.

      Another problem with TCP is slow start and rapid back-off. IIRC, a TCP connection linearly increases its bandwidth, but will halve it immediately when a packet is lost.

      That's not a bug, it's a feature! AIMD (additive increase, multiplicative decrease) is used because it's been found to work for most people. The multiplicative decrease part may seem drastic (cutting the window in half whenever a packet is lost), but it does do a good job of preventing severe packet loss due to congestion.

      When multiple connections are sharing a link, TCP ends up favoring the lower latency connection. This happens because when a packet gets lost (often this is because a link is not fast enough to handle the data being sent over it), the corresponding sender fails to receive an acknowledgement, and reduces it's window size in half. Window size is incremented by some small value each time a full window of data is acknowledged. The window size of low latency connections grows much more quickly than high latency connections, so the low latency connection will have a larger window most of the time.

      This is a known limitation of TCP, but I'm naturally suspicious of anyone who claims to have "fixed it" without offering specific details. Squeezing a little more bandwidth out of TCP is far less important than preventing the Internet from becoming unusable whenever a link becomes congested.

      -jim

    10. Re:Old!=bad by Thuktun · · Score: 3, Informative

      That's what selective ack is for.

      And that only works within the TCP window size. For discretely-sized data transfers on the order of megabytes and gigabytes, delaying transfer of one TCP window (on the order of dozens of kilobytes) is not the best way to get maximum throughput.

    11. Re:Old!=bad by InfiniteWisdom · · Score: 3, Interesting

      No, the problem is with the way TCP's congestion window works. When there is no loss, the congestion window is increased linearly, typically at 1 packet a roundtrip. On the other hand, whenever a packet is lost the window is cut in half. On a high latency, high bandwidth link (i.e. one with a large delay-bandwidth product) the window required to keep the link saturated could be tens of thousands of packets. You could tweak the parameters, but ultimately you still have additive-increase multiplicative decrease (AIMD).

      The key problem with TCP is that it assumes that most losses happen because of packets being dropped due to congestion, not because of data corruption. Treating every loss as a congestion event worked well in the early days of the Internet, but is counterproductive today where the core of the Internet has plenty of spare capacity and congestion usually happens at the edges.

      If ECN were universal, one could ignore losses (for the purpose of congestion control). There are lots and lots of protocols that have been designed by the computer science research community... like look through the proceedings of, say, ACM SIGCOMM. You'll find no shortage of new protocols.

      Designing one that has big enough advantages to justify the cost of switching is another matter. TCP works find to today's cablemodems and such. Its when you start talking about trans-continental multi-gigabit networks that its limitations become a problem.

    12. Re:Old!=bad by dgatwood · · Score: 2, Interesting
      The back-off design works relatively well if you assume that the network is relatively reliable. As soon as non-bandwidth-related packet loss is introduced at any real frequency, it becomes the most horrible nightmare in existence. Add a filter to your firewall sometime that tdrops 1% of packets randomly. Try to use the connection.

      This is compounded when you start doing layered networking (PPPoSSH or similar) on top of such a system. Then, the packet dropping problem is replaced with multi-second latency all of a sudden, and performance goes to hell in a handbasket. The backoff design works well in the lab, but doesn't always work well in a real-world environment....

      What we need to do, IMHO, is to stop doing backoff after a connection has been established for a few thousand packets. Combine this with preemptible bandwidth reservation, and you have a much more robust connection in terms of maximizing data rate in a real-world network environment.

      Basically the idea is this: on connect, you do a bandwidth estimation based on the sliding window results for the first few thousand packets.

      You tell the router upstream "Okay, it looks like I'm getting 128Mbps to server A. Please reserve that much bandwidth and notify me if you are no longer able to provide it because something more important or more realtime needs the bandwidth."

      If higher priority traffic preempts you, you would get an "ICMP bandwidth reduced" packet or something. You then switch back to the sliding window to establish an estimate of your current bandwidth (or possibly the packet contains that info).

      If the app is consistently trying to push more data, the stack might periodically request a higher bandwidth allocation. If it succeeds (ICMP bandwidth increased?), the stack could increase the bandwidth allocated to that particular connection.

      Thoughts?

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

  6. Is it an open protocol? by FooAtWFU · · Score: 4, Insightful

    If it's not an open protocol (if they charge for use) it may find niche applications. If it is, it may proliferate. I wasn't able to find details about this on the site.

    --
    The World Wide Web is dying. Soon, we shall have only the Internet.
    1. Re:Is it an open protocol? by RealAlaskan · · Score: 4, Informative
      If it's not an open protocol (if they charge for use) ...

      It doesn't look good. Their webpage says:``We are planning to release Rateless Codes for free, non-commercial use, in open source under the GNU Public License.'' They are seriously confused about the terms of their own license. The GPL doesn't lend itself to ``free, non-commercial use'': it lets the licensee use and distribute freely, at any price, for any use.

      Either they'll loose that ``non-commercial use'' crap, or this will go nowhere.

    2. Re:Is it an open protocol? by jfengel · · Score: 2, Informative

      The front page says "not patented". They could claim it as a trade secret, but not if they plan to introduce an RFC. So even if they don't wish to open their sources, there will be open implementations very quickly.

      Assuming there aren't any underlying IP issues. I'm not aware of any patents on the forward error correcting codes they're using, but that doesn't mean they don't exist. And assuming some jackass doesn't say, "Here's a thing and it's not patented; I'll patent it and then license it back to the guys who did the work!" The patent office seems to do a lousy job of checking non-patent prior art.

    3. Re:Is it an open protocol? by n6mod · · Score: 2, Insightful

      Acutally, there are likely to be a mountain of patent issues. Not sure how legitimate these will turn out to be.

      Peter's paper was originally presented at the same conference where Digital Fountain also presented approximately the same thing. (Building on the LT codes that they had been shipping for years)

      I'm quite sure that DF has a stack of patents on their version.

      This may get interesting.

      (Disclaimer: DF laid me off in 2003)

      --
      You have violated Robot's Rules of Order and will be asked to leave the future immediately.
    4. Re:Is it an open protocol? by RealAlaskan · · Score: 4, Informative
      The General Public License gives you a license to use that code under certain terms.

      Almost true. It gives you a license to distribute that code, under certain terms. No license is needed to use a copy. Read section 5 of the GPL for an elegant confirmation of that.

      When they say "free, non-commercial use", and they talk about the GPL, they are making sense. The Linux kernel, which is GPL, may use their implementation.

      Sorry, you're way off here. Redhat sells Linux, and their customers use it for commercial purposes. Therefore, the Redhat version of the Linux kernel can't use their implementation. The issue is moot, however, since the non-commercial restriction would make their license non-GPL-compatible. Their implementation couldn't be included even in a kernel which would see non-commercial use only.

      Microsoft cannot use their implementation in any of its Windows OSes ...

      Wrong. If MS wanted to make a version which they would give free of charge to private individuals and charitable organizations, they could use it, since that would be entirely non-commercial, both in distribution and in use.

      ... without releasing the OS kernel under terms which are compatible with the GPL.

      For MS, that would be a problem, but it's the GPL part, not the non-commercial part, that would bite them. As I said above, the non-commercial restriction would render this license incompatible with the GPL.

      The GPL does not lend itself to "commercial use", because the "standard" model of software licensing is paying a price per use/copy of the binary, and the GPL doesn't work this way.

      Sorry, you've mis-construed non-commercial. Non-commercial typically means not used in commerce. Believe it or not, is is possible to sell software for non-commercial use. If you run your business using the software, that's commercial use. By the way, you should tell Redhat and Novell that bit about the GPL not working for ``paying a price per use/copy of the binary'', that'll be a revelation to them.

    5. Re:Is it an open protocol? by Fnkmaster · · Score: 4, Interesting
      They apparently already have some problems with GPL compliance. They are distributing binaries of a tool called Rateless Copy which they state uses the GPLed libAsync library under their own license while promising to deliver source code under the GPL "soon".


      Don't get me wrong, I think they mean well, but they are trying to prohibit commercial use of GPL-linked works. Nobody said the GPL was always friendly to your business plan, but you can either take it or leave it, not have it both ways. I know one of the founders of this company, Chris Coyne - he used to regularly come to my parties in college. Nice guys, and I am sure they mean well. They could use some serious guidance though on licensing and IP issues, not to mention trying to make a viable business out of network software, which is a tough proposition in itself.


      Feel free to contact me if you need help guys. :)

    6. Re:Is it an open protocol? by NoMercy · · Score: 4, Funny

      It's quite bloody obvious what would happen, if the protocal takes off, the BSD folk need to implement a BSD version, the linux guys would then dump there version and use the BSD version because the BSD guys tend to write better code, and it would likely be more comptable, windows would then use the BSD version and MacOS X would have the BSD version by default.

      No point really not releasing it under a BSD licence in the first place, save leting the BSD guys write a far better version for the world to use.

      The RFC is more important than the code anyway, and there fools for not writing the RFC first.

    7. Re:Is it an open protocol? by dustman · · Score: 3, Informative

      Boy are you idiot

      Thanks... I'm not sure if you're confused or trolling, but I respond anyway:

      Microsoft as long as they didn't change the stack could use it in their kernel without releasing the full kernel code.

      Wrong. The reason the LGPL exists is to address this specific case. If the stack were LGPL licensed, then MS could include it, and only be required to submit any changes they made to the LGPL'ed stack itself.

      As the Stack wouldn't be a derivative of the whole kernel.

      How could you possibly argue that their stack was a derivative of the MS kernel? I assume you meant to say that the MS kernel was a derivative of the stack... But then you are 100% wrong here. If MS used this code, then their kernel would be a derivative work, there's basically no way to get around it.

      Technically, the FSF specifically states that if two programs run in operation via a "pipe", that it doesn't consider them linked. Any form of dynamic linking, they are considered linked, so you couldn't load the stack as a dll or driver and consider yourself not a derivative work. There is perhaps a tiny bit of leeway if you're a lawyer, where you could say "the FSF thinks loading a driver makes the kernel a derivative work, but I don't, so let's argue that in court".

      Now to be really nice MSFT might have to make available ... an LGPL style wrapper

      You are way off base. GPL apps are specifically allowed to include LGPL stuff. This is a special case exemption from the normal rules of the GPL. LGPL stuff is *not* allowed to include GPL stuff.

  7. What exactly about TCP is getting old? by Anonymous Coward · · Score: 4, Insightful

    Some inefficiencies are one thing, but you're going to need a compelling reason to get everyone to switch.

  8. TCP is old...so what? by RAMMS+EIN · · Score: 5, Insightful

    TCP is old, but that doesn't mean it's bad or replacement is due. Some shortcomings have surfaced and been adressed. For the most part, TCP does a good job at what it was designed to do.

    --
    Please correct me if I got my facts wrong.
    1. Re:TCP is old...so what? by Harik · · Score: 2, Insightful
      And their "solution" (forward error correction) really means: introduce 5% packet loss in perfect conditions so even in an up-to-5% packet loss environment you get 100% transmission speed.

      (Hint: redundant data is the same as packet loss from a time standpoint)

    2. Re:TCP is old...so what? by Woody77 · · Score: 2, Insightful

      But not from a computation standpoint. Yes, you lose some bandwidth due to FEC, but if you don't drop the packets, you also don't need to compute the missing data from the FEC data.

      AFAIK, the point of FEC is that you need to send less data than you actually lose, but that's getting into lots of wierd math theory that I'm still coming up to speed on with FEC (looking at it for an application at work).

      The other advantage of FEC over NACK that I can see is that on a high-latency connection, or a server dealing with lots of clients, the server doesn't need to get involved. The client can compute the missing piece, maybe in less time than the resend would take.

  9. I wouldn't make any mention of bittorrent, etc.. by drunkennewfiemidget · · Score: 5, Insightful

    Because then you're going to have the suits trying to push it down, no matter how great/useful it is in an effort to kill the possibility of coming out with something that could make pirating any easier or more efficient. That's the only way they're going to see it.

    It's good to see innovation though, nonetheless.

  10. Yet another "reliable UDP" layer by syates21 · · Score: 2, Insightful

    This is hardly an innovative idea, and usually by the time you end up considering all the issues you wind up with something that looks a lot more like TCP than you had originally intended.

    Plus there are already protocol stacks that work around most of their gripes about TCP (slow performance over long pipes, etc).

    1. Re:Yet another "reliable UDP" layer by jrumney · · Score: 5, Insightful

      It appears that they get better performance than TCP by considering (all - 1) the issues. Basically, their protocol works and performs better than TCP because the pipes have spare capacity. If the pipes were at capacity, their protocol would break down. TCP has been designed to be robust in all conditions. Protocols like this that rely on "in most cases we can get away with allowing more errors than TCP does" are not going to replace TCP.

    2. Re:Yet another "reliable UDP" layer by Cinnamon · · Score: 2

      You know, despite my skepticism about what these guys are proposing, I'll take issue (somewhat) with your comment. Saying "TCP has been designed to be robust in all conditions" is true if by 'robust' you mean 'able to transmit at least some data'.

      But the criticism levelled at TCP in high-bandwidth, high-latency applications is entirely valid, and in some circumstances the inefficiency is so bad as to force people to use hacked solutions built on top of UDP (if you want to call doing a ton of application-level ECC a hack.) As clever as many of the features of TCP are, they're useless if inherent limitations in the protocol make it impossible to use it to carry the volume of traffic you need it to.

      I would argue that TCP is designed to be able to handle high packet loss, unstable routing, unstable physical links, etc., and it does all of that extremely well. But the fact is that regardless of how rare or rampant that sort of instability is, if a protocol can't scale to cross-country gigabit+ connections then something needs to be done, either in terms of improving the protocol or replacing it with something that has all the necessary functionality.

      --
      -- If we were in any other industry they would've shot us a long time ago.
  11. Rateless Internet (slashdotted) by Andreas(R) · · Score: 5, Informative
    Their website of the so called "experts" is down, it's slashdotted! (ironic?)

    Here is a summary of their technology copied from their website:

    Rateless Internet The Problem

    Rateless Internet is an Internet transport protocol implemented over UDP, meant as a better replacement of TCP. TCP's legacy design carries a number of inefficiencies, the most prominent of which is its inability to utilize most modern links' bandwidth. This problem stems from the fact that TCP calculates the congestion of the channel based on its round-trip time. The round-trim time, however, reflects not only the congestion level, but also the physical length of the connection. This is precisely why TCP is inherently unable to reach optimal speeds on long high-bandwidth connections.

    A secondary, but just as impairing, property of TCP is its inability to tolerate even small amounts (1% - 3%) of packet loss. This additionally forces TCP to work at safe and relatively low transmission speeds with under 1% loss rates. Nevertheless, our extended real-life measurements show that highest throughput is generally achieved at speeds with anywhere between 3% and 5% loss.

    The Solution

    By using our core coding technology we were able to design a reliable Internet transmission protocol which can circumvent both of the fore-mentioned deficiencies of TCP, while still remaining TCP-friendly. By using encoded, rather than plain, transmission we are able to send at speeds with any packet loss level. Rateless coding is used in conjunction with our Universal Congestion Control algorithm, which allows Rateless Internet to remain friendly to TCP and other congestion-aware protocols.

    Universal Congestion Control is an algorithm for transmission speed control. It is based on a simple and clean idea. Speed is varied in a wave-like fashion. The top of the wave achieves near-optimal throughput, while the bottom is low enough to let coexisting protocols like TCP smoothly receive a fair share of bandwidth. The time lengths of the peaks and troughs can be adjusted parametrically to achieve customized levels of fairness between Rateless Internet and TCP.

    The Rateless Internet transport is now available through our Rateless Socket product in the form of a C/C++ socket library. Rateless Internet is ideal for Internet-based applications, running on the network edges, that require high bandwidth in a heterogenous environment. It was specifically built with peer-to-peer and live multimedia content delivery applications in mind.

    1. Re:Rateless Internet (slashdotted) by Oscaro · · Score: 3, Informative
      Also, (from the site we know that

      Rateless Socket will be made available to select companies and institutions on a per-case basis. To find out more, please contact us.
    2. Re:Rateless Internet (slashdotted) by skiman1979 · · Score: 2, Insightful
      Their website of the so called "experts" is down, it's slashdotted! (ironic?)

      I've seen this "irony" thing mentioned before for this topic. The article discusses a protocol replacement for TCP that is supposed to be "better," but their site went down. If this new protocol was being actually used, then maybe it would be ironic. But for that to happen, their web server would have to use it, and the rest of us (who want to view the site) would have to use the protocol too. Where's the irony here? That would be like saying that ssh is bad because our FTP clients can't connect to it.

      --
      Having a smoking section in a public restaurant is like having a peeing section in a public swimming pool.
  12. Brilliant! by morgdx · · Score: 4, Insightful

    A slightly faster equivelent to TCP that I have to pay for and no-one else uses.

    Sign me up for that sucker right now.

    --
    http://jfin.org/jFin pure java open source financial library
  13. Not F/OSS by TwistedSquare · · Score: 2, Interesting

    Considering this is slashdot and all, I was surprised that their implementation does not appear to be open source (or indeed, freely available at all), though presumably such an implementation will be possible following the RFCs. It seems to work nicely alongside TCP using UDP, quite a cool idea. The question is whether it can break TCP's de facto stranglehold on reliable Internet communication. I'd love to play with it if I could.

  14. Whew! by PhotoGuy · · Score: 4, Funny
    "TCP, the transfer protocol that most of the Internet is using

    Often stories are posted that refer to products or code names, with no description, which is quite annoying.

    I'm glad to see this post doesn't run that risk.

    Thanks for clearing that up for me.

    -d

    --
    Love many, trust a few, do harm to none.
  15. Is replacing TCP necessary? by bigberk · · Score: 4, Insightful

    There's no doubt that an alternative to TCP might have technical merits. But as far as communication protocols go, TCP itself is pretty amazing. Modern TCP implementations have been tweaked over decades and have impressive performance and reliability. And modern TCP/IP stacks have rather unspoofable connection establishment, another excellent feature for security.

    If you want to replace TCP, you have to do more than just develop a new protocol that is faster. It would have to outperform TCP in speed, reliability, and substantially so in order to outweigh the costs of ditching a well-established and trusted protocol.

    1. Re:Is replacing TCP necessary? by 10101001+10101001 · · Score: 2, Insightful

      Two things. One, while modern TCP/IP stacks have hypothetically rather unspoofable connection establishment, programs like nmap show that not enough OSs take advantage of that in a meaningful way allow for short bursts of fake connection and do some action spoofs. Two, while it sounds like there's various issues with this rateless protoocol, the idea of a standard, faster protocol for larger pipes doesn't mean an end to TCP. It does mean that people have realized that single tcp connections have issues saturating bandwidth at very high speeds and that alternative protocols for that situation seem appropriate. To act like an alternative to tcp is somehow a doom to tcp is to act like no one uses udp because tcp has all these wonderful features that overcome limitations to udp. There's clearly the case that a new standard protocol that does have better file transfer features wouldn't be such a bad idea to consider as a third primary protocol. In OS terms, I'd liken it to how a Windows NT/X environment has messages (udp), streams (tcp), and random file access (new protocol, which will probably not be rateless).

      --
      Eurohacker European paranoia, gun rights, and h
  16. Ugh -- eyes are playing tricks on me. by IronChefMorimoto · · Score: 4, Funny

    While this sounds very interesting (have to re-take all those networking certification exams again, I guess), when I read this...

    The guy who started it, Petar Maymounkov, is of Kademlia fame." ...my eyes told my brain this...

    The guy who started it, Petar Maymounkov, is of Chlamydia fame."

    I was about to wonder what sort of "fame" you could get from that. Need coffee. Need sleep.

    IronChefMorimoto

  17. Respect! by WormholeFiend · · Score: 5, Funny

    R-E-S-P-E-C-T
    Find out what it means to me
    R-E-S-P-E-C-T
    Take care, TCP

    Oh socket to me, socket to me,
    socket to me, socket to me...

    1. Re:Respect! by miles31337 · · Score: 5, Funny

      Sung by Arethernet Franklin, no doubt.

  18. ANY loss level?? by D3 · · Score: 4, Funny
    "By using encoded, rather than plain, transmission we are able to send at speeds with any packet loss level."
    I want to know how they get data transmission at 100% loss!
    --
    Do really dense people warp space more than others?
    1. Re:ANY loss level?? by merdaccia · · Score: 3, Funny

      They never said anybody received anything ...

      --

      *blinking cursor*

    2. Re:ANY loss level?? by psmears · · Score: 2, Funny

      They only claim to be able to "send at speeds"... I guess 0bps is a speed :-)

  19. Can Anybody Explain? by RAMMS+EIN · · Score: 2, Insightful

    Can anybody explain to me how this technology? It reads like marketing speak to me, despite the fact that it will be/is released as open source. How does the technology actually achieve reliability without retransmits? Does it actually achieve it?

    --
    Please correct me if I got my facts wrong.
  20. Not gonna work if encumbered by JohnGrahamCumming · · Score: 4, Insightful

    1. This is coming from a company who are surely going to want to make money out of it somehow. Part of the reason TCP succeeded is there was no one to pay.

    2. They don't seem to understand the GPL:

    "We are planning to release Rateless Codes for free, non-commercial use, in open source under the GNU Public License."

    The GPL doesn't restrict commercial use, and hence the only way that they can do this is either they try to add some conditions to the GPL, or they use another mechanism to restrict commercial use: e.g. patents.

    No matter how good this technology is it's not going to get wide adoption is an alternative to TCP unless it's unencumbered.

    John.

    1. Re:Not gonna work if encumbered by Have+Blue · · Score: 4, Insightful

      If they want it to replace TCP, it will have to be completely unencumbered, and that includes viral licenses. Under BSD, commercial adoption would be possible.

    2. Re:Not gonna work if encumbered by realdpk · · Score: 2, Funny

      No license in the world will make MySQL work "nicely".

  21. Re:UDP... is drwining the internet. by imsabbel · · Score: 2

    So you say if telcos sell more bandwith than their infrastructure can handle there will be problems...
    Uh. Wouldnt have thought THAT could happen....

    --
    HI O WISE PRINCE. WHT TOOK U SO DAM LONG?
  22. Encoded Packets doesn't Solve Problems by kakos · · Score: 4, Insightful

    I did read their website and it looks like their revolutionary new replacement for TCP is UDP with their proprietary ECC built on top of it. However, there is a good reason why TCP never used ECC (they did exist back then).

    1) The major problem a TCP packet will face is getting dropped. They mention this problem. They claim their encoding will solve this problem. It won't. No ECC algorithm will allow you to recover a dropped packet.

    2) Most packets that are corrupted are corrupted well beyond the repair of most ECCs.

    3) ECCs will cause packet size to increase. Not a huge problem, but why do it when ECCs don't help too much to begin with?

    1. Re:Encoded Packets doesn't Solve Problems by Another+MacHack · · Score: 5, Informative

      You'd be right if they were talking about an error correcting code designed to repair damage to a packet in transit.

      They're actually talking about erasure correction, where each symbol is a packet as a whole. In a very simple form, you send a packet sequence like this:

      A B (A^B) C D (C^D)

      So if you lose packet A, you reconstruct it from (B ^ (A^B)) = A. This simple scheme increases the number of packets sent by 50%, but allows you to tolerate a 33% loss, presuming you don't lose bursts of packets. There are more sophisticated schemes, of course, and there are various tradeoffs of overhead versus robustness.

    2. Re:Encoded Packets doesn't Solve Problems by netwiz · · Score: 3, Insightful

      well, assuming that the dropped frames aren't sequential in large number, some kind of ECC (think RAID5 for IP) could alleviate this issue. Granted, you'd be sending three packets for every two packets worth of data, but you could lose any one of them and still be okay.

      However, I don't think most people would necessarily enjoy 50% larger payloads required to make this work. It could be tuned back, but for every decrease in overhead, the effect of losing a frame gets worse. In the end (and this is purely speculative, as I've no real data or math to back this up) it may be that TCP remains more effective with better throughput.

      I'll be honest, I don't see/experience the kinds of lag and retransmission problems that are described in the article, and any large streaming transfers to my home or desk regulary consume 100% of my available bandwidth. So for me, TCP works just fine.

    3. Re:Encoded Packets doesn't Solve Problems by daserver · · Score: 2, Interesting

      Sorry this is not correct. Rateless erasure codes is ECC per complete file not per packet. Please read the paper.

    4. Re:Encoded Packets doesn't Solve Problems by hamanu · · Score: 2, Informative

      You are a fuckng pompus ass...
      no wait, sorry, you hit one of my buttons.

      ECC codes CAN and DO cover packet loss if you interleave the ECC information accross packets, instead of just generating it for a single packet. In this scenario lost packets are called "Erasures", and their coding is "rateless erasure coding". It will work just fine.

      --
      every _exit() is the same, but every clone() is different.
    5. Re:Encoded Packets doesn't Solve Problems by Raphael · · Score: 3, Insightful

      You are almost correct, except that doing the error correction on the whole file instead of a single (or a couple of) packets allows the file to be transmitted even if one or several packets are dropped.

      However, this kind of error correction is only good if you are exchanging rather large files. They cannot claim to replace TCP if their protocol cannot be used for any kind of interactive work. Take for example SSH or HTTP (the protocol that we are using for reading Slashdot): they are both implemented on top of TCP and they require TCP to work equally well for exchanging small chunks of data (keypress in an SSH session, or HTTP GET request) and exchanging larger chunks of data (HTTP response).

      While their new protocol would probably work well for the larger chunks of data, it is very likely to reduce the degrade the link performance for the smaller bits exchanged during an interactive session. So they are probably good for file sharing. But TCP has many other uses...

      Also, they mention that they can be TCP-friendly by transmitting in "waves". I doubt that these "waves" can be very TCP-friendly if their time between peaks is too short. One thing that TCP does not do well is to adapt its transmission rate to fast-changing network conditions. So if they allow the user or the application designer to set the frequency of these waves, they could end up with a very TCP-unfriendly protocol.

      --
      -Raphaël
    6. Re:Encoded Packets doesn't Solve Problems by freqres · · Score: 2, Informative

      I have to agree with you about having doubts about this. Vinton Cerf and the others that came up with TCP were/are real smart fellars and put a lot of thought into the design. Thanks to guys like Shannon, Hamming, Hartley and Nyquist, we have a pretty thorough understanding of the limits of computer networks and sending/receiving information. Unless some wacky/spooky new way is figured out in the far reaches of physics, I don't see big improvements happening in the fundamental protocols.

      --
      Rampant Ninja related crimes these days...Whitehouse is not the exception
    7. Re:Encoded Packets doesn't Solve Problems by Raphael · · Score: 2, Informative
      I'd rather add a thin error checking addition and ask for a retransmission for the occasional dropped packets.

      Congratulations, you have just re-invented TCP with selective acknowledgments (a.k.a. SACK, RFC 2018, published in October 1996).

      For more discussion on this topic, see also: http://www.icir.org/floyd/sacks.html.

      --
      -Raphaël
    8. Re:Encoded Packets doesn't Solve Problems by shadowmatter · · Score: 4, Informative

      I suspect the exact details of the erasure codes they're using can be found here, which by no coincidence is written by Petar Maymounkov and David Mazieres (both the authors of the original Kademlia paper). A good primer for erasure codes would be to read up on Reed-Solomon codes, which seek to provide similar end-results as erasure codes.

      Rateless codes are important because they are the first step to a "digital fountain" model of data transfer. The idea is this: say you have a file of 10KB. Using erasure codes, you can "oversample" this file -- that is, turn this file into 40 1KB chunks. Now by collecting ANY 10 of these 1KB chunks, you can reconstruct the original file.

      The reason the digital fountain is so cool (and the reason for its name) is because it would make the most amazing BitTorrent client ever. Why? In BitTorrent, you're doing things like choking/unchoking, aggressively seeking the rarest pieces, and hoping that some guy who has the ONLY COPY of piece X doesn't leave the network before it is replicated. Using Erasure Codes, everyone would just blindly get whatever data is sent to them (where each data unit is an "oversample"), and blindly forward it on all outbound links. But if you're getting data in this manner, isn't there a chance you'd get the same piece of data twice (which is like getting the same piece twice in BitTorrent, which is no use)? If you oversample enough, you can make the chance of this happening approach 0. Note in this scheme, there's no choking or unchoking here (so you'll never go through a period of time on a rare torrent where EVERYONE is choking you, and your download rate is 0KB/s), and you don't have to worry about that one guy leaving the swarm with some critical piece -- not just because you can always reconstruct it, but also because that piece is no more critical than any other.

      It's beautiful, really. So why aren't we doing it? Simple -- erasure codes are computationally expensive to compute, although
      they're getting easier as new sorts of erasure codes are being developed, and PCs get faster. The first big breakthrough was with Tornado codes, if I remember correctly. Anyway, we'll see what the future holds...

      - shadowmatter

    9. Re:Encoded Packets doesn't Solve Problems by renehollan · · Score: 2, Informative
      You are correct: you can overcome a burst error of any length with a suitable ECC.

      However, what do you do when you encounter a burst error longer than your ECC design limit? A more complex code may not be the answer for reasons of computational complexity.

      The solution (employed with great success in CD media) is interleaving: instead of sending A1A2A3 B1B2B3 C1C2C3 you send A1B1C1 A2B2C2 A3B3C3. Let's assume the middle of that, A2B2C3, got lost, and you can only recover an error of one third that length. No worries! You've interleaved your data!!

      You deinterleave what you receive from A1B1C1 A3B3C3 into A1<error>A3 B1<error>B3, and C1<error>C3. Each of these can be corrected.

      There are whole families of such interleaved error correcting codes. You can even interleave interleaved codes! CIRS means "cross-interleaved Read Solomon" and covers many of the techniques employed commercially (particularly in CD media).

      But, there is a price to pay, and that is latency: you have to have all the data to deinterleave so, instead of waiting for, say, three packets, you have to wait for nine.

      Such codes are well-suited for streaming transmissions (if you can tolerate the latency), but I'm not sure that they'd work well for interactive applications.

      --
      You could've hired me.
  23. flamebait? by N3wsByt3 · · Score: 4, Insightful

    I fail to see what is flamebaiting it is to say that TCP can go on for another 50 years, without problem.

    Exactly the same kind of post a bit below gets 'insightful'.

    It is simply true. Yes, there are some little drawbacks with TCP, but in the whole article, they do not give a compelling reason to switch, let alone why one would *have* to. I mean, RTFA: TCP is at 1-3% and the most efficient would be a throughput with 3-5% (loss)...but so what? It's not optimal, but does it anywhere claims TCP is doomed because it's not optimal in certain area's?

    There are myriads of things that aren't optimal on the Net, it doesn't mean they have been here for years and will be for years to come, nor that it is a necessity to switch, if the only thing lacking is that it's not optimally suited.

    --
    --- "To pee or not to pee, that is the question." ---
  24. sounds good by spacerodent · · Score: 2, Interesting

    the real issue with any new technology like this is will it be accepted as a standard? For that to happen it needs to be relyable, easy to get (free), and hard to exploit. This looks to have all the above so in 5 to 10 years maybe we'll see this implmented everywhere.

  25. old - so what then ? by l3v1 · · Score: 2, Insightful

    It doesn't seem reason enough to build a new protocol for TCP replacement just because it is "old". Protols ar not living beings you know, aging doesn't show on their cells. Of course troubles always has been popping up over the years, but nothing unsolvable (and nothing in the likings of IP).

    All in all, it's good to have new alternative solutions and new technologies at hand, but to state such things as replacing TCP 'cause its age (maturity, that is :D ) is a bit winged to say the least.

    --
    I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
  26. Good luck, but it will never happen by Ars-Fartsica · · Score: 4, Insightful

    Just look at the adoption rates on IPv6. No one is going to touch a new protocol at this stage. Its not even clear that this is needed. Point me at a specific TCP pain point that is specifically and obviously reducing internet adoption...any takers?

    1. Re:Good luck, but it will never happen by Raphael · · Score: 2, Insightful
      First, the protocol is built on top of UDP, meaning that it can be implemented at the application layer.

      Or rather: the protocol is built on top of UDP, meaning that it will only be implemented at the application layer. There are other fine protocols built on top of UDP, such as RTP/RTCP used for streaming. Are there any operating systems implementing these protocols in the kernel? I don't think so. Are there libraries providing a convenient API allowing application developers to use these protocols easily? A few, but not that many. It is likely that any other protocol implemented on top of UDP would have a similar fate.

      TCP is cooperative - it will share 'fairly' any congested channel. It will lose to a more greedy protocol.

      You don't seem to understand that most network operators (those who play with the routers at your ISP or somewhere else in the backbone) want protocols to be fair. If too many people start using a protocol that is unfair, then many ISPs will start tweaking their routers and firewalls in order to limit the bandwidth available to the unfair protocol. ISPs have to keep their customers happy (or at least happy enough to pay their bill) and an unfair protocol would make many other customers unhappy.

      --
      -Raphaël
  27. Yawn by Rosco+P.+Coltrane · · Score: 4, Insightful

    YAWN Protocol --> Yet Another Wonderful New Protocol

    ASCII is still around, despite its numerous shortcomings. There's this small thing called "backward compatibility" that people/consumers seem to love, for some reason. Well, same thing for TCP/IP. Even IPv6 has trouble taking off in the general public, despite being essentially just a small change in the format, so never mind the YAWN Protocol this article is about...

    --
    "A door is what a dog is perpetually on the wrong side of" - Ogden Nash
  28. Doesn't work. Sorry, do not collect $200. by Anonymous Coward · · Score: 5, Informative

    Tried their "Rateless Copy" utility, transferring a 5.8 mb binary file from my web server in Texas to my local connection in Toronto.

    With Rateless Copy: time between 31-41 seconds, average of 200k/s, the resulting file is corrupted. Tried it again to ensure, same result.

    Without rateless copy (http file download) 8 seconds, average of 490k/s, the resulting file works fine as expected.

    Sorry, but I don't think it's all that great.

    1. Re:Doesn't work. Sorry, do not collect $200. by ANTI · · Score: 5, Informative

      Here it was even worse.

      Just transfered a ~600MB (Linux CD) ISO from Europe to Australia.
      rateless-copy did about 400K/s
      scp managed 2.8M/s

      At least both files were intact

      --
      On the other side of the screen it all looked so easy.
    2. Re:Doesn't work. Sorry, do not collect $200. by rick446 · · Score: 2, Informative

      Depends on which distro. SourceMage, for instance, bzip2-compresses their ISOs to ~130MB. And that's for a 650MB image, IIRC. Knoppix 3.6, OTOH, contains a 2GB file system compressed down to 700MB, so I wouldn't expect it to compress much (if at all).

      --
      http://pythonisito.blogspot.com/
  29. SCTP by noselasd · · Score: 5, Interesting

    Why not SCTP ? See RFC 2960. Already in the Linux kernel, Kame, (solaris ?) and probably others.
    Intro here

    - SCTP can be used in many "modes"
    * Provides reliable messaging (like UDP,but reliable)
    * Can be used as a stream protocol (like TCP).
    * One connection/association can hold multiple streams.
    * One-to-many relation for messaging.
    * Better at dealing with syn flooding than TCP.

    Then again, I guess inveting the wheel is more "fun" :-/

    1. Re:SCTP by Anonymous Coward · · Score: 2, Interesting

      SCTP is designed for a slightly different purpose than high speed reliable streams over slighly lossy paths. SCTP works well for grouping the requests for HTTP images and related files into one stream so that the startup bandwidth can be increased. My understand of SCTP for high bandwidth slightly lossy paths is that it will perform similar to TCP with the slight advantage that some substreams may have reduced latency.

      There are other existing solutions to the problem of increasing bandwidth utilization for high bandwidth moderately lossy links. High speed TCP and various variaents that modify the TCP congestion control algorithm at high data rates have been reasonably well studied, but still involve fundamential trade-offs. IMHO, you need link information or path information that seperates the dropped packets into dropped due to congestion and dropped due to natural error. Otherwise, in the schemes that I've seen, you can end up competeting for bandwidth unfairly or even starving the normal TCP connections. Also IMHO, effectively using the SACK information would go a long way to increasing data rates over TCP.

      As for the scheme that is proposed in the article, I think it is highly flawed in several respects. First, although forward error correction (FEC) can be used at a packet level, it is highly undesirable to do so for multiple reasons: it significantly increases the bandwidth used for normal transmission, it increases the complexity of stream reassembly, and in most cases, it's not needed. Second, I really don't think you buy very much by using "wave-based" transmission timing. It seems like that has a lot of potential to interfere badly both with other "wave-based" transmission and with normal TCP.

      Finally, although I realize that there can be things to gain by reworking TCP, especially for slighly lossy links, it is important to ensure that any improvement has nearly as good as performance as TCP on low corruption loss links. For low corruption loss links with many connections, TCP does really well.

  30. Getting Old? by 89cents · · Score: 4, Funny
    The air that I breathe, the water that I drink, and the land that I walk upon is getting really old. Someone needs to replace it all.

    Really, is TCP flawed?

  31. Better TCP by whose rules? by shic · · Score: 3, Insightful

    When considering protocols for information transport, it is very important to be absolutely sure what assumptions you are making. There are a number of non-independent factors which influence the suitability (and hence efficiency) of network protocols to application demands. Bandwidth, for example, is related to but doesn't define the statistical distribution of latencies; maximum packet rate and their relationship to packet size. The channel error rate (and statistical distributions of packet failures) are again linked to fragmentation and concatenation of transmitted datagrams - and this in turn affects latencies when considering "reliable" transport protocols. Routing policy and symmetry of physical links introduces yet more tradeoffs which need to be considered - not to mention the potential problems evaluating if the burden of protocol computations outweighs the advantage of an improved strategy for a given physical link. (And I'm not even going to mention security!) When considering protocols the most important thing to consider is the model they assume of the communications infrastructure on which they are to be deployed. TCP is likely the optimal solution given the assumptions TCP makes... if you change those assumptions to more closely fit a particular network infrastructure you will likely get better performance only on that infrastructure, but far worse performance where your new assumptions do not hold. I used to be interested in the idea of dynamically synthesizing protocols to best suit the actual physical links in a heterogeneous network... however my ideas were met with extreme disinterest; I felt my critics demanded I present a protocol which beats TCP under TCP's assumptions - and no amount of hand-waving and explanation would convince them this was a silly request. I still think the idea has merit - but having wasted 3 years of my life trying to push it uphill, I've found other interesting (and far more productive) avenues to pursue.

  32. Update TCP, don't add new protocol by AaronW · · Score: 3, Informative

    While there are a number of issues with TCP, I think it would be much better in the long run to work on fixing TCP rather than replace it. That way all the existing apps can take advantage of the fixes.

    One thing that bothers me is I see ISPs applying policing to their subscriber's bandwidth. Policing is quite unfriendly to TCP, unlike, say, shaping. With policing, a router decides either to pass, drop, or mark a packet based on if it exceeds certain bandwidth constraints. Shaping, on the other hand, will buffer packets and introduce additional latency, thus helping TCP find the sweet spot. Of course shaping will also drop, since nobody provides infinite buffer space.

    TCP is relatively easy to extend. There are still some free flag bits and additional fields can be added to the TCP header if needed.

    -Aaron

    --
    This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
  33. Re:SCTP (and other neat protocols) by spaceyhackerlady · · Score: 2, Interesting

    SCTP is indeed interesting. I've tangled with it when playing with SIGTRAN, i.e. SS7 over IP. The nightmares ceased a while ago. :-)

    One of the more interesting special-purpose protocols I've ever messed with was the PACSAT Broadcast protocol, used for downloading files from satellites.

    It makes the assumption that downloaded files are of general interest, so it broadcasts them. Which files it broadcasts is in response to requests from ground stations. Ground stations can also request fills, pieces of files they haven't received yet. The protocols have hooks to allow files to be downloaded in pieces, over several orbits, since individual passes rarely exceed 20 minutes, and the downlink bit rate isn't all that high. This all runs over a protocol analogous to UDP.

    You can get files by just listening, if you want to.

    ...laura

  34. They invented TCP... again!! by Bluefirebird · · Score: 4, Informative

    (NOT) Everyone knows that TCP has problems and for many years people have been developing transport protocols that enhance or replace TCP.
    These guys haven't invented anything new. There are many flavours of TCP with different congestion mechanisms and there is a special kind of transport protocol that solves most problems...
    I'm talking about SCPS-TP, supported by NASA and it performs very well with high bit-error links (like satellites) and it also copes with high delay. The good thing about SCPS-TP is that it's compatible with TCP, because it basically an extension of TCP.
    There is another problem with using UDP based transport protocols... they usually have low priority in routers (probably because you can use UDP for VoIP...)

    --

    Fear is the mind-killer.

  35. Transport latency and TCP by buck68 · · Score: 5, Informative

    This work seems to be about two things (which I am not sure I see a strong connection between): lowering transport latency, and using available bandwidth better. The latter has been the subject of many papers in the last few years. There are now several serious proposals of how to fix TCP with respect to long fat pipes. They don't seem to support the idea that retransmissions are harmful. So I'm going to talk about the first issue, transport latency.

    The idea of using error-correcting codes (ECC) to eliminate the need for retransmissions is an interesting one. The main benefit is to reduce transport latency (the total time it takes to send data from application A to B). Here is another paper proposes has a similar idea, applied at a different level of the network architecture.

    The root problem here is that network loss leads to increases in the transport latency experienced by applications. In TCP, the latency increases because TCP will resend data that is lost. That means at least one extra round-trip-time per retransmission. This "Rateless TCP" approach uses ECC so that the lost data can be recovered from other packets that were not dropped. In this way, the time to retransmit packets may not be needed. I say may, because there will be a loss rate threshold which will exceed the capability of the ECC, and retransmission will become necessary to ensure reliability. But, as long as the loss rate is below the threshold, then retransmissions will not be necessary. Note that the more "resilient" you make the ECC (meaning supporting a higher loss threshold), the more work will be needed at the ends. So you are not eliminating latency due to packet loss, you are simply moving it away from packet retransmission into the process of ECC. However, if you've got good ECC, the total latency will go down.

    The ECC approach may be a nice middle ground. But, it the ultimate solution to minimize latency is probably through a combination of active queue management (AQM) and early congestion notification (ECN). Unlike ECC, this approach really would aim to eliminate packet loss in the network due to congestion, and therefore completely eliminate the associated latency. Either ECC or regular TCP would benefit. In a controlled testbed using AQM and ECN, I've completely saturated a network with gigabits of traffic, consisting of thousands of flows, and had virtually no packet loss.

    It should also be noted that retransmission is NOT the dominant source of transport latency in of TCP. I am a co-author on a paper that shows another way (other than eliminating retransmission) to greatly reduce the transport latency of TCP. The basic idea is that the send-side socket buffer turns out to be the dominant source of latency (data sits in the kernel socket buffer waiting for transmission). In the above paper, we show how a dynamic socket buffer (one that tracks the congestion window) can dramatically reduce the transport latency of TCP. We allow applications to select this behaviour through a TCP_MINBUF socket option.

    -- Buck

  36. Replacing TCP indeed by jsebrech · · Score: 4, Insightful

    This doesn't provide anything like what TCP provides, namely a connection between two network nodes that allows transfer of arbitrary data with guaranteed reliability, with automated congestion control for optimized use of available network resources.

    As far as I can tell (their website could use some more straightforward actual content), this is more like bittorrent, where a file is cut up into blocks, the blocks get distributed across the network, and anyone interested in the file then reconstructs it from available data from all sources, not necessarily having to get the entire file correctly from a single source. Only it does it more efficiently than bittorrent.

    The two protocols target very different uses. TCP excels in interactive use, where the data is sent as it is generated, and no error is tolerable in the single sender-to-receiver link. Bittorrent (and other distributed network protocols) target batch jobs, where throughput is more important than reliability (because reliability can be reconstructed on the client through clever hashing schemes), and where responsiveness is entirely irrelevant.

    So, this could not possibly replace TCP, since it does not do what TCP is most useful for. At the same time, the criticisms aimed at TCP by the rateless designers are valid, but well known, since TCP is indeed poorly suited for high-volume high-throughput high-delay transmissions of prepackaged data.

    Still, good job to them for trying to come up with better protocols for niche or not-so-niche markets. I wish them all the best.

  37. I have a better protocol by Anonymous Coward · · Score: 5, Funny
    I've designed a new protocol that can send data from A to B losslessly at infinite speed without an actual connection between A and B.


    How does it work? Well, it's layered over Rateless Internet, in which (as we all know) packets do not have to be resent. So it carefully loses all packets and relies on Rateless Internet to make sure they arrive safely at the other side and do not have to be resent. Because no packets need to make it from A to B, you don't need any network hardware, and data can be sent just as fast as your machine can drop packets.


    Guess I'd better apply for a patent...

  38. Their key error by RealProgrammer · · Score: 4, Insightful
    Nevertheless, our extended real-life measurements show that highest throughput is generally achieved at speeds with anywhere between 3% and 5% loss.

    That's for just them. What if all hosts on the entire Internet were by design stuffing packets at a 3-5% error rate? Meltdown, that's what. Their "real-life" measurements do not scale, suffering from the usual assumed linearity of new designs for complex systems.

    Sometimes people fall in love with their new ideas, thinking that the rest of the world missed something obvious.

    --
    sigs, as if you care.
    1. Re:Their key error by hburch · · Score: 3, Interesting
      TCP assumes all packet losses are due to congestion. This is not always true. For example, a wireless connection can have loss due to interference instead of congestion. Although I have not looked at this in quite a while, it was considered a known issue that decreased TCP performance over wireless. This is exactly the sort of setting where an ECCs would be able to greatly increase local performance without adversely affecting global performance.

      Avoiding congestion while maintaining performance is a hard problem. Fortunately, you degrade your own performance if you create congestion and congestion often occurs on the edge. We would really like to avoid the tragedy of the commons with congestion and the Internet. If we cannot, the Internet may truly collapse by 2006.

    2. Re:Their key error by RealProgrammer · · Score: 3, Interesting

      "TCP assumes all packet losses are due to congestion."

      It may be a quibble, but isn't it more accurate to say that TCP reacts to packet losses the same no matter what the cause? The packet, or group of packets, is just lost. I haven't looked into the status of RFC 3168 (ECN, router congestion flag) lately, so maybe I'm wrong.

      Since you mention it, the tragedy of the commons would be accentuated by pushing the network past saturation by design. By grabbing bandwidth, the 'haves' can effectively lock out the 'have nots' and their slower hardware, which would eventually result in no one having a usable network.

      --
      sigs, as if you care.
  39. Well... by jd · · Score: 4, Informative
    You could always use the existing "Reliable Multicast" protocols out there. Not only do those work over UDP, but you can target packets to multiple machines. IBM, Lucent, Sun, the US Navy and (yeek!) even Microsoft have support for Reliable Multicast, so it's already got much better brand-name support than this other TCP alternative.


    So others can have fun slashdotting other technologies, here are some websites. There are probably others, but this should keep those who do really want to move away from TCP happy.



    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
  40. EC over IP I have been doing this for years. by John+Sokol · · Score: 5, Interesting

    ecip.com I call it Error Correcting IP, and used it to stream live video from Sri Lanka in 1997 with Arthur C. Clarke Hal's Birthday
    it was a 64K shared line with 90% packet loss, I received 60Kbps for the video stream. ( I have the video to prove it )

    We even filled preliminary patents on this back in 1996 but they were never followed through with.

    Luigi Rizzo (now head of the FreeBSD project)also did some excellent work on this also. http://info.iet.unipi.it/~luigi/fec.html
    He calls it Erasure codes.

    Which is more accurate since UDP doesn't have errors, it either come across 99.999% perfect or not at all.
    So there is more information then in an error situation where ever bit is questionable.

    What this means almost 1/2 the hamming distance in the codes in needed to correct an errasure verses and error.

    Turns out the Error/Erasure correcting scheme it critical and not obvious. I spent almost 5 years working on this part time before it started making some real breakthroughs.

    My original system was designed for 25% packet loss (not uncommon in 1996).
    In the inital idea we added 1 exored packet for every three data packets, but at 25% packet loss, it turns out that it didn't increase reliablity at all! Working this out with probablities was a major eye opener!

    Even when you work the problem out you realize you will still need some retransmissions to make up for lost packets, there is no possible solutions without this.

    I have been trying to find people to help opensource this since I have working far too hard just to survive since 2000 to even consider taking on another task.

    Anyone interested in my research and carring this forward please see my site and contact me.

    John L. Sokol

    --
    I am always doing that which I can not do, in order that I may learn how to do it. - Pablo Picasso
  41. STCP by ericzundel · · Score: 2, Insightful
    A "real" replacement to TCP is STCP

    You get datagrams like in UDP but they are sent re liably.... or not depending on what you want. I believe this has been quietly implemented in CISCO routers and Unix OS vendors network stacks over the past few years.

  42. This isn't a general TCP Replacement by billstewart · · Score: 4, Insightful
    As far as I can tell from the documentation, this isn't really a TCP replacement. It's basically a set of efficient forward error correction codes, so if you've got a relatively wide open pipe you can transmit on without much packet loss, it can blast away and recover from occasional losses, but it doesn't do any actual congestion control.
    • They have a "TCP-friendliness" option that varies the transmission rate in a way that TCP windowing can probably cooperate with, so you can set the rate knobs to something less than full blast,
    • but nothing they've documented appears to address the problem of multiple users of this application trying to use a transmission path at the same time, and
    • they also don't document anything that does path rate discovery - so it may work fine if you've got a couple of small pipes feeding a fat network, but if you've got a fat pipe on the sending end and a skinny pipe on the receiving end, they don't document anything that figures out what rate is safe to transmit at.
    They also don't document when you would want to use this and when you would want to use TCP and when you would want to use this on top of TCP.
    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
  43. TCP needs a replacement, but... by mbone · · Score: 2, Informative

    TCP uses packet loss (NOT round trip times - where did that come from?) to signal congestion, and thus to implement congestion control. This does not work well in a typical wireless (802.11X, 802.16, etc) environment, where packet losses are to be expected. TCP also does not co-exist well with lots of UDP streaming.

    So, there IS a need for a TCP replacement. However, the one being developed in the IETF is DCCP. Basically, the idea is separating congestion control and packet loss replacement.

    Maymounkov and company say that they are preparing RFC's (which implies that they intend to submit this to the ITEF), but have not yet done so. So, maybe if they do, and if they offer an unencumbered license, their technology could be used, but it is way too soon to tell.

  44. What? by markov_chain · · Score: 4, Informative

    I don't know what their reasoning is, but both their claims about TCP seem incorrect.

    1. TCP does not use round trip time to calculate any "congestion levels." It increases the connection rate until packets get dropped, presumably because some router in the middle got overloaded.

    2. Packet loss is used as a signal to TCP to slow down because it tried to send too fast. The lost packets are subsequently retransmitted, so TCP can indeed not only tolerate but recover from packet loss. The only real case they have is packet loss due to reasons other than TCP's own aggressive sending rate, such as UDP traffic, wireless links, etc.

    Given these concerns, I can't help but think that they are inventing a protocol that works well only if used on a small scale. TCP is designed to back down if it thinks it's sending too fast, and is not really optimal. One can always hack a pair of TCP nodes to not play by the rules and get more than the fair share, but the problem is that that solution wouldn't work if it were adopted network-wide.

    --
    Tsunami -- You can't bring a good wave down!
    1. Re:What? by panZ · · Score: 4, Insightful
      You are absolutely correct. I was looking for someone to post this argument before doing it myself. Thanks! Mod this guy up!

      TCP doesn't use round trip time to calculate a link speed. In fact, it doesn't just the opposite. It uses a sliding window method so it can send many packets before any one has ACKed. This is done to soften the blow that round trip times will have on your send rates!

      TCP regulates its send rates by slowly sending faster and faster, then when a packet is dropped, it drops its rate fast. Slow increases and exponential backoffs make for VERY efficient link utilization on reliable networks with many active nodes whether it be a fast office LAN or world wide network.

      Their method appears to just spray data without paying attention to what other nodes are doing. It sounds like it is much better suited for point to point communications on unreliable networks. E.g. cellular data networks, packets get dropped much more frequently because of interference rather than congestions. TCP might back off too quickly in this condition because it is optimized to deal with congestion. Their protocol might be great for that first/last hop between your cell phone and the cell tower but otherwise, it undermines the great balance that TCP achieves on our amazing little internet.

      --
      --Let's hack root on 127.0.0.1 --panZ
    2. Re:What? by Percy_Blakeney · · Score: 2, Informative
      TCP does not use round trip time to calculate any "congestion levels."

      That's true, but TCP does implicitly rely upon the RTT in its ordinary operation; it does not increase the size of its congestion window until it sees an ACK, which implies a delay equal to the RTT. So, TCP doesn't use RTT in an explicit calculation but RTT does affect how quickly you're able to ramp up your utilization of the link after a packet loss.

      TCP can indeed not only tolerate but recover from packet loss

      Yes, but the question is how quickly does it recover from packet loss? This is a huge problem, especially with the advent of 1-10 gigabit ethernet.

  45. They are confused by ebuck · · Score: 3, Interesting

    They tell you how they solved the solution, but fail to tell you how much impact this solution has overall.

    They're basically stating that now they can flood the connection with packets.

    But they've also told you that the packets contain your data in an error correcting encoding. What they don't mention is this:

    How much overhead is required by the error correcting encoding?

    How many errors can the error correcting encoding handle? (drops 1 packet = ok, drops 400 packets = bad)

    How much cpu computation is required to encode and decode the payload?

    How is the cpu overhead managed? (how much performance will be lost by context switching, etc.)

    So they're just playing the game of distracting people with the best part of thier performance measurement without bothering to mention the performance impact of all of the other trade-offs they admitted to making.

  46. HSLink! by CODiNE · · Score: 3, Interesting

    This may be just a wee bit offtopic, but it may be my only chance to ask...

    Who remembers HSLink?? If I recall correctly it was an add-on transfer method for Procomm Plus. It allowed two people connected over a modem to simultaneously send files to each other at basically double the normal speed. I remember thinking it had to be a scam, but me and my friends tested it and were able to send double the usual info in whatever time we were used to. (I forget, 10 minutes a meg I think)

    How did this work? Were we fooled or was it for reals? Could something like that be applied to dial-up internet connections?

    -Don.

    --
    Cwm, fjord-bank glyphs vext quiz
  47. It's hooey... by Frennzy · · Score: 4, Insightful

    TCP doesn't use RTT to 'calculate congestion'.

    This is a load of fluff, trying to capitalize on the 'p2p craze'. There are plenty of TCP replacements out there, that actually make sense. As far as TCP not being able to utilize 'today's bandwidth', again...hooey. Gigabit ethernet (when backed by adequate hardware, and taking advantage of jumbo frames) moves a HELL (two orders of magnitude) of a lot more data than your typical home broadband connection...using TCP.

  48. It sounds like a crock by TTK+Ciar · · Score: 3, Interesting

    I'd still like to see a good protocol that doesn't require in-order packet receipt in addition to the changes that they mentioned; when transfering large volumes of data, why not?

    This is exactly why FTP uses UDP for its data transfer. So use FTP. In the last decade, though, improvements to TCP stacks have mostly mooted this difference. Once upon a time, when one end of a TCP transfer NACK'd a packet, it meant that packet and every packet after it would need to be re-sent (even those which had been sent already). So if you send packets 100, 101, 102 and then get a NACK for 100, you'd have to send 100, 101, 102, 103, etc. But with modern implementations, the receiver would keep packets 101 and 102, so the sender only needs to re-send packet 100, and then proceed to packet 103. This has made TCP much more efficient over lossy networks. Deferred NACKs also deal well with the problem of out-of-order packet arrival, when tardy packets show up before the deferred NACK is transmitted.

    I'm very dubious that these folks' protocol can realistically replace TCP; it simply doesn't add any must-have qualities. The only place where I see an advantage is transmitting audio and video, where you don't necessarily want to retransmit lost data, and are willing to put up with minute gaps in the data stream.

    A transport protocol that really deserves more attention is TTCP (TCP for Transactions). It abbreviates the TCP connection handshake, which makes it much more efficient / better-performing for very short transactions (like typical HTTP usage).

    -- TTK

    1. Re:It sounds like a crock by Floody · · Score: 2, Informative

      This is exactly why FTP uses UDP for its data transfer. So use FTP.

      Right! Well, except for the fact that FTP uses TCP port 20 for data (or control port-1).

  49. "/" is read as "over" by IBitOBear · · Score: 2, Insightful

    It is the old-math speak usage of "/" as in "three over four" is "3/4"

    So TCP/IP is "Transmission control protocol over internet protocol" or just "TCP over IP".

    While you don't see it much, this also inferrs "HTTP/TCP/IP" and so forth.

    So just as "voice over IP" doesn't make voice and IP the same, TCP over IP doesn't really relate one to the other.

    After all, if you use dialup, the first hop of your connection is typically TCP or UDP over PPP (Point to Point Protocol) and the ISP acts as a gateway from the PPP to the IP semantics.

    (I'm guessing the immediate parent knew this, but this reply "hangs best" here in the thread. 8-)

    --
    Innocent people shouldn't be forced to pay for inferior software development.
    --"Code Complete" Microsoft Press
    1. Re:"/" is read as "over" by Michael+Hunt · · Score: 2, Insightful

      <quoth the poster>After all, if you use dialup, the first hop of your connection is typically TCP or UDP over PPP (Point to Point Protocol) and the ISP acts as a gateway from the PPP to the IP semantics.</quoth>

      No. Your connection to your ISP is IP encapsulated in PPP frames. PPP is a session-based, authenticated layer 2 framing type, loosely based on HDLC. The PPP frames are discarded at the ISP's NAS/LNS, which then forwards the inner IP goo to the correct destination (usually its default route.)

  50. What problem does this fix? by johne_ganz · · Score: 2, Insightful
    Up front, I believe that their product/solution/answer to the "TCP Problem" is specious, at best.

    First order of business is "What is the problem?" This is never really adequately defined, near as I can tell. Some vague references to some "problems" with TCP without any objective data to support the statements. Since a solution is being proposed to a problem, we need some way to measure the problem objectively. How else can you tell if your proposed fix is better or worse than the baseline? Since the problem is never defined in any detail, and certainly never to a point of which you can measure, and the fact that there is no objective data, makes the whole thing totally suspect right from the start. In a nutshell, extraordinariy claims without extraordinary proof

    Regardless, there are some nuggets here and there that we can pick apart (from the website):

    #1 Rateless Internet is an Internet transport protocol implemented over UDP, meant as a better replacement of TCP. TCP's legacy design carries a number of inefficiencies, the most prominent of which is its inability to utilize most modern links' bandwidth.

    #2 This problem stems from the fact that TCP calculates the congestion of the channel based on its round-trip time. The round-trim time, however, reflects not only the congestion level, but also the physical length of the connection. This is precisely why TCP is inherently unable to reach optimal speeds on long high-bandwidth connections.

    #3 A secondary, but just as impairing, property of TCP is its inability to tolerate even small amounts (1% - 3%) of packet loss. This additionally forces TCP to work at safe and relatively low transmission speeds with under 1% loss rates. Nevertheless, our extended real-life measurements show that highest throughput is generally achieved at speeds with anywhere between 3% and 5% loss.

    Point #1 is a claim without any evidence to back it up. Now most of us may think there is a hint of truth to this from experience. The danger lies in making an assumption that the problem is TCP. It could be a bad implementation of the stack you're using, some kind of packet loss in the path, or you're just trying to send too much data given the conditions of the test (ie, a Pentium 90MHz trying to fill a 10Gb/sec pipe). There's just too many variables that influence the amount of link utilization to make such a generalized statement that "TCP is inherently unable to reach optimal speeds on long high-bandwidth connections". There was a time when two Sun machines sitting next to each other couldn't utilize the entire capacity of a half duplex ethernet, for example. Yet it's not uncommon to have more bandwidth to your home via cable/dsl and make full use of it even on cross country/inter continental links these days without a whole lot of change to the fundamentals of TCP. Therefore, it's unreasonable to conclude that TCP is the cause of any of the problems, perceived or real, considering the history of TCP and it's scaleability over time and total lack of any effort to rule out other causes.

    Point #2 is a case of where a little bit of knowledge is much more deadly than none at all. I'd be willing to chalk this one up to a marketing person's copy than any particular design insight by the developers, but it's spooky that it's there. At a fundamental level, queueing theory tells us that the average time for a unit to be processed in a queue is related to the depth of the queue. If there's nothing, or effectively nothing, in the queue when your packet arrives, there is no delay in sending the packet. However, the delay grows as the depth of the queue grows. This shows up as variability in the round trip times of packets, relative to each other. Also known as "jitter". Therefore, no jitter means there are no queueing delays, which means that there isn't much traffic competing for access to the links. High jitter means there are a lot of packets competing for access to a link, and therefore much more likely to be c