[ros-dev] Loopback problem

Phillip Susi psusi at cfl.rr.com
Wed Dec 21 20:22:18 CET 2005


Ge van Geldorp wrote:
> Ok, so it seems that the sending side is correct in holding back the packet.
> In ReactOS the problem then is that the ACK is delayed for too long. I've
> checked the delayed ACK path. Basically we fire a timer every 0.5 sec to do
> cleanup tasks. Only one of every 5 of these timer ticks is passed on to the
> oskittcp lib (routine TCPTimeout only calls TimerOskitTCP on every 5th
> tick). This means that the oskittcp routine tcp_fasttimo() which is
> responsible for sending delayed ACKs is only called every 2.5 sec, which
> corresponds exactly to the delays in the loop.c test program I posted
> earlier.
> 

The delayed ACK is also correct behavior.  Since there is plenty of room 
left in the window, the ACK is supposed to be delayed so it can ACK 
further data with one packet.

> So, the solution seems to be to call tcp_fasttimo() more often. Question is
> how often? There's a comment in the accompanying tcp_slowtimo() that it
> should be called every 500ms. So I guess tcp_fasttimo() should be called
> substantially more often than that?
> 

This is not the solution.

>> To avoid any confusion, you can switch nagling off with the 
>> TCP_NODELAY flag
> 
> Haven't checked yet if we implement this.
> 

My current conclusion is that mozilla is poorly behaved because it sends 
one byte at a time.  Heck, it shouldn't even be using tcp/ip for local 
IPC.  You might want to file a bug with them on this issue.  Sending 
larger data blocks will be FAR more efficient, however, it should not be 
as bad as you are reporting as long as they do set the TCP_NODELAY flag. 
  If they do set that flag and ReactOS does not correctly implement it, 
that would explain why it works ok on windows and not ReactOS.




More information about the Ros-dev mailing list