TCP::congestion

Description

This iRule command sets the TCP congestion control algorithm.

Syntax

TCP::congestion <none|reno|newreno|highspeed|scalable|vegas
                |cdg|chd|illinois|woodside|cubic|westwood>
# v13+
TCP::congestion

# v14.1+
TCP::congestion bbr

TCP::congestion

  • Calling with no arguments returns the current value (v13+)

TCP::congestion <none>

  • Specifies that the system does not use a network-congestion-control mechanism, even when congestion occurs.

TCP::congestion <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.

TCP::congestion <newreno>

  • Specifies that the system uses a modification to the Reno algorithm that responds to partial acknowledgements when SACKs are unavailable.

TCP::congestion <highspeed>

  • Specifies that the system uses a more aggressive, loss-based algorithm.

TCP::congestion <scalable>

  • Specifies that the system uses a TCP algorithm modification that adds a scalable, delay-based and loss-based component into the Reno algorithm.

TCP::congestion <vegas>

  • Specifies that the system uses a TCP algorithm modification that adds a delay-based and loss-based component into the Reno algorithm.

TCP::congestion <cdg>

  • Specifies that the system uses a delay based TCP that senses onset of congestion by variations in round trip time (RTT).

TCP::congestion <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.

TCP::congestion <illinois>

  • Specifies that the system uses a TCP algorithm that is especially targeted at high-speed, long-distance networks.

TCP::congestion <woodside>

  • Specifies that the system uses a TCP algorithm that is especially targeted at high-speed, long-distance networks with enhanced congestion recovery.

TCP::congestion <cubic>

  • Specifies that the system uses a TCP algorithm that is optimized for high bandwidth, high delay networks.

TCP::congestion <westwood>

  • Specifies that the system uses a TCP algorithm based on a bandwidth estimation metric.

TCP::congestion <bbr>

  • Specifies that the system uses an implementation of the BBR congestion control algorithm, which uses connection’s maximum delivery rate (bottleneck bandwidth) and minimum round trip time to avoid growing buffers and path delay.

Examples

when SERVER_CONNECTED {
    log local0. "Client: [client_addr]:[client_port] - Server: [server_addr]:[server_port]."
    # Set client-side congestion control to Woodside.
    clientside {
        log local0. "Client: congestion [TCP::congestion] to woodside"
        TCP::congestion woodside
    }
    # Set server-side congestion control to High-Speed.
    serverside {
        log local0. "Server: congestion [TCP::congestion] to highspeed"
        TCP::congestion highspeed
    }
}