On Feb 26, 2009, at 1:02 PM, Ross Cameron wrote:
Bump,... Sorry guys (semi-urgent question and I really need the help im
not a fBSD guru)

As a suggestion, you ought to give the FreeBSD mailing lists at least a few hours, or better yet a day or so, before repeating a question due to lack of initial response.

---------- Forwarded message ----------
From: Ross Cameron <ross.came...@linuxpro.co.za>
Date: Thu, Feb 26, 2009 at 10:13 AM
Subject: TCP congestion avoidance
To: freebsd-questions@freebsd.org

Hi there all

I spend most of my time maintaining an embedded Linux appliance for a client of mine. One of the features of this client is that depending on connectivity types etc. if has the ability to choose between several different TCP congestion
avoidance algorythms.

Now I have been approached by another client to produce a BSD derived system (they're GPL alergic) and I would like to impliment a simmilar feature on
this new toolchain.
Where can I find out what congestion avoidance algorythms FreeBSD supports
and how to plug them in and out during runtime (not at boot) ???

You should start with the output of "sysctl -ad net", in particular:

net.inet.tcp.slowstart_flightsize: Slow start flight size
net.inet.tcp.local_slowstart_flightsize: Slow start flight size for local networks
net.inet.tcp.newreno: Enable NewReno Algorithms
net.inet.tcp.delayed_ack: Delay ACK to try and piggyback it onto a data packet
net.inet.tcp.rfc3042: Enable RFC 3042 (Limited Transmit)
net.inet.tcp.rfc3390: Enable RFC 3390 (Increasing TCP's Initial Congestion Window)
net.inet.tcp.sack.enable: Enable/Disable TCP SACK support
net.inet.tcp.sack.maxholes: Maximum number of TCP SACK holes allowed per connection net.inet.tcp.sack.globalmaxholes: Global maximum number of TCP SACK holes net.inet.tcp.sack.globalholes: Global number of TCP SACK holes currently allocated net.inet.tcp.inflight.enable: Enable automatic TCP inflight data limiting
net.inet.tcp.inflight.debug: Debug TCP inflight calculations
net.inet.tcp.inflight.rttthresh: RTT threshold below which inflight will deactivate itself
net.inet.tcp.inflight.min: Lower-bound for TCP inflight window
net.inet.tcp.inflight.max: Upper-bound for TCP inflight window
net.inet.tcp.inflight.stab: Inflight Algorithm Stabilization 20 = 2 packets

These can be adjusted at runtime or even via setsockopt() for a few cases like TCP_NODELAY. You might also find that the packet shaper capabilities of dummynet might be helpful for prioritizing traffic and managing odd links (ie, with a high bandwidth * delay cross product).

Beyond that, look into the source code such as /usr/src/sys/netinet/ tcp_output.c, netinet/tcp_sack.c, etc...


freebsd-questions@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to