Linux QoS:空闲时间批量数据传输

如果某个低优先级的数据stream能够达到X Mbps的带宽,但是只有当这个接口上的所有stream/类的总带宽不超过X时,我该怎么做QoS设置? 同时,其他数据stream/类别不能限制为X.

用例是ISP通过计算5分钟间隔内的带宽平均值并logging最大值来loggingstream量。 我希望将最大使用量保持在最低限度(即在接口繁忙时间中终止批量传输),但是在闲置/低通信量时间内获取数据。

看看经常使用的有类调度程序CBQ,HTB和HSFC,我看不出一个简单的方法来实现这一点。

我得到这个在hfsc工作。 我假设你的例子中的“X”是100mbit,但这可以是任何当然的事情。

这里的技巧是创build一个树类,如下所示:

+--------------------------------------------------------------+ +---------------------+ | | | 1:1 | | root | |---------------------| | + | | Rate: 100mbit | | | | | Upper Rate: 100mbit | | | | | | | | | | | | | | | | | +----v------+ | +---------------------+ | | 1:1 | | | | | | +---------------------+ | +--+---+----+ | | 1:10 | | | | | |---------------------| | | | | | Rate: 100mbit | | | | | | Upper Rate: 100mbit | | | | | | | | +----------+------+ +--------+----------+ | | | | | 1:10 | | 1:11 | | | | | | | | | | +---------------------+ | +----------+ +----------+ | | | +---------------------+ | | | 1:11 | | | |---------------------| | | | Rate: 10kbit | +--------------------------------------------------------------+ | Upper Rate: 100mbit | | | | | | | +---------------------+ 

神奇的发生是因为1:10类(默认类)被设置为始终获得100mbit的保证带宽,而“慢”类1:11则提供了只有10kbit突发到100mbit的保证带宽。

这迫使根类(1:1)总是以1:11满足1:10的需求。

注意事项:

  • 不要使用iptables CLASSIFY目标将stream量放入1:11。 分类很慢 。 改用stream量控制filter。 或者,如果您有大量的应用程序在这里进入,并且端口可以进行过滤,请使用cgroup。
  • 将hfsc上的默认目标设置为1:10。
  • 你可能应该设置“慢”链接至less是你的主机的TCP最大段大小。 通过这种方式,您可以尝试让发送的应用程序停留在慢速队列中,以阻止很长一段时间,而内核不必重新协商窗口大小等等。

我testing了两个相互竞争的应用程序通过2个服务尽可能快地向邻居主机发送数据。 其中一个服务是在课堂上1:11。 他们都发送了超过100mbit(所以60MB的数据stream)5秒的stream量。 在运行无类别时,如预期的那样在10秒内完成(所有时间均分共享链接)。

有了这个QoS设置,优先级服务在5秒内完成,而低优先级服务在10秒内完成(好像低优先级正在等待高优先级先完成),我认为是你想要的。

我不确定这是否可行,但你可以试试HTB:

  • 对于低优先级stream,将rate设置为零(或者几乎为零),并且将单元设置为实际的最大值X.这导致具有保证速度为零的低优先级stream和借用最大X兆比特/来自其他stream。
  • 对于其他stream,请将速率设置为networking接口的速度。

根据HTB文件 ,这应该工作。 但是,我没有自己尝试。

编辑 :这将不会限制低priostream量,而链接有X MBit / s空闲带宽。 但这可能是一个开始…

这是很尴尬的,但是如果你可以手动改变极限,你可以在一个更精细的网格上进行守护进程的平均(例如,每隔1分钟logging一次最后的5-10次)。 然后,您只需要一个相当简单的控制循环,您可以调整stream量限制,使5分钟平均值保持在您的限制范围内。 更复杂的stream量预测scheme是可选的。