输入流量整形

输入流量整形

我知道我可以使用tc或类似工具来调整输出流量。但是,我现在想调整输入流量 — 实际上,我想通过慢速有损连接优先下载某种类型的文件。

我知道原因tc只能是调整输出流量:主机本身无法直接控制输入流量。另一方面,TCP 内置了一些措施,可以防止 TCP 流量溢出慢速连接。那么,我是否可以在 TCP 标头中修改某些内容,以便远程主机认为我的连接比它认为的要慢?

假设我能够用 在两种类型的连接上设置相应的标记iptables。 有没有办法减少第一类连接的输入带宽,但前提是存在第二种类型的连接?

答案1

你指的是 TCP 显式拥塞通知(http://en.wikipedia.org/wiki/Explicit_Congestion_Notification.) 我认为您所寻找的在技术上是不可能的,因为当 Linux 服务器本身接收到数据包时,您已经收到了数据包并试图在事后对其进行调整。

实际上,如果您需要 QOS 或流量整形,则应该在上游提供商处进行,而不是在接收端进行。换句话说,所有流量整形都在源端进行,而不是在目标端进行。

答案2

有非常好的解决方案可以解决这个问题,但不幸的是,在 Linux 上没有一个是免费的。延迟或丢弃数据包的效果非常非常差。如果必须这样做,您可以这样做,但结果充其量也只是勉强过得去。当您收到数据包时,它已经消耗了您要保护的入站带宽。

正确的做法是破坏出站 TCP 窗口通告,向另一端通告较小的窗口。有硬件和软件实现可以做到这一点,但据我所知,没有一个在 Linux 上是免费的。

脚本解释了一种方法,并提供了一些非常详细的评论,解释了理论和局限性。

相关内容