免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 7376 | 回复: 20
打印 上一主题 下一主题

[网络管理] 使用tc的htb进行ftp服务器流量控制问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-23 10:20 |只看该作者 |正序浏览
网络连接图为
局域网内一台linux的ftp服务器地址为192。168。1。1
测试客户端为192。168。1。2

|---|
| F |            |---|            |---|
| T |            | 交|            | 测|
| P |---------| 换|--------| 试|
| 服|            | 机|            | 机|
| 务|            |---|            |---|
| 器|
|---|

tc规则如下
tc qdisc add dev eth1 root handle 1: htb
tc class add dev eth1 parent 1: classid 1:1 htb rate 1000Mbit ceil 1000Mbit
tc class add dev eth1 parent 1:1 classid 1:11 htb rate 10kbps ceil 20kbps
tc qdisc add dev eth1 parent 1:11 handle 11: sfq perturb 10
tc filter add dev eth1 parent 1:0 protocol ip prio 11 handle 0x10000001 fw classid 1:11

防火墙规则如下
iptables -t mangle -I OUTPUT -o eth1 -d 192.168.1.2  -p tcp --sport ! 22 -j MARK --set-mark 0x10000001
其它防火墙规则全都清空了

在测试机上进行ftp下载可以限制流量,但达不到设定的值,大概时150kbs左右,看tc的状态也在工作,不运行tc的速度大概1M左右,不知各位有无遇到这样的情况,希望能指点一下我。

内核2.6.14.7
iptables v1.3.5

tc状态为:
[root@localhost program]$ tc -s -d qdisc ls dev eth1
qdisc htb 1: r2q 10 default 0 direct_packets_stat 48 ver 3.17
Sent 3025983 bytes 2162 pkts (dropped 0, overlimits 3632 requeues 0)
backlog 14p
qdisc sfq 11: parent 1:11 limit 128p quantum 1514b flows 128/1024 perturb 10sec
Sent 3020672 bytes 2114 pkts (dropped 0, overlimits 0 requeues 0)
backlog 14p



[root@localhost program]$ tc -s -d class ls dev eth1
class htb 1:11 parent 1:1 leaf 11: prio 0 quantum 1000 rate 80Kbit ceil 160Kbit burst 1639b/8 mpu 0b overhead 0b cburst 1679b/8 mpu 0b overhead 0b level 0
Sent 3618341 bytes 2516 pkts (dropped 0, overlimits 0 requeues 0)
rate 19966bit 13pps backlog 29p
lended: 1276 borrowed: 1211 giants: 0
tokens: -140769 ctokens: -151056

class htb 1:1 root rate 1000Mbit ceil 1000Mbit burst 501375b/8 mpu 0b overhead 0b cburst 501375b/8 mpu 0b overhead 0b level 7
Sent 3574435 bytes 2487 pkts (dropped 0, overlimits 0 requeues 0)
rate 20058bit 13pps
lended: 1211 borrowed: 0 giants: 0
tokens: 4084 ctokens: 4084


[root@localhost program]$ tc -s -d filter ls dev eth1
filter parent 1: protocol ip pref 11 fw
filter parent 1: protocol ip pref 11 fw handle 0x10000001 classid 1:11

[ 本帖最后由 hehao109 于 2007-8-23 10:21 编辑 ]

论坛徽章:
0
21 [报告]
发表于 2007-08-24 15:31 |只看该作者
原帖由 hehao109 于 2007-8-24 14:22 发表

那他是如果解决的呢,有文章可以参考下吗

是在很久以前一个不起眼的贴子里点了那么一句,我找不到了……

论坛徽章:
0
20 [报告]
发表于 2007-08-24 14:22 |只看该作者
原帖由 platinum 于 2007-8-24 12:08 发表
听 JohnBull 说过,tc 在 2.4 里面告诉带宽下会不准,不知道你的情况是否和这个有关

那他是如果解决的呢,有文章可以参考下吗

论坛徽章:
0
19 [报告]
发表于 2007-08-24 12:08 |只看该作者
听 JohnBull 说过,tc 在 2.4 里面告诉带宽下会不准,不知道你的情况是否和这个有关

论坛徽章:
0
18 [报告]
发表于 2007-08-24 10:38 |只看该作者
有点眉目了,如果服务器用100M网卡就可以,1000M网卡就不能限速,但交换机都是100M的呀,有人遇到这样的问题吗

论坛徽章:
0
17 [报告]
发表于 2007-08-23 12:57 |只看该作者
原帖由 hehao109 于 2007-8-23 12:41 发表
[root@localhost program]$ tc -s c s dev eth1
class htb 1:11 parent 1:1 leaf 11: prio 0 rate 80Kbit ceil 160Kbit burst 1639b cburst 1679b
Sent 2426824 bytes 2241 pkts (dropped 0, overlimits 0 requeues 0)
rate 10723bit 7pps backlog 24p
lended: 1339 borrowed: 878 giants: 0
tokens: -161294 ctokens: -154804

并没有超速啊?完全在你的限制范围之内
只有一种可能,就是 iptables 做 MARK 时没做全,没有把整个数据流完全都打上 MARK 标记,以至于分类限速的流量只是一部分

[ 本帖最后由 platinum 于 2007-8-23 12:58 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2007-08-23 12:41 |只看该作者
原帖由 platinum 于 2007-8-23 12:26 发表
可否贴一下限制时“超速”状态下的 tc -s c s dev eth1 信息?


[root@localhost program]$ tc -s c s dev eth1
class htb 1:11 parent 1:1 leaf 11: prio 0 rate 80Kbit ceil 160Kbit burst 1639b cburst 1679b
Sent 2426824 bytes 2241 pkts (dropped 0, overlimits 0 requeues 0)
rate 10723bit 7pps backlog 24p
lended: 1339 borrowed: 878 giants: 0
tokens: -161294 ctokens: -154804

class htb 1:1 root rate 1000Mbit ceil 1000Mbit burst 501375b cburst 501375b
Sent 2390488 bytes 2217 pkts (dropped 0, overlimits 0 requeues 0)
rate 10983bit 8pps
lended: 878 borrowed: 0 giants: 0
tokens: 4084 ctokens: 4084

论坛徽章:
0
15 [报告]
发表于 2007-08-23 12:26 |只看该作者
可否贴一下限制时“超速”状态下的 tc -s c s dev eth1 信息?

论坛徽章:
0
14 [报告]
发表于 2007-08-23 12:25 |只看该作者
原帖由 platinum 于 2007-8-23 11:49 发表
两个问题
1、客户机的 IP 是 192.168.1.2 吗?
2、你确定你的 iptables 和 tc 都支持 32bit 的 MARK 值吗?


将防火墙规则改为
iptables -t mangle -I OUTPUT -o eth1 -j MARK --set-mark 0x02
tc规则也改为根据0x02的防火墙标,结果还是跟原来一样

论坛徽章:
0
13 [报告]
发表于 2007-08-23 11:49 |只看该作者
两个问题
1、客户机的 IP 是 192.168.1.2 吗?
2、你确定你的 iptables 和 tc 都支持 32bit 的 MARK 值吗?
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP