DragonFly kernel List (threaded) for 2005-07
Re: MAXSAVEDBLOCKS in netinet/tcp_sack.c
: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
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.