[ARGUS] BSD argus/Linux ra problems?

Michael Sanderson sanders at cs.ubc.ca
Wed Nov 24 03:08:42 EST 2004


Carter Bullard wrote:

> Hey Michael,
>    Well that will cause a problem if a ra* client gets less than 128
> bytes, as we do a single read for 128 bytes and if we don't get it we
> exit.  There were a lot of reasons for this, but most were/are
> historical. I can modify it to get into a loop to read until we
> get 128 bytes, but it will not be pretty.
> 
>     I'm gonna be somewhat depressed by this, as it will introduce
> some delay in getting started when we've got multiple endpoints
> to manage.  Any way we can get BSD to change its IP stack? ;o)

I think that the delay will be pretty minor.  In most cases, you will 
still do a single read and you're off.  In the weirdo cases like mine, 
the delay between the first and second packets is about 5 milliseconds 
according to tcpdump.

> On the serious side, I wonder if I can force the starting window
> size on the client side to ensure that I have 128 bytes to start
> with?

The theory is that if you set the maximum send and receive buffer sizes 
before doing the connect that you can alter the window size. 
(http://www.ncsa.uiuc.edu/People/vwelch/net_perf/tcp_windows.html#bufsize 
has some sample code for clients and servers.)  I just tried this and it 
was not effective in my case - ie. same problems with a 46 byte window 
size - presumably since it only sets maximum buffer sizes not current 
the window size.  (Either that or the Linux kernel is just busted, which 
wouldn't surprise me all that.)

      Michael Sanderson




More information about the argus mailing list