星之蘿莉控 发表于 2007-1-25 21:11:44

Coyote无法限制上传频宽

/etc/rc.d/rc.local
# QoS eth1上传方面

# 清除 eth1所有队列规则
tc qdisc del dev eth1 root 2>/dev/null

# 定义最顶层(根)队列规则,并指定 default 类别编号
tc qdisc add dev eth1 root handle 10: htb default 30

# 定义第一层的 10:1 类别 (总频宽)
tc class add dev eth1 parent 10: classid 10:2 htb rate 32kbps ceil 32kbps

# 定义第二层叶类别
# rate 保证频宽,ceil 最大频宽,prio 优先权
tc class add dev eth1 parent 10:2 classid 10:10 htb rate 18kbps ceil 18kbps prio 0
tc class add dev eth1 parent 10:2 classid 10:20 htb rate 14kbps ceil 14kbps prio 1
tc class add dev eth1 parent 10:2 classid 10:30 htb rate 0kbps ceil 8kbps prio 2


# 定义各叶类别的队列规则
# parent 类别编号,handle 叶类别队列规则编号
tc qdisc add dev eth1 parent 10:10 handle 101: pfifo
tc qdisc add dev eth1 parent 10:20 handle 102: pfifo
tc qdisc add dev eth1 parent 10:30 handle 103: pfifo

# 设定过滤器
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 10 fwclassid 10:10
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 20 fwclassid 10:20
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 30 fwclassid 10:30

# 清除 eth0 所有队列规则
tc qdisc del dev eth0 root 2>/dev/null

# 定义最顶层(根)队列规则,并指定 default 类别编号
tc qdisc add dev eth0 root handle 10: htb default 60

# 定义第一层的 10:1 类别 (总频宽)
tc class add dev eth0 parent 10: classid 10:1 htb rate 256kbps ceil 256kbps

# 定义第二层叶类别
# rate 保证频宽,ceil 最大频宽,prio 优先权
tc class add dev eth0 parent 10:1 classid 10:40 htb rate 8kbps ceil 252kbps prio 0
tc class add dev eth0 parent 10:1 classid 10:50 htb rate 4kbps ceil 248kbps prio 1

tc class add dev eth0 parent 10:1 classid 10:60 htb rate 0kbps ceil 64kbps prio 2


# 定义各叶类别的队列规则
# parent 类别编号,handle 叶类别队列规则编号
# 由于采用 fw 过滤器,所以此处使用 pfifo 的队列规则即可
tc qdisc add dev eth0 parent 10:40 handle 104: pfifo
tc qdisc add dev eth0 parent 10:50 handle 105: pfifo
tc qdisc add dev eth0 parent 10:60 handle 106: pfifo

# 设定过滤器
# 指定贴有 10 标签 (handle) 的封包,归类到 10:10 类别,以此类推
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 40 fw classid 10:40
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 50 fw classid 10:50
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 60 fw classid 10:60


/etc/coyote/firewall.local

# uploads
# 设定上传方面,先利用 iptables 给封包贴标签,再交由 fw 过滤器进行过滤

iptables -t mangle -A PREROUTING -s 192.168.1.100 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.1.101 -j MARK --set-mark 20

# downloads
# 下载方面

iptables -t mangle -A POSTROUTING -d 192.168.1.100 -j MARK --set-mark 40
iptables -t mangle -A POSTROUTING -d 192.168.1.101 -j MARK --set-mark 50


不知道是哪里设定出了问题,下载可以被控制,而上传却不行

bfrader 发表于 2007-6-19 15:29:09

tc class add dev eth1 parent 10:2 classid 10:10 htb rate 18kbps ceil 18kbps prio 0
tc class add dev eth1 parent 10:2 classid 10:20 htb rate 14kbps ceil 14kbps prio 1
tc class add dev eth1 parent 10:2 classid 10:30 htb rate 0kbps ceil 8kbps prio 2

你的总上传带宽是32k,却被10:10和10:20的保证带宽给全占了,10:30哪能有8k的最大带宽啊,所以你的带宽分配是失败的,QOS也就无法正常工作了。保证带宽可设小一些,最大带宽不能超过这个值:总带宽-其他类(不包括本类)的保证带宽之和。修改:

tc class add dev eth1 parent 10:2 classid 10:10 htb rate 8kbps ceil 24kbps prio 0
#这肯定准备给你自己用的,保证8k,最大24k(也就是32k-(4k+4k))

tc class add dev eth1 parent 10:2 classid 10:20 htb rate 4kbps ceil 20kbps prio 1
#保证4k,最大20k(也就是32k-(8k+4k))

tc class add dev eth1 parent 10:2 classid 10:30 htb rate 4kbps ceil 20kbps prio 2
#保证4k,最大20k(也就是32k-(8k+4k))

当然,最大带宽可以设小一些,但不能再大了

[ 本帖最后由 bfrader 于 2007-6-19 15:30 编辑 ]

ekinmagic 发表于 2007-7-11 07:28:46

正常的 PPP0E拨号 断线后再拨号 是限制不了上行的

芝麻 发表于 2012-2-16 17:06:55

楼上的朋友,我发现coyote的外网不管是static ip还是PPPOE,上传速度都无法控制,能否帮忙看看代码有什么问题,谢谢。
tc qdisc add dev eth1 root handle 1: htb r2q 1
tc class add dev eth1 parent 1: classid 1:1 htb rate 30kbit burst 5kbit
tc filter add dev eth1 parent 1: protocol ip prio 16 u32 match ip src 192.168.1.225/32 flowid 1:1
tc class add dev eth1 parent 1: classid 1:2 htb rate 30kbit burst 5kbit
tc filter add dev eth1 parent 1: protocol ip prio 16 u32 match ip src 192.168.1.226/32 flowid 1:2

芝麻 发表于 2012-2-16 17:08:25

本帖最后由 芝麻 于 2012-2-16 17:12 编辑

但如果采用把数据包打标后交给限速队列来处理是可行的,如
tc qdisc add dev eth1 root handle 1: htb default 255
tc class add dev eth1 parent 1: classid 1:256 htb rate 128kbps ceil 128kbps
tc class add dev eth1 parent 1:256 classid 1:1 htb rate 8kbps ceil 12kbps prio 3
tc filter add dev eth1 parent 1: protocol ip prio 100 handle 1 fw classid 1:1
在自定义防火墙规则里打标
iptables -t mangle -A PREROUTING -s 192.168.111.1/32 -j MARK --set-mark 1

374533905 发表于 2014-11-29 12:38:37

楼主威武知道我辈学习
页: [1]
查看完整版本: Coyote无法限制上传频宽