Networking

在 tc 限速中減少丟包

  • March 7, 2020

我使用這個 tc 命令來限制介面上的上傳速度:

tc qdisc add dev eth1 root tbf rate 2mbit burst 10kb latency 70ms peakrate 2.4mbit minburst 1540

但它會導致嚴重的封包遺失。如果通過eth0(WAN) 的數據是 7 GB,則在限速介面上將是 6.2 GB eth1。是否有任何其他速率限制解決方案可以減少封包遺失?

如果我理解正確,您正試圖通過限制面向本地介面的出口流量來限制來自您的 ISP 的入口流量。

您看到的封包遺失可能是意料之中的,因為丟棄的數據包是 TCP 檢測擁塞的(一種)方式,也是路由器發出擁塞信號的方式。這也是您的路由器可以遵守您通過 tc 給它的限製而不會破壞即 TCP 擁塞避免的唯一合理方式。(tc 確實有使用 RED 的設施,儘管我對此知之甚少,無法告訴您它存在之外的任何內容)。

您可以查看 tc 的入口 qdisc,將其附加到面向您的 ISP 的介面和一個 tc 過濾器來監管您的入口流量,而不是在您的內向介面上塑造出口流量。丟包仍然會發生,因為這可能是路由器發出擁塞信號的唯一可行方式。

例如,請參閱 LARTC 食譜條目“The Ultimate Traffic Conditioner”,其中使用 tc 的入口 qdisc。

引用自:https://unix.stackexchange.com/questions/13508