- 论坛徽章:
- 0
|
本帖最后由 daofree 于 2010-11-17 17:12 编辑
在9.5.3.2节,有一个关于PRIO的例子,我验证了一下, 发现有错误...
我在我的linux做的NAT的内网卡上,设置了PRIO.
内网段:192.168.2.0/24
外网段:192.168.0.0/24
然后,我在利用过滤器:
把192.168.2.19的数据都勾到频道1;
把192.168.2.29的数据都勾到频道3;
实验结果:
192.168.2.19单独下载外网的一个大文件,速率为:4Mbytes
192.168.2.29单独下载外网的一个大文件,速率为:4Mbytes
若192.168.2.19和192.168.2.29同时下载外网的文件,速率分别是:2Mbytes和2Mbytes...
为什么有这个结果?
按道理,192.168.2.19处于频道1,应该优先发送,速率应该要比192.168.2.29快.
我用指令
tc -s qdisc ls dev eth1
tc -s class ls dev eth1
查看,
同时下载时, 频道1和频道3都有非常大的流量经过,也就说明,我的设置是没有错误的,过滤器的确起作用了...
192.168.2.19单独下载的时候, 频道1发现了非常大的流量, 频道2和频道3几乎没有流量..
192.168.2.29单独下载的时候, 频道3发现了非常大的流量, 频道1和频道2几乎没有流量..
这也更进一步证明,我的过滤器时没有错误的, 的确起作用了...
那么,我问的是:
为什么频道1的数据数据,并不是我想象中的被优先发送?
而是和频道3的数据一样,被同等对待了?
*******************LARTC-zh_CN.GB2312上的原文**********************
9.5.3.2.配置范例
我们想创建这个树:
root 1:prio
/|\
1:1 1:2 1:3
|||
10:20:30:
sfq tbf sfq
band 0 1 2
大批量数据使用30:,交互数据使用20:或10:。
命令如下:
#tc qdisc add dev eth0 root handle 1:prio
##这个命令立即创建了类:1:1,1:2,1:3
#tc qdisc add dev eth0 parent 1:1 handle 10:sfq
#tc qdisc add dev eth0 parent 1:2 handle 20:tbf rate 20kbit buffer 1600 limit 3000
#tc qdisc add dev eth0 parent 1:3 handle 30:sfq
现在,我们看看结果如何:
47#tc-s qdisc ls dev eth0
qdisc sfq 30:quantum 1514b
Sent 0 bytes 0 pkts(dropped 0,overlimits 0)
qdisc tbf 20:rate 20Kbit burst 1599b lat 667.6ms
Sent 0 bytes 0 pkts(dropped 0,overlimits 0)
qdisc sfq 10:quantum 1514b
Sent 132 bytes 2 pkts(dropped 0,overlimits 0)
qdisc prio 1:bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 174 bytes 3 pkts(dropped 0,overlimits 0)
如你所见,0频道已经有了一些流量,运行这个命令之后发送了一个包!
现在我们来点大批量数据传输(使用能够正确设置TOS标记的工具):
#scp tc ahu@10.0.0.11:./
ahu@10.0.0.11's password:
tc 100%|*****************************|353 KB 00:00
#tc-s qdisc ls dev eth0
qdisc sfq 30:quantum 1514b
Sent 384228 bytes 274 pkts(dropped 0,overlimits 0)
qdisc tbf 20:rate 20Kbit burst 1599b lat 667.6ms
Sent 2640 bytes 20 pkts(dropped 0,overlimits 0)
qdisc sfq 10:quantum 1514b
Sent 2230 bytes 31 pkts(dropped 0,overlimits 0)
qdisc prio 1:bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 389140 bytes 326 pkts(dropped 0,overlimits 0)
如你所见,所有的流量都是经过30:处理的,优先权最低。现在我们验证一下交
互数据传输经过更高优先级的频道,我们生成一些交互数据传输:
#tc-s qdisc ls dev eth0
qdisc sfq 30:quantum 1514b
Sent 384228 bytes 274 pkts(dropped 0,overlimits 0)
qdisc tbf 20:rate 20Kbit burst 1599b lat 667.6ms
Sent 2640 bytes 20 pkts(dropped 0,overlimits 0)
qdisc sfq 10:quantum 1514b
Sent 14926 bytes 193 pkts(dropped 0,overlimits 0)
qdisc prio 1:bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 401836 bytes 488 pkts(dropped 0,overlimits 0)
正常——所有额外的流量都是经10:这个更高优先级的队列规定处理的。与先前
的整个scp不同,没有数据经过最低优先级的队列规定。 |
|