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

前端之家收集整理的这篇文章主要介绍了Linux QoS:空闲时的批量数据传输前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在某个低优先级数据流达到X Mbps带宽的情况下进行QoS设置,但前提是此接口上的当前总带宽(所有流/类)不超过X?同时,其他数据流/类不得限于X.

用例是ISP通过计算5分钟间隔的平均带宽并计费最大值来计费流量.我希望将最大使用量保持在最低限度(即在接口忙碌时间内解除批量传输),但在空闲/低流量时间内获取数据.

查看经常使用的有类调度程序CBQ,HTB和HSFC,我看不到一种直接的方法来实现这一点.

解决方法

我让它在hfsc中工作.我假设你的例子中的“X”是100mbit,但那当然可以是任何东西.

这里的技巧是创建一个像这样的树类:

+--------------------------------------------------------------+  +---------------------+
|                                                              |  |        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目标将流量放入1:11.它的
分类真的很慢.请改用流量控制过滤器.或者如果您有许多应用程序可以进入这里
端口可以​​变化为过滤,使用cgroup.
>将hfsc上的默认目标设置为1:10.
>您可能应将“慢”链接设置为至少为主机的tcp最大段大小.通过这种方式,您可以尝试让您的发送应用程序停留在慢速队列中以长时间阻塞,而内核不必重新协商窗口大小等等.

我测试了这个有两个竞争应用程序尽可能快地将数据发送到2个服务的相邻主机.其中一项服务是在班级1:11.他们都传输了超过100mbit的5秒流量(因此流传输了60MB的数据).当运行无类别时,正如预期的那样都在10秒内完成(两者共享链接,因此时间平均分配).

使用此QoS设置,优先服务在5秒内完成,而低优先级服务在10中完成(好像低优先级等待高优先级首先完成),我认为这是您想要的.

猜你在找的Linux相关文章