我知道我可以用tc或类似的工具来调整输出stream量。 但是,现在我想要调整inputstream量 – 实际上,我想通过缓慢的有损连接优先下载某些types的文件。
我知道tc只能影响输出stream量的原因:主机本身不能直接控制inputstream量。 另一方面,TCP内置了一些防止TCPstream量溢出的措施。 那么,我可以在TCP头中修改一些东西,这样远程主机会认为我的连接速度比想象的慢吗?
假设我能够使用iptables在两种types的连接上设置相应的标记。 有什么办法可以减less第一类连接的input带宽,但只有在第二类连接存在的情况下才有办法。
你指的是TCP显式拥塞通知( http://en.wikipedia.org/wiki/Explicit_Congestion_Notification 。)我不认为你在寻找什么在技术上是可能的,因为在收到数据包的时候由Linux服务器本身,你已经收到了数据包,并试图在事后调整它们。
实际上,如果您想要QOS或stream量整形,那么应该在您的上游供应商处进行,而不是在接收端。 换句话说,所有的stream量整形都在源端完成,而不是目的端。
有很好的解决scheme可用,不幸的是,在Linux上免费提供。 延迟或丢弃数据包工作非常非常差。 你可以做,如果你必须,但结果是充足的。 当你收到一个数据包的时候,它已经消耗了你试图保护的入站带宽。
正确的做法是调整出站TCP窗口通告,将较小的窗口通告给另一端。 有这样做的硬件和软件实现,但据我所知,在Linux上没有免费的。
这个脚本解释了一种做法,并有一些非常详细的解释理论和局限性的评论。