Subject: Re: [patch] add tcp congestion control relevant parts

From: Stephen Hemminger <[email-masked]>
Date: Fri, 14 Dec 2007 08:15:40 -0800

On Fri, 14 Dec 2007 09:48:32 +0100
Michael Kerrisk <[email-masked]> wrote:

> Hello Linux networking folk,
> 
> I received the patch below for the tcp.7 man page.  Would anybody here be
> prepared to review the new material / double check the details?
> 
> Cheers,
> 
> Michael
> 
> -------- Original Message --------
> Subject: [patch] add tcp congestion control relevant parts
> Date: Wed, 12 Dec 2007 16:40:23 +0100
> From: Thomas Egerer <[email-masked]>
> To: [email-masked]
> CC: [email-masked]
> 
> Hello *,
> 
> man-pages version : 2.70 from http://www.kernel.org/pub/linux/docs/man-pages/
> All required information were obtained by reading the kernel
> code/documentation.
> I'm not sure, whether it is completely bullet proof on when the sysctl
> variables/socket option first appeared in the kernel, so you might as well
> drop this information, but I'm pretty sure about how it works.
> Here we go with my patch:
> 
> diff -ru man-pages-2.70/man7/tcp.7 man-pages-2.70.new/man7/tcp.7
> --- man-pages-2.70/man7/tcp.7   2007-11-24 14:33:34.000000000 +0100
> +++ man-pages-2.70.new/man7/tcp.7       2007-12-12 16:34:52.000000000 +0100
> @@ -177,8 +177,6 @@
>  .\" FIXME As at Sept 2006, kernel 2.6.18-rc5, the following are
>  .\"    not yet documented (shown with default values):
>  .\"
> -.\"     /proc/sys/net/ipv4/tcp_congestion_control (since 2.6.13)
> -.\"     bic
>  .\"     /proc/sys/net/ipv4/tcp_moderate_rcvbuf
>  .\"     1
>  .\"     /proc/sys/net/ipv4/tcp_no_metrics_save
> @@ -224,6 +222,20 @@
>  are reserved for the application buffer.
>  A value of 0
>  implies that no amount is reserved.
> +.TP
> +.BR tcp_allowed_congestion_control \
> +" (String; default: cubic reno) (since 2.6.13) "
> +Show/set the congestion control choices available to non-privileged
> +processes. The list is a subset of those listed in
> +.IR tcp_available_congestion_control "."
> +Default is "cubic reno" and the default setting
> +.RI ( tcp_congestion_control ).
> +.TP
> +.BR tcp_available_congestion_control \
> +" (String; default: cubic reno) (since 2.6.13) "
> +Lists the TCP congestion control algorithms available on the system. This
> value
> +can only be changed by loading/unloading modules responsible for congestion
> +control.
>  .\"
>  .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
>  .TP
> @@ -257,6 +269,17 @@
>  Allows two flows sharing the same connection to converge
>  more rapidly.
>  .TP
> +.BR tcp_congestion_control " (String; default: cubic reno) (since 2.6.13) "
> +Determines the congestion control algorithm used for newly created TCP
> +sockets. By default Linux uses cubic with reno as fallback. If you want
> +to have more control over the algorithm used, you must enable the symbol
> +CONFIG_TCP_CONG_ADVANCED in your kernel config.

You can choose the default congestion control as well as part of the kernel
configuration.

-- 
Stephen Hemminger <[email-masked]>