如何在不导致数据包丢失的情况下修复缓冲区膨胀?

如何在不导致数据包丢失的情况下修复缓冲区膨胀?

我刚刚在 Linksys E4200 (V2) 上安装了 SQM QoS,以修复一些老实说可怕的缓冲区膨胀问题。这似乎已经解决了问题,但是,它现在引入了以前没有的严重数据包丢失。

PS - 让任何回复都易于网络新手理解,我只知道基础知识:)

答案1

对于拥塞的链路来说,数据包丢失是正常现象,它是最广为人知的拥塞信号。SQM 明智地采用了智能早期数据包丢失,以便让发送和接收 TCP 流的机器检测拥塞,从而启动拥塞控制算法。Bufferbloat 是由网络硬件设计人员(错误地)认为所有数据包丢失都是坏事并试图不惜一切代价避免数据包丢失而引起的。

如今,TCP/IP 协议增强功能已出现,称为显式拥塞通知 (ECN),它允许网络硬件显式通知设备链路拥塞,而无需采用丢弃数据包来发出拥塞信号这种古老的方法。所有现代操作系统都支持 ECN,但并非所有操作系统都默认为所有连接启用了 ECN。如果您在所有设备的 TCP/IP 堆栈(以及它们在 Internet 上与之通信的所有其他服务器/对等点/主机的 TCP/IP 堆栈)上启用 ECN,那么您的支持 SQM 的网络设备将能够在这些连接上使用 ECN 标记,而不是采用丢弃数据包来发出拥塞信号的古老而可靠的方法。

启用 ECN 的方式因操作系统而异,但对于类 Unix 操作系统,通常涉及使用 sysctl。

https://www.bufferbloat.net/projects/cerowrt/wiki/Enable_ECN/

相关内容