Skip to contentSkip to conversation

add tcp congestion control relevant parts

PATCH In review Thomas Egerer 4 participants 5 messages Dec 12, 2007 – Jan 2, 2008 1 message not in the archive

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 add tcp congestion control relevant parts

-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160

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 use
+.BR setsockopt (2)
+to individually change the algorithm on a single socket.
+Requires CAP_NET_ADMIN or congestion algorithm to be listed in +.IR tcp_allowed_congestion_control "."
+.TP
.BR tcp_dsack " (Boolean; default: enabled)"
Enable RFC\ 2883 TCP Duplicate SACK support.
.TP
@@ -649,7 +672,21 @@
socket options are valid on TCP sockets.
For more information see
.BR ip (7).
- -.\" FIXME Document TCP_CONGESTION (new in 2.6.13)
+.TP
+.BR TCP_CONGESTION " (new since kernel version 2.6.13)"
+If set to the name of an available congestion control algorithm, +it will henceforth be used for the socket. To get a list of +available congestion control algorithms, consult the sysctl variable +.IR net.ipv4.tcp_available_congestion_control "."
+The algorithm that is used by default for all newly created
+TCP sockets can be viewed/changed via the sysctl variable
+.IR net.ipv4.tcp_congestion_control "."
+If you feel, you are missing an algorithm in the list,
+you may try to load the corresponding module using
+.BR modprobe (8),
+or if your kernel is built with module autoloading support
+.RI ( CONFIG_KMOD )
+and the algorithm has been compiled as a module, it will be autoloaded.
.TP
.B TCP_CORK
If set, don't send out partial frames.

- --
Thomas
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHYADnUGqFG0l5Kr0RAyDDAJ9T/lIYEHk8MklyI8WY6VTHbhCtJwCdGl07 Ny/XbyN7UqTrnl9/6HjAQRk=
=Yy8V
-----END PGP SIGNATURE-----
-
To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

#1 lore raw

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 protected]>
To: [email protected]
CC: [email protected]

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:

man7/tcp.7 2007-12-12 16:34:52.000000000 +0100 renamed from man7/tcp.7 2007-11-24 14:33:34.000000000 +0100 +12 -2
diff -ru man-pages-2.70/man7/tcp.7 man-pages-2.70.new/man7/tcp.7
@@ -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 use
+.BR setsockopt (2)
+to individually change the algorithm on a single socket. +Requires CAP_NET_ADMIN or congestion algorithm to be listed in +.IR tcp_allowed_congestion_control "."
+.TP
.BR tcp_dsack " (Boolean; default: enabled)"
Enable RFC\ 2883 TCP Duplicate SACK support.
.TP
@@ -649,7 +672,21 @@
socket options are valid on TCP sockets.
For more information see
.BR ip (7).
-.\" FIXME Document TCP_CONGESTION (new in 2.6.13)
+.TP
+.BR TCP_CONGESTION " (new since kernel version 2.6.13)"
+If set to the name of an available congestion control algorithm, +it will henceforth be used for the socket. To get a list of +available congestion control algorithms, consult the sysctl variable +.IR net.ipv4.tcp_available_congestion_control "."
+The algorithm that is used by default for all newly created +TCP sockets can be viewed/changed via the sysctl variable
+.IR net.ipv4.tcp_congestion_control "."
+If you feel, you are missing an algorithm in the list,
+you may try to load the corresponding module using
+.BR modprobe (8),
+or if your kernel is built with module autoloading support
+.RI ( CONFIG_KMOD )
+and the algorithm has been compiled as a module, it will be autoloaded.
.TP
.B TCP_CORK
If set, don't send out partial frames.

Signature · 5 lines
Michael Kerrisk
Maintainer of the Linux man-pages project
http://www.kernel.org/doc/man-pages/
Want to report a man-pages bug?  Look here:
http://www.kernel.org/doc/man-pages/reporting_bugs.html
#2 lore raw
Quoted 61 lines · On Fri, 14 Dec 2007 09:48:32 +0100 Michael Kerrisk…

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 protected]>
To: [email protected]
CC: [email protected]

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

man7/tcp.7 2007-12-12 16:34:52.000000000 +0100 renamed from man7/tcp.7 2007-11-24 14:33:34.000000000 +0100 +12 -2
@@ -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

man7/tcp.7 2007-12-12 16:34:52.000000000 +0100 renamed from man7/tcp.7 2007-11-24 14:33:34.000000000 +0100 +2 -0
+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

man7/tcp.7 2007-12-12 16:34:52.000000000 +0100 line 276

Quoted 8 lines
man7/tcp.7 2007-12-12 16:34:52.000000000 +0100 renamed from man7/tcp.7 2007-11-24 14:33:34.000000000 +0100 +5 -0
@@ -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.

Quoted 1 line
Signature · 1 line
Stephen Hemminger <[email protected]>
#3 lore raw
Quoted 67 lines · Stephen Hemminger
Quoted 64 lines · On Fri, 14 Dec 2007 09:48:32 +0100 Michael Kerrisk…

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 protected]>
To: [email protected]
CC: [email protected]

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

man7/tcp.7 2007-12-12 16:34:52.000000000 +0100 renamed from man7/tcp.7 2007-11-24 14:33:34.000000000 +0100 +12 -2
@@ -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

man7/tcp.7 2007-12-12 16:34:52.000000000 +0100 renamed from man7/tcp.7 2007-11-24 14:33:34.000000000 +0100 +2 -0
+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
Quoted 8 lines

man7/tcp.7 2007-12-12 16:34:52.000000000 +0100 line 276

Quoted 5 lines
man7/tcp.7 2007-12-12 16:34:52.000000000 +0100 renamed from man7/tcp.7 2007-11-24 14:33:34.000000000 +0100 +5 -0
+.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.

Hi Stephen,

Other than this, did the doc patch look okay? (I'm not sure whether there was an implied ACK in your message for the rest of the patch.)

Cheers,

Michael

Signature · 5 lines
Michael Kerrisk
Maintainer of the Linux man-pages project
http://www.kernel.org/doc/man-pages/
Want to report a man-pages bug?  Look here:
http://www.kernel.org/doc/man-pages/reporting_bugs.html
#5 lore raw
In reply to a message not in the archive
Quoted 79 lines · On Wed, 02 Jan 2008 10:55:21 +0100 Michael Kerrisk…
Quoted 67 lines · Stephen Hemminger
Quoted 64 lines · On Fri, 14 Dec 2007 09:48:32 +0100 Michael Kerrisk…

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 protected]>
To: [email protected]
CC: [email protected]

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

man7/tcp.7 2007-12-12 16:34:52.000000000 +0100 renamed from man7/tcp.7 2007-11-24 14:33:34.000000000 +0100 +12 -2
@@ -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

man7/tcp.7 2007-12-12 16:34:52.000000000 +0100 renamed from man7/tcp.7 2007-11-24 14:33:34.000000000 +0100 +2 -0
+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
Quoted 8 lines

man7/tcp.7 2007-12-12 16:34:52.000000000 +0100 line 276

Quoted 5 lines
man7/tcp.7 2007-12-12 16:34:52.000000000 +0100 renamed from man7/tcp.7 2007-11-24 14:33:34.000000000 +0100 +5 -0
+.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.

Quoted 9 lines

Hi Stephen,

Other than this, did the doc patch look okay? (I'm not sure whether there was an implied ACK in your message for the rest of the patch.)

Cheers,

Michael

Yes, and having this documented will hopefully help answer people's questions.

Signature · 5 lines
Stephen Hemminger <[email protected]>
-
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html