Ric*_*ler 12 networking linux bandwidth traffic-shaping
我一直不明白是否可以对传入流量进行速率限制。我意识到没有直接的方法来控制远程服务器的发送数据包的速率(除非你控制两个端点),但考虑到这个限制,下载管理器究竟是如何让我成功设置下载速度限制的?
TCP 慢启动和限速传入流量之间是否存在任何联系?是否可以使用slow-start描述的方法人为限制发送方发送数据包的速率?
作为一个额外的考虑,应该注意的是,我想在其上实现流量整形的服务器本身建立 PPPoE 连接,并充当网络其余部分的路由器。
更新:到目前为止的答案已经对我提出的问题进行了公平的概述,但我仍然不知道下载管理器如何能够限制传入流量,更具体地说,是否可以在Linux 网关盒。
sci*_*rus 12
下载管理器最有可能按照涓流论文中的解释工作。
使用 BSD 套接字的进程可以执行自己的速率限制。对于上游限制,应用程序可以通过简单地限制写入套接字的数据速率来实现。类似地,对于下游限制,应用程序可能会限制从套接字读取数据的速率。但是,这种方法起作用的原因并不是很明显。当应用程序忽略从套接字读取一些数据时,它的套接字接收缓冲区会填满。这反过来将导致接收 TCP 通告较小的接收器窗口 (rwnd),对底层 TCP 连接产生背压,从而限制其数据流。最终,这种“涓滴”效应实现了端到端的速率限制。根据网络堆栈所有层的缓冲,这种效果可能需要一些时间才能传播。
如果您偶尔需要对 UNIX 系统上的单个程序进行速率限制,一个简单的解决方案是Trickle。真正的流量整形,就像您在网关上执行的那样,可以使用tc. 这在第 9 章Linux 高级路由和流量控制 HOWTO 的带宽管理队列规则中有记录。