DragonFly BSD
DragonFly kernel List (threaded) for 2005-07
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: MAXSAVEDBLOCKS in netinet/tcp_sack.c


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 5 Jul 2005 02:08:50 -0700 (PDT)

:Thanks for your reply.
:
:>     But I will note that the saved blocks are in fact the number of
:>     discontiguous segment ranges, not single segments.  That should make it
:>     fairly independant of the bandwidth delay product on a real network.
:>     If you use dummynet to inject random errors... well, that isn't really
:>     a characteristic of a real network.
:
:I agree that my network environment is unusual. :-)  I just thought
:that saying "I want xxx because..." is better than saying "I think
:some people might need xxx because..."
:
:BTW, I use dummynet to set delays and router queue length.  I do not
:use it to inject random losses.  Even in such case, if both send and
:receive buffers are large enough, packets are lost when the queue on
:my router becomes full.  In that case, my TCP receiver receives tens
:of discontiguous data ranges.  In my environment, the number of
:discontiguous data ranges depends on the value of HZ on the router.
:The larger the value of HZ, the bigger the number of discontiguous
:ranges.  Currently, I'm using HZ=10000 on my router.

    Ouch.  Dummynet is probably not the best solution.  Actually, what
    I would do is buy a cisco with a relatively recent IOS and run
    fair-queue or RED, but if that isn't in the cards then I recommend 
    playing around with Packet Filter (pf).  It has a number of queueing
    solutions.  I haven't used PF much myself so I don't know if it can
    do RED, but I believe it does have a fair-queueing mechanism.

    In anycase, RED or fair-queueing tend to do a much better job 
    reducing the number of fragmented ranges.  SACK running through a
    RED router (which is most of the routers on the internet) is a good
    combination.

    If you have a lot of outgoing bandwidth and the servers are running
    FreeBSD or DragonFly, you can turn on the inflight bandwidth limiting
    sysctl (net.inet.tcp.inflight_enable).  This only works on the machines
    doing the actual initiation of the packets, it won't work on the 
    routers.  It does a fairly good job reducing queue lengths.

					-Matt




[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]