|
Posted by fj on July 18, 2006, 7:34 am
If you were Registered and logged in, you could reply and use other advanced thread options
Hi Rick
My NIC is an Intel Pro 1000, and the possible setting for Jumbo frames
is 9014 and 4088 bytes.
I have used Ethereal to determine the TCP window size, and it says that
the TCP windows size is 64K. I have even tried to increase the TCP
window size to 128K and that doesn't change anything.
That said, you did point me in the right direction, and I found
description of the 200 ms problem at Microsoft (
http://support.microsoft.com/kb/321098/ ). It turned out that it is
possible to disabled the delayed standalone ACK timer. When turned off,
the transfer rate increases to approx. 16 Mbytes/s.
Thanks for your help
Flemming Jahn
Rick Jones skrev:
> > *) Yes, all the equipment supports jumbo frames.
>
> > *) The TCP windows size is 64K.
>
> > *) I am not quite sure about what you are saying about "user's buffer
> > for DMA". Could you elaborate on that?
>
> "Normally" when an application calls send, the kernel/stack makes a
> copy of the user's buffer, and then schedules DMA from that copy. The
> user is then free to keep running, doing whatever it wishes with his
> buffer.
>
> However, sometimes the MS TCP stack decides it does not want to copy.
> Instead it will simply reference the user's buffer directly. Since
> allowing the user to manipulat that buffer while the stack is sending
> from it would lead to doubplusungoodness like data corruption, the
> user is precluded from accessing the buffer. In the case of which I'm
> thinking the user application is blocked from running entirely until
> the data in that buffer has been ACKed by the remote. So, you lose
> parallelism between the user and the stack/remote and things go
> slowly.
>
> > Another thing I have discovered is that I do not have any problem
> > with TCP traffic when the MTU size is 4088 bytes, and I do not have
> > any problems with UDP traffic ( MTU = 9014 bytes ).
>
> While "Jumbo Frame" is not standardized, (I've seen all sorts of
> examples of "Jumbo Frame" support asserted for what I wouldn't call
> "real" Jumbo Frames), I thought the JF IP MTU was 9000 bytes, not
> 9014. I've heard of stacks calling 2048 bytes JF or 8192 but this
> would be the first time I've seen 9014.
>
> > I have tried to capture the traffic with ethereal, and there I can see
> > that it takes 0.2 Sec to get an acknowledge from the receiving part
> > when MTU=9014 bytes. Traffic with MTU=1518 bytes gives acknowledge
> > within a few msec, so I expect that this is my problem, but don't
> > know what to do about it.
>
> 0.2 seconds sounds like waiting for the standalone ACK timer. Are you
> certain that the receiving TCP is advertising a 64KB window? And that
> the sending TCP is sending multiple MSS segments at a time, keeping
> that window full?
>
> rick jones
> --
> Process shall set you free from the need for rational thought.
> these opinions are mine, all mine; HP might not want them anyway... :)
> feel free to post, OR email to rick.jones2 in hp.com but NOT BOTH...
|