TCP congestion avoidance

Ross Cameron ross.cameron at linuxpro.co.za
Thu Feb 26 13:41:49 PST 2009


Hi there Chuck

Many thanks for you're reply that does indeed help!

Two questions though,....

Where can I find more documentation on these types of settings in FreeBSD
        and
How can I choose between more than just TCP_NewReno, specifically I will be
making use of TCP_Westwood / TCP_Westwood+ and TCP_Illinois ???

Also a purely optional nicety would be does anyone know of a ported version
of Compound_TCP to FreeBSD?
    Yes I know its a MS designed algorythm but Windows Vista+ use it by
default and it would be nice to speak their congestion algorythm natively.

Sorry for all the questions. But I kinda need to make a reccomendation to
the client as to viability of the project.

Many thanks!

PS: Should I get the contract,... does FreeBSD have a hardware requests
page? Would like to look into contributing some hardware as a thankyou.


On Thu, Feb 26, 2009 at 11:27 PM, Chuck Swiger <cswiger at mac.com> wrote:

> From: Ross Cameron <ross.cameron at linuxpro.co.za>
>> Date: Thu, Feb 26, 2009 at 10:13 AM
>> Subject: TCP congestion avoidance
>> To: freebsd-questions at 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) ???
>>
>
> ---------- Forwarded message ----------
> 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...
>
> Regards,
> --
> -Chuck
>
>


-- 
"Opportunity is most often missed by people because it is dressed in
overalls and looks like work."
   Thomas Alva Edison
   Inventor of 1093 patents, including:
       The light bulb, phonogram and motion pictures.


More information about the freebsd-questions mailing list