TCP congestion control and avoidance

The z/TPF system supports the congestion control algorithm defined in Request for Comments (RFC) document 2581. Congestion control is a reactive algorithm that dynamically adjusts the rate at which data is sent to reduce the amount of network congestion and packet loss.

The z/TPF system also supports the source-based congestion avoidance algorithm. This is a proactive algorithm that analyzes round-trip times (RTTs) of packets flowing on individual sockets. When the likelihood of congestion is detected, the rate at which data is sent is reduced to avoid congestion and take action before packets are lost in the network. The combination of congestion control and avoidance results in better end-to-end throughput.

Congestion control and avoidance is for TCP sockets only. Congestion control uses the slow start algorithm to help control network congestion by slowly introducing packets to the network when a socket is started. Slow start processing is enabled initially for all TCP sockets by default. However, for certain applications (such as short-lived connections), you may not want slow start processing enabled when the socket is started. Use the ioctl function with the TPF_NOSLOWSTART command to turn off initial slow start processing. Slow start processing is performed automatically when congestion occurs, regardless of the option set on the ioctl function.