我将如何做一个QoS设置,其中某个低优先级数据流将达到X Mbps带宽,但只有在此接口上当前(所有流/类)的总带宽不超过X的情况下?同时,其他数据流/类不能仅限于X。
用例是ISP通过计算超过5分钟间隔的带宽平均值并计费最大带宽来计费流量。我希望将最大使用量保持在最低限度(即在接口繁忙时间内终止大容量传输),但在空闲/低流量时间通过数据。
看看经常使用的类调度器CBQ、HTB和HSFC,我看不出实现这一目标的简单方法。
发布于 2012-06-14 23:50:41
我在hfsc工作。我假设你的例子中的"X“是100 that,但那当然可以是任何东西。
这里的技巧是创建一个树类,如下所示:
+--------------------------------------------------------------+ +---------------------+
| | | 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类(默认类),以始终获得100 magic的保证带宽,而“慢速”类1:11的保证带宽只有10 10kbit突发到100 magic。
这迫使根类(1:1)始终满足1:10而不是1:11的需求。
要注意的事情:
我测试了两个相互竞争的应用程序,以尽可能快的速度将数据发送到一个相邻的主机,超过2个服务。其中一个服务位于第1:11级,它们都发送了超过100 sent的5秒流量(所以60 11的数据流)。当运行无类时,正如预期的那样,两者都在10秒内完成(两者共享链接,因此时间被平分)。
使用此QoS设置,优先级服务在5秒内完成,而低优先级服务在10分钟内完成(就好像低优先级在等待高优先级先完成一样),我认为这就是您想要的。
发布于 2012-04-01 21:31:05
我不确定这是否有效,但你可以试试HTB:
rate
设置为零(或几乎为零),将ceil
设置为实际最大值X。这将导致低优先级流的保证速度为零,并且有可能从其他流借用最大X MBit/s。根据HTB文档的说法,这应该是可行的。不过,我自己也没试过。
编辑:这将不会限制低prio流量,而链接有X MBit/s空闲带宽。但这可能是个开始。
发布于 2012-06-13 18:21:19
这很尴尬,但如果您可以手动更改限制,您可以让一个守护进程平均跨越一个更精细的网格(例如,每隔1分钟,跟踪最后5-10个)。然后,你只需要一个相当简单的控制回路,在那里你调整交通限制,以保持5分钟的平均水平,一个安全的数额低于你的限制。更复杂的流量预测方案是可选的。
https://serverfault.com/questions/374617
复制相似问题