|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: TCP speed
Our experience is the same. TCP is FAST.
The only remaining trouble is memory copy from TCP buffers to application
buffers.
Unless handled properly this may slow you down considerably.
Julo
Scott Bradner <sob@harvard.edu> on 10/09/2000 22:14:01
Please respond to Scott Bradner <sob@harvard.edu>
To: ips@ece.cmu.edu
cc: (bcc: Julian Satran/Haifa/IBM)
Subject: TCP speed
the topic of TCP speeds came up - here is a note from Craig Partridge
(someone who should know) on the topic.
Scott
From craig@aland.bbn.com Sun Sep 10 15:04:54 2000
To: Scott Bradner <sob@harvard.edu>
Subject: Re: tcp speed
In-reply-to: Your message of "Sun, 10 Sep 2000 09:15:25 EDT."
<200009101315.JAA10411@newdev.harvard.edu>
Date: Sun, 10 Sep 2000 13:26:59 -0400
From: Craig Partridge <craig@aland.bbn.com>
[Scott -- feel free to recirculate as appropriate.]
This note is a brief summary of what is achievable in TCP performance.
First off, let's talk about processing. Not including interrupt costs
(more
on those in a minute), it costs about 20 or 30 instructions to handle a TCP
segment that is received in order, plus time for copying and checksumming.
Copying and checksumming can be done at memory speed, and for large packets
20 or 30 instruction times is trivial, so effectively TCP can transfer data
at memory rate. For more on how to achieve these rates, see Van Jacobson's
work on TCP Header Prediction, my book on Gigabit Networking, and the
performance notes in Rich Stevens' TCP-IP Illustrated.
Three things, however, slow TCP down.
The first problem is interrupts. Most fast CPUs these days really really
don't like interrupts -- they may burn 1000s of instruction cycle to handle
them. So having a network interface that minimizes interrupts (e.g., like
the ones Jonathan Smith pioneered in the mid-90s) is critical or you'll
spend
all your time in the interrupt driver.
The second issue is TCP window size. If you don't use TCP Large Windows,
and actually set a large window size, you're limited to what is typically
shipped with your system. In most systems the standard window size is
about 16 to 32 KB, which limits you to about 250 Mb/s on a typical LAN.
(Moral here: tune up your TCP).
The third issue is TCP congestion control. TCP takes a while to get to
send
at full speed, as it is probing the network to determine available network
capacity. To date, there's no agreed upon solution to allow TCP (or any
other protocol for that matter) to send fast from the start. However, this
time delay is only a problem over long distances -- you won't see problems
of note on your LAN.
In summary, in a local environment, with TCP big windows, you should go
as fast as your processors let you. In a wide area environment, you'll
bump against congestion control issues, but then again so will any other
protocol. As a final comment, it is worth noting that some commercial
TCPs were running at 1 Gbps nearly a decade ago.
Craig
Home Last updated: Tue Sep 04 01:07:25 2001 6315 messages in chronological order |