[e2e] TCP implementations in various OS's

sthaug@nethelp.no sthaug at nethelp.no
Wed May 12 08:11:34 PDT 2010

> > Why on earth do you say "simply misbehaved in the vast majority of cases"?
> > If I have a TCP connection with 35 ms RTT, this connection will be limited
> > to 15 Mbps unless I do window scaling.
> What's the problem with your RTT? The RTT is absolutely meaningless in 
> this context.
> The one and only significant question is whether the fair share of the 
> path capacity for your session is greater than 65536 bytes.

We clearly have different goals. I work for a service provider. If I
have a customer who wants to transmit more than 15 Mbps between end
points with a 35 ms RTT, one of my goals is to make it *possible* for
the customer to do this (assuming the customer has sufficient access
capacity at both ends). To do this with normal TCP, the customer needs
window scaling.

> > Also, *your* goal may be to keep queues small. That is not necessarily
> > the goal of all operators in all situations.
> Probably you want to read the SIGCOMM 2004 paper by Guido Appenzeller 
> some years ago and the basic works by John Nagle on this matter.

I read this several years ago - but thanks for the reminder. I consider
this paper highly relevant for our backbone links. It is less relevant
for customer access links with only one or a few active flows. Thus I
stand by my words "not necessarily the goal of all operators in all

> The problem with some sessions using window scaling while others do not 
> is that some sessions may in fact utilize all the memory which is put 
> into intermediate nodes - be it even Gigabytes - while those without 
> window scaling are restricted to 65536 bytes. This way, the window 
> scaling flows largely outpeform the others while there is absolutely no 
> advantage for the  overall throughput in the network at all. If every 
> flow would use window scaling in long fat networks, the windows most 
> likely would converge to reasonable sizes.

Real life networks tend to have a range of RTTs and capacities. We need
to accomodate this range. If vendors supplied TCP implementations which
always performed well with window scaling turned on, I would be happy
with that. Unfortunately, I don't believe we're there today...

> With sufficient queueing memory, you can even grow a 1 meter Ethernet 
> link to a link capacity of 5000 Terabytes.
> I only don't see any valid reason for doing so.

Here we agree.

Steinar Haug, Nethelp consulting, sthaug at nethelp.no

More information about the end2end-interest mailing list