我如何使用`tc`命令给第一个队列优先?

可以说我有3个队列(#表示数据):

Q1: (in)[ ###](out) Q2: (in)[ #####](out) Q3: (in)[ #############](out) 

比方说,我把我所有的ICMP数据包放在Q1,并在第三季度所有的持续下载。

如何使用tc命令(来自iproute2)在有数据时清空Q1,而忽略其他两个队列?

目前我限制了Q3的速度,但是这感觉相当粗糙。 在Q1没有stream量时,我希望Q3能够全速下载。

这可能吗?

更新:看我的我的QoS脚本的版本1 。

更新2:我进一步更新了我的脚本(见第2版 ),但是我已经改变了ISP,因为它没有在最后做QoS(所以不需要dynamic的速度改变)。 然而,我已经添加了-u和-d参数,所以我可以改变我的上/下限,而不需要编辑脚本。 这个脚本的问题是队列速度永远不会达到ceil的值; 他们只能达到rate – 我认为这不应该发生。

更新3:我不知道为什么,但我的QoS脚本的版本3的作品 ! 如果有人能解释为什么,那会很棒……我只做了很小的改动; 我看不出我是如何做到的。我发现它正在工作后,改变了突发设置。

尼斯脚本,我喜欢与dynamic下载速度的时间部分。 ;)无论如何,我正在做你想要的东西。 我用htb做了,但几个月前转到hfsc。 诀窍是把q3的速率限制在一个非常低的速率上,但是给它带上全带宽。 q1另一方面获得更高的利率和相同的细胞。 一个现实世界的例子:

 tc class add dev ppp0 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps tc class add dev ppp0 parent 1:1 classid 1:10 htb rate 60kbps ceil 100kbps prio 1 tc class add dev ppp0 parent 1:1 classid 1:11 htb rate 39kbps ceil 100kbps prio 2 tc class add dev ppp0 parent 1:1 classid 1:12 htb rate 1kbps ceil 100kbps prio 3 

Q1将是1:10

Q2将是1:11

Q3将是1:12

也许你的问题在于你复杂的脚本。 尝试一个更轻量级的debbuging版本。

tc -s -d class show dev <interface>应显示有关队列的一些统计信息。 如果q1无关并且q3不使用全带宽,让我们给出输出。 你也可以试试hfsc。

一个备注:在大多数configuration中,传入stream量上的QOS或stream量控制是无用的。 通常情况下,您处于接收angular色,他无权接收多less数据/时间。 你可以使用Ingress-Queuing,但它不会有什么帮助,它只会抛弃已经收到的数据包。

这并不像听起来那么糟糕,因为大多数拨号连接现在都是非对称的,这意味着传输方向是瓶颈。 (总是从你的angular度来看)

看看“优先”,“率”和“细胞”的使用。

你应该能够基本上给第三季度低利率(和高上限)…和第一季度“更低”的优先权(这使得它实际上更重要)。 这个应该做的是给第一季度占主导地位的带宽…当它没有被使用时…第三季度应该被提升到最高限度(因为它不重要)。

这是我的工作版本: qos-v3.sh

这甚至可以在下载的QoS上下载; 但“稳定”需要一段时间。 这是因为,据我了解,服务器仍会尝试以最大速度发送给您 – 但由于QoS脚本正在丢弃数据包,因此传入的连接通常会减慢发送数据包的速率(直到数据包停止下降)。

像9中的7会说: 粗糙但有效 (哦,上帝,我没有…)