Live data from Hacker News

TCP Sucks

snell-pym.org.uk

51–60 of 64 posts

Re: TCP Sucks

#51
post #17

This is a really weird article. It's dated today but seems to contain information from 2010 or so.

This is a really weird comment. It's dated today, but seems to contain words from 1300 or so.

Re: TCP Sucks

#52
post #47

Earlier quoted context omitted.

It sounds like you are evaluating the idea that protocol X will replace TCP, but I don’t think anyone is making that argument. Protocol X would be used alongside TCP, and you wouldn’t be able to use protocol X in all networks. This is already the world we live in.

Then I don't understand what your argument is. There is already a bunch of protocols you can use if you don't like TCP.

I’m saying that these protocols are getting traction.

Re: TCP Sucks

#53
Standards always generate debate. They almost always can be improved. But hey, they are usually good enough for most use-cases. The price we end up paying, though, many times without noticing, is that layer over layer of "good enough" ends up making life much harder than it needs to be. But we only change when a single layer is clearly identified as painful enough. The article is technically very interesting, but for the general discussion my main question is: what mechanisms do we have to effectively move forward with standards? Are standards committees (good) enough (when they exist)? Are we moving at the right pace?

Re: TCP Sucks

#54
post #16
post #6

TCP pretty obviously doesn’t suck as it’s pretty much powered the internet for the last 30ish (maybe more) years. I’m sure it isn’t perfect for every purpose and maybe I can be improved but enough with the click bait.

Coal power obviously doesn't suck as its pretty much powered the planet for the last 100 years. It's perfectly possible for something to both be incredibly popular and to suck. An appeal to popularity is certainly not better than a click-bait headline. I'd argue that most of the stuff we use sucks in some ways as well; suck isn't an absolute term. TCP sucks in very specific ways the article talks about.

It's not just popularity; it's an adaptable enough design to work in the range from 150 baud acoustic modem links to 40 Gbit fiber optics. Not many designs can withstand that, no matter how hard people try.

Re: TCP Sucks

#55
TCP is fine. There is some questionable things here and I'll just touch on a couple of them.

1) TCP checksums are a bit weak.

The author claims that we don't know how many errors are not caught by TCP's CRC and while that's true on some level the probability of bit errors is driven by properties of the physical medium over which the packet is traveling, not the transport layer protocol in use. That's why most, if not all, physical layers that do have a significant chance of bit errors have FEC built-in at the physical layer.

As a point of reference, I pulled stats on one of our servers and see about 10k bad packets out of 1.3 billion. If we assume that bit errors caused all 10k, we get an error rate of about %0.00076. Since we need two independent bit errors to trigger a state where the CRC might not catch the error, we can calculate that on this particular server we would expect .076 packets that might be corrupt in a way in which it's even possible for the existing checksum would miss it (and it probably would still be caught). If that is an unacceptable error rate, you should absolutely be using some way to verify message integrity at a higher layer. Still, for most applications, a fast hash that lets a bad packet through every couple of years is a good trade-off.

2) TCP's over-eager in-order delivery

The author talks about getting packets 1,3,2 in that order in the context of a file transfer, and in that specific scenario, it might be marginally preferable. Far more likely than out of order packets are lost packets and lost packets may never come if the connection gets closed/reset before its retransmitted. For the vast majority of applications having a partially transferred entity isn't helpful, but not having to deal with the complexity of out of order and partial transfers is.

Re: TCP Sucks

#56
It sounds like the author wants a protocol that allows for arbitrarily-sized datagrams, with the ability to interleave the transmission of those datagrams across a some shared master connection.

From my relatively-inexperienced perspective, notwithstanding the widespread protocol ossification of Internet network infrastructure, the underlying MTU for each connection seems to be the primary constraint that any viable alternative must deal with effectively. This article did not seem to discuss MTU considerations at all. It's hard to take a protocol argument seriously that neglects to deal with such a fundamental constraint of network infrastructure.

Re: TCP Sucks

#57
post #4

How can there be so much TCP bashing, without a mention of SCTP. I mean at least that's implemented in some BSDs with ports available for other OSes.

Sadly the state of the internet means that only TCP and UDP will be widely used for the foreseeable future. There are a quantity of old routers which just throw away protocols they don't know, and they don't know much. See https://en.wikipedia.org/wiki/Protocol_ossification

I think you might be mistaken on the flexibility of the infrastructure.

I personally don't think IP (tcp and udp included) will be used on Internet 2.0. Theres just too much baggage with those protocols.

Perhaps we'll see Internet 1.5 leverage encapsulation and build a huge underlying canvas for new protocols to blossom, but we seem to be approaching the point where anything with an IP address is too much of a hassle to maintain and a longterm security liability/commitment.

Just moving IP to the borders of a network would open up space for more secure protocols.

Its probably time we put the middle one behind port 79 anyways.

Re: TCP Sucks

#58
post #9
post #6

TCP pretty obviously doesn’t suck as it’s pretty much powered the internet for the last 30ish (maybe more) years. I’m sure it isn’t perfect for every purpose and maybe I can be improved but enough with the click bait.

Yeah, TCP is the worst protocol except for all the others.

I always liked SCTP more than anything. I would like QUIC if it wasn't for mandatory TLS.

Re: TCP Sucks

#59
post #55

TCP is fine. There is some questionable things here and I'll just touch on a couple of them. 1) TCP checksums are a bit weak. The author claims that we don't know how many errors are not caught by TCP's CRC and while that's true on some level the probability of bit errors is driven by properties of the physical medium over which the packet is traveling, not the transport layer protocol in use. That's why most, if not…

File-transfer is a bad example. A good example would me multiplexed REQ-RES protocol. There is no reason for Message #2 to wait on message #1.

This issue, however, is so overblown by the author. It's not that often earlier packages delayed and new packages arrive faster and when that happens often you problem is usually much greater than server waiting for 101-200 before sending 201-300 to application...

To me the most annoying part of TCP are:

- Slow Start - Single channel - Single Mode

Everyone life would be so much better if within a single established connection you could open multiple channels in multiple modes like framed vs stream. Each channel could have its own order with congestion control overseeing entire bunch of channels.

You can build something similar on top TCP today, but it's not the same. Best part of TCP is that it's a standard available everywhere without conflicting implementations.

Re: TCP Sucks

#60
post #12

Let's start with the fact that TCP obviously has problems. People who wrote the protocol did not expect for it to live that long. At the time the life expectancy of any standard was pretty short. But... before you get too caught up with bashing... if I were you I would spend just a tiny bit trying to really understand why we are in this situation. It might be because it is "just enough" to build upon. You are free to…

Some of the articles point have nothing to do with the age of TCP, some do, if I copy just two points: 1) TCP makes applications build their own messaging protocols on top 2) The three-way handshake (and connection shutdown) is slow and wasteful for short connection (1) is a big issue but has nothing to do with the age of TCP whereas (2) is related to TCP's age: using big SYN cookies with the underpowered hardware of the time..
Post reply on HN