中等ISP的QoSconfiguration

什么是最好的基于Linux的QoS平台来实现一个configuration,其中所有256Kbps的DSL客户端(都属于相同的IP范围)在单个QoS规则下获得200Kbps的保证速度?

标准的linux QoS /stream量控制系统被称为[tc][1] (stream量控制)。

你将需要初始化一个链,设置它的属性,然后将你的IP添加到它,如下所示:

 #!/bin/bash DEV=eth0 PATH=$PATH:/sbin tc qdisc del dev $DEV root tc qdisc add dev $DEV root handle 1: htb default 20 tc class add dev $DEV parent 1:1 classid 1:10 htb rate 2000kbps ceil 2000kbps burst 500kb quantum 1500 tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10 tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 match ip dst 10.10.10.1/24 flowid 1:10 tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 match ip src 10.10.10.1/24 flowid 1:10 

那么所提到的configuration是否将所需速度范围内的每个IP分配给每个单独的IP,而不必具有单独的规则?

不,不会的 HTB的工作方式 ,你可以分配整个桶的价格,而不是单个IP​​。 Caleb试图做的是通过SFQ qdisc在10位客户中均匀分配2000 Kbps的可用带宽。 然而,这不会按预期工作 – SFQ计算每个连接的调度,而不是每个IP – 如果你的任何客户有更多的带宽需求比别人更高,他将获得更多的带宽。

还有另一个名为ESFQ的调度程序 ,它扩展了SFQ,以便能够按每个IP进行调度,但即使如此,您也只能计划当前活动的通信量,而不能以200 kbps的速度限制任何给定的用户。 我不知道是否有任何可用的qdisc,可以让你这样做,但鉴于不同的qdisc项目的数量,我会这样认为。

另一个问题是,tc只调度接口上的传出stream量,从来没有考虑入站stream量。 中间排队设备(IMQ)帮助解决此限制。

为了保证和公平的划分,HFSC调度器(从BSD的altq移植到linux)是一件好事。 (至less不像HTB那样笨拙和笨拙)。令人遗憾的是,在Linux中设置stream量整形是一个痛苦的过程,学习曲线非常残酷,而且由于tc接口只是不友善,我build议使用MasterShaper或类似的前端。

(PS。如果你决定自己pipe理tc,使用IFB内核特性来进行上传整形 – 就像前面提到的IMQ一样,但是可以在更新的内核上工作,并且更适合整个框架)

Mikrotik RouterBoards;)最好的平台,你可以有。 他们的操作系统(RouterOS)是基于Linux的,但作为一种应用程序,您不能访问真正的shell或文件系统。

虽然他们是一个小的ISP平台,所以你真的很喜欢他们。

也许,我以前的有关Linux / QoS的答案也可以帮助你:

  • TC是否可以通过IP头的Qos字段限制带宽?
  • 为什么这个TC脚本不工作
  • 这两个QOS脚本语句是什么意思