Manual Chapter :
Congestion control algorithms for TCP profiles
Applies To:
Show Versions
BIG-IP APM
- 14.1.5, 14.1.4, 14.1.3, 14.1.2, 14.1.0
BIG-IP LTM
- 14.1.5, 14.1.4, 14.1.3, 14.1.2, 14.1.0
BIG-IP AFM
- 14.1.5, 14.1.4, 14.1.3, 14.1.2, 14.1.0
BIG-IP DNS
- 14.1.5, 14.1.4, 14.1.3, 14.1.2, 14.1.0
BIG-IP ASM
- 14.1.5, 14.1.4, 14.1.3, 14.1.2, 14.1.0
Congestion control algorithms for TCP profiles
Congestion control settings
The Congestion Control setting includes delay-based and
hybrid algorithms, which can address TCP performance issues. Use this chart to assist in
selecting the TCP profile setting that best corresponds to your network
conditions.
Congestion Control
Setting | Description |
---|---|
BBR | Specifies that the system uses a TCP
algorithm that continuously measures the connection's maximum delivery rate
(bottleneck bandwidth) and minimum round trip time. |
CAIA Delay-Gradient (CDG) | Specifies that the system uses a delay-based TCP that senses the onset of
congestion by variations in Round Trip Time (RTT). |
CAIA Hamilton Delay (CHD) | Specifies that the system uses a TCP algorithm that aims to keep network
queuing delays below a particular threshold (queue_threshold) and decides to
reduce the congestion window (cwnd) probabilistically based on its estimate of
the network queuing delay. |
CUBIC | Specifies that the system uses a TCP algorithm that is optimized for high
bandwidth, high delay networks. |
High Speed | Specifies that the system uses a more aggressive, loss-based algorithm.
RFC 3649: HighSpeed TCP for Large Congestion Windows. |
Illinois | Specifies that the system uses a TCP algorithm that is especially
targeted at high-speed, long-distance networks. |
New Reno | Specifies that the system uses a modification to the Reno algorithm that
responds to partial acknowledgements when SACKs are unavailable. RFC 2582: The
NewReno Modification to TCP's Fast Recovery Algorithm. |
Reno | Specifies that the system uses an implementation of the TCP Fast
Recovery algorithm, which is based on the implementation in the BSD Reno
release. RFC 2581: TCP Congestion Control. |
Scalable | Specifies that the system uses a TCP algorithm modification that adds a
scalable, delay-based and loss-based component into the Reno
algorithm. |
Vegas | Specifies that the system uses a TCP algorithm modification that adds a
delay-based and loss-based component into the Reno algorithm. |
Westwood+ | Specifies that the system uses a TCP algorithm based on a bandwidth
estimation metric. |
Woodside | Specifies that the system uses a TCP algorithm that is especially
targeted at high-speed, long-distance networks with enhanced congestion
recovery. |
About BBR congestion control
Starting with BIG-IP version 14.1.0, TCP profiles can now be customized to use BBR
congestion control.
Bottleneck Bandwidth and Round-trip propagation time (BBR) is a congestion control algorithm developed by Google. It is an alternative to loss-based
congestion control because it is designed to respond to actual congestion rather than
simple packet loss. Effective for latency-sensitive applications, BBR optimizes the
speed at which traffic is sent by measuring the fastest way to send data across
different network routes. BBR is the only TCP algorithm to estimate the speed of traffic
to determine the best way to send it, regardless of whether packets have been lost.
You can apply BBR congestion control to a TCP profile on the BIG-IP system using the following methods:
- TMUI
- The congestion control drop down menu is found on the TCP Profile page: Local Traffic > Profiles > Protocol > TCP > TCP Profile
- TMSH
- tmsh modify ltm profile tcp <profile_name> congestion-control bbr
- iControl SOAP API
- >>> b.LocalLB.ProfileTCP.set_congestion_control_mode(profile_names=['new_tcp'], values=[{'default_flag': False, 'value': 'TCP_CONGESTION_CONTROL_BBR'}]); >>> b.LocalLB.ProfileTCP.get_congestion_control_mode(profile_names=['new_tcp']) [{'default_flag': False, 'value': 'TCP_CONGESTION_CONTROL_BBR'}]
- iControl REST API
- $ restcurl -X PUT -u admin:admin_pw /mgmt/tm/ltm/profile/tcp/new-tcp -d '{"congestionControl":"bbr"}' { "kind": "tm:ltm:profile:tcp:tcpstate", "name": "new-tcp", ... "congestionControl": "bbr", ... }
- SNMP
- # snmpwalk -v 2c -c public localhost ltmTcpProfileCongestionCtrl | grep bbr F5-BIGIP-LOCAL-MIB::ltmTcpProfileCongestionCtrl."/Common/new_tcp" = INTEGER: bbr(12)
- iRules
- TCP::congestion <none|reno|newreno|highspeed|scalable|vegas|cdg|chd|illinois|woodside|cubic|westwood|bbr>