5.5. TCP SACK 如何降低数据包丢弃率
在 Red Hat Enterprise Linux (RHEL)中默认启用的 TCP Selective Acknowledgment(TCP SACK)功能是 TCP 协议的一种改进,提高了 TCP 连接的效率。
在 TCP 传输中,对于其接收的每个数据包,接收方都向发送方发送一个 ACK 数据包。例如,客户端向服务器发送 TCP 数据包 1-10,但数据包号 5 和 6 丢失了。如果没有 TCP SACK,服务器会丢弃数据包 7-10,客户端必须从丢失点重传所有数据包,这效率较低。如果两个主机上都启用了 TCP SACK,则客户端必须只重传丢失的数据包 5 和 6。
重要
禁用 TCP SACK 会降低性能,并在 TCP 连接中,在接收端造成很高的数据包丢弃率。
RHEL 中默认启用了 TCP SACK。要验证:
sysctl net.ipv4.tcp_sack
# sysctl net.ipv4.tcp_sack
1
如果在您的服务器上禁用了 TCP SACK (0
),请以与您设置它的相同方式恢复设置。