| 阅读上一个主题 :: 阅读下一个主题 |
| 作者 |
留言 |
zcnoffice 半仙
注册时间: 2007-11-15 文章: 52
|
发表于: Tue 2008-05-06 17:46:11 发表主题: 带宽限制的极好方法!!!! 大家可以试试!!! |
|
|
freebsd使用ipfw和nat:
在内核中一定要加上
option HZ=1000
在rc.firewall中设置:
ipfw pipe 1 config bw 9500Kbits/s #设置下行通道带宽。
ipfw pipe 2 config bw 7000Kbits/s #设置上行通道带宽。
ipfw queue 1 config pipe 1 mask dst-ip 0x000000ff #设置下行策略把下行通道带宽按子网主机数量平均划分成若干份。
ipfw queue 2 config pipe 2 mask src-ip 0x000000ff #设置上行策略把上行通道带贡按子网主机数量平均划分成若干份。
ipfw add 40 queue 2 ip from 192.168.10.0/24 to any in #将内网应用上行策略。
ipfw add 41 queue 1 ip from any to 192.168.10.0/24 out #将内网应用下行策略。
以上设置没有任何错误,我已经测试并应用中效果极好。
运行效果:以上规则会根据内网在线的实际主机数来平均划分通道中的带宽,主机之间带宽相互不影响,每台主机用BT和迅雷等下载,只会占用自己的带宽,影响自己的上网速度,不影响其它主机。
在家可以试试!! |
|
| 返回页首 |
|
 |
sharin 道童
注册时间: 2003-05-09 文章: 214
|
发表于: Tue 2008-05-06 19:33:55 发表主题: |
|
|
| 关注。等测试报告。 |
|
| 返回页首 |
|
 |
bestwc 道童

注册时间: 2007-06-28 文章: 305
|
发表于: Wed 2008-05-07 03:50:13 发表主题: |
|
|
若干概念错误。 _________________ 最近在看:《PostgreSQL Hardware Perform》
最近搞懂:Pagein比Pageout更糟糕 |
|
| 返回页首 |
|
 |
tianlongcheng 半仙
注册时间: 2005-03-22 文章: 19
|
发表于: Wed 2008-05-07 08:58:34 发表主题: |
|
|
| 请大家发表下意见,是不是有那么好的效果. |
|
| 返回页首 |
|
 |
ljf331 半仙
注册时间: 2006-04-17 文章: 153
|
发表于: Wed 2008-05-07 09:10:46 发表主题: Re: 带宽限制的极好方法!!!! 大家可以试试!!! |
|
|
关于利用ipfw限制单IP带宽,本论坛有许多帖子和成功的案例。有几个问题与楼主商榷,并提请各道友注意
1.关于option HZ
| zcnoffice 写到: | 在内核中一定要加上
option HZ=1000 |
ipfw对单IP带宽带宽的限制是结合dummynet来限制带宽的,因此内核配置文件中
必不可少。而option HZ=1000 反倒不是必需的,系统有默认值。即使设置也要根据CPU频率修改HZ值,CPU频率1.5G以内,HZ为2000, 1.5G~2G, HZ=4000, 2G以上HZ=5000
2.关于策略的优化
| zcnoffice 写到: |
在rc.firewall中设置:
ipfw pipe 1 config bw 9500Kbits/s #设置下行通道带宽。
ipfw pipe 2 config bw 7000Kbits/s #设置上行通道带宽。
ipfw queue 1 config pipe 1 mask dst-ip 0x000000ff #设置下行策略把下行通道带宽按子网主机数量平均划分成若干份。
ipfw queue 2 config pipe 2 mask src-ip 0x000000ff #设置上行策略把上行通道带贡按子网主机数量平均划分成若干份。
ipfw add 40 queue 2 ip from 192.168.10.0/24 to any in #将内网应用上行策略。
ipfw add 41 queue 1 ip from any to 192.168.10.0/24 out #将内网应用下行策略。 |
以上代码可以优化,将前四条策略合并为两条。以下配置就是我单位网关服务器有关带宽的核心配置
| 代码: | ipfw pipe 1 config mask src-ip 0x000000ff bw 1000Kbit/s queue 300Kbytes
ipfw pipe 2 config mask dst-ip 0x000000ff bw 1000Kbit/s queue 300Kbytes
ipfw -q add 400 pipe 1 ip from 192.168.0.0/24 to any out
ipfw -q add 500 pipe 2 ip from any to 192.168.0.0/24 in
|
3.关于队列。
在IPFW对单个IP进行限制是为每个IP设置一个队列, IPFW通过掩码计算自己设置的,而且是根据发起链接的IP随来随建,不是预先建立队列;每IP的带宽就是pipe中定义的值(1000Kbit/s)。 ipfw默认建立的队列最大是64个。 |
|
| 返回页首 |
|
 |
zcnoffice 半仙
注册时间: 2007-11-15 文章: 52
|
发表于: Wed 2008-05-07 10:08:27 发表主题: |
|
|
本人是初学者,出现一些用词或概念错误,请大家纠正体谅!
楼上所说的优化策略:
| 代码: | ipfw pipe 1 config mask src-ip 0x000000ff bw 1000Kbit/s queue 300Kbytes
ipfw pipe 2 config mask dst-ip 0x000000ff bw 1000Kbit/s queue 300Kbytes
ipfw -q add 400 pipe 1 ip from 192.168.0.0/24 to any out
ipfw -q add 500 pipe 2 ip from any to 192.168.0.0/24 in |
是指第个队列固定带宽1000Kbps吗? 还是随着网络中主机的上线数量变化??
能解释一下queue 300Kbytes的作用吗?? 如何更改最大的队列数?? 谢谢!! |
|
| 返回页首 |
|
 |
ljf331 半仙
注册时间: 2006-04-17 文章: 153
|
发表于: Wed 2008-05-07 10:22:27 发表主题: |
|
|
一、 1000Kbit/s是单IP的限制带宽,是固定值,不随接入主机数量的增加而变化。
二、queue 300Kbytes 是该IP所在队列的数据缓冲值,该值太小影响视频播放。
三、至于64的队列数是默认值,可以调整,具体调整哪个参数可以在网上搜一搜。学生机房主机最大不超过50台,我没有超过64台的应用环境,所以也没有去研究过。 |
|
| 返回页首 |
|
 |
zcnoffice 半仙
注册时间: 2007-11-15 文章: 52
|
发表于: Wed 2008-05-07 10:44:34 发表主题: |
|
|
我上面做的策略是根据上线主机的数量来调整平均分配给定的带宽,两个策略的效果不一样,我做了测试,可以的.
而且option HZ必须指定,只是值就像你说的那样,不一定是1000.
如果不指定的话,会很慢的.
可以尝试一下.
请大家多纠正,谢谢!! |
|
| 返回页首 |
|
 |
zcnoffice 半仙
注册时间: 2007-11-15 文章: 52
|
发表于: Wed 2008-05-07 11:44:27 发表主题: |
|
|
我刚刚在这个论坛中找到的,借见一下.
假设我们希望产生64个队列,那么可以设置掩码为:0x0000003F。意思很简单,最大生成队列数为64,每4个IP共享一个队列!图我就不画了!那么回头看看m0m0掩码的方式:0x00000000和0xFFFFFFFF;很显然,0x00000000表示只有一个动态队列,所有IP共享一个队列!0xFFFFFFFF表示每个IP一个队列,用在管道上那就是一个IP独享一个队列(管道)拉。
还有一个重要的参数: buckets hash-table-size ;指定哈西表大小,是为了储存不同的列队。由net.inet.ip.dummynet.hash_size默认为64,允许范围是16到1024。 有效的动态队列不完全由掩码决定,必须能通过哈西表引用队列才行,因此当IP数量超过64的时候,有可能会导致某些队列失效(从哈西表中删除其引用)!有几种方法可以解决这个问题,配置xml文件可以解决,也可以在webgui页面中为不同组的IP分配不同的管道来解决!
原地址:
http://www.freebsdchina.org/forum/viewtopic.php?t=34590 |
|
| 返回页首 |
|
 |
tianlongcheng 半仙
注册时间: 2005-03-22 文章: 19
|
发表于: Wed 2008-05-07 15:29:42 发表主题: |
|
|
我单位是ADSL上行512KB,下行是2m,在IPFW这样加上规则(如下)为什么没效果,单机下载还超过这个值,为什么?
ipfw pipe 20 config bw 20KBytes/s
ipfw add pipe 20 ip from any to 192.168.63.0/24 out
ipfw pipe 30 config bw 30KBytes/s
ipfw add pipe 30 ip from 192.168.63.0/24 to any in |
|
| 返回页首 |
|
 |
ljf331 半仙
注册时间: 2006-04-17 文章: 153
|
发表于: Wed 2008-05-07 15:44:45 发表主题: |
|
|
| tianlongcheng 写到: | 我单位是ADSL上行512KB,下行是2m,在IPFW这样加上规则(如下)为什么没效果,单机下载还超过这个值,为什么?
ipfw pipe 20 config bw 20KBytes/s
ipfw add pipe 20 ip from any to 192.168.63.0/24 out
ipfw pipe 30 config bw 30KBytes/s
ipfw add pipe 30 ip from 192.168.63.0/24 to any in |
1.单IP限制带宽,关键字是mask dst-ip 0x000000ff
2.ipfw list ? 看你加的策略顺序是否靠前。 |
|
| 返回页首 |
|
 |
delphij 精神病

注册时间: 2002-08-07 文章: 8427 来自: Mountain View, California
|
发表于: Thu 2008-05-08 05:56:26 发表主题: |
|
|
HZ现在在i386/amd64上的默认值是1000,个人建议如果不是真的了解这个数值的含义最好不要改。 _________________ BSD是独立的一蹴,我们有自己的圈子,我们不以商业驱动,追求完美是我们的源动力,任何不好的代码都不能在这里存活。 |
|
| 返回页首 |
|
 |
zcnoffice 半仙
注册时间: 2007-11-15 文章: 52
|
发表于: Thu 2008-05-08 08:58:24 发表主题: |
|
|
| 代码: | 在rc.firewall中设置:
ipfw pipe 1 config bw 9500Kbits/s #设置下行通道带宽。
ipfw pipe 2 config bw 7000Kbits/s #设置上行通道带宽。
ipfw queue 1 config pipe 1 mask dst-ip 0x000000ff #设置下行策略把下行通道带宽按子网主机数量平均划分成若干份。
ipfw queue 2 config pipe 2 mask src-ip 0x000000ff #设置上行策略把上行通道带贡按子网主机数量平均划分成若干份。
ipfw add 40 queue 2 ip from 192.168.10.0/24 to any in #将内网应用上行策略。
ipfw add 41 queue 1 ip from any to 192.168.10.0/24 out #将内网应用下行策略。 |
以上策略中,如果不改HZ为适当值的话,使用默认值,内网中客户机上网会很慢的。希望有人能测试一下,看看实际情况! |
|
| 返回页首 |
|
 |
ljf331 半仙
注册时间: 2006-04-17 文章: 153
|
发表于: Thu 2008-05-08 09:39:20 发表主题: |
|
|
| zcnoffice 写到: |
ipfw add 40 queue 2 ip from 192.168.10.0/24 to any in #将内网应用上行策略。
ipfw add 41 queue 1 ip from any to 192.168.10.0/24 out #将内网应用下行策略。 |
1、我在网关做的NAT,内网用户通过网关地址转换后访问外网。因此从192.168.0.0/24 to any (上行)是out ,反之是in。 不知你的网络环境是否与我的一致。
2、如果你的服务器只是对内网提供服务,为什么上下行不对称?
3、ipfw对队列的控制不如PF,队列好像不能像PF那样借用带宽,你在运行一下ipfw pipe list 看看队列的建立情况。
4、个人认为HZ设置应对带宽不会产生大的影响,至多对带宽的控制不是特别精细。 |
|
| 返回页首 |
|
 |
zcnoffice 半仙
注册时间: 2007-11-15 文章: 52
|
发表于: Thu 2008-05-08 09:48:47 发表主题: |
|
|
ipfw add 40 queue 2 ip from 192.168.10.0/24 to any in #将内网应用上行策略。
ipfw add 41 queue 1 ip from any to 192.168.10.0/24 out #将内网应用下行策略。
对,这个问题也是我一直想弄清楚的,我在handbook中的防火墙教程中说明是像我这样的,但很多资料中显示是你说的那样,这两种我都用过,现在我用的就是上面的设置,效果还可以,就是在主机流量大的时间丢包较多。 |
|
| 返回页首 |
|
 |
zcnoffice 半仙
注册时间: 2007-11-15 文章: 52
|
发表于: Thu 2008-05-08 10:09:17 发表主题: |
|
|
这是我的rc.firewall内容:
| 代码: | ipfw pipe 1 config bw 9500Kbits/s
ipfw pipe 2 config bw 7000Kbits/s
ipfw queue 1 config pipe 1 mask dst-ip 0xffffffff
ipfw queue 2 config pipe 2 mask src-ip 0xffffffff
ipfw add 40 queue 2 ip from 192.168.10.0/24 to any in
ipfw add 41 queue 1 ip from any to 192.168.10.0/24 out |
这是我的ipfw pipe list.大家帮看看,我把0x000000ff改为了0xffffffff之后的显示:
| 代码: | 00001: 9.500 Mbit/s 0 ms 50 sl. 0 queues (1 buckets) droptail
00002: 7.000 Mbit/s 0 ms 50 sl. 0 queues (1 buckets) droptail
q00001: weight 1 pipe 1 50 sl. 50 queues (1024 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
4 ip 0.0.0.0/0 0.0.0.4/0 34594 7563051 0 0 0
10 ip 0.0.0.0/0 0.0.0.10/0 18504 9456852 0 0 0
14 ip 0.0.0.0/0 0.0.0.14/0 891 317021 0 0 0
35 ip 0.0.0.0/0 0.0.0.35/0 984786 482776361 0 0 75
5
38 ip 0.0.0.0/0 0.0.0.38/0 106925 54537426 0 0 0
50 ip 0.0.0.0/0 0.0.0.50/0 11335 1934056 0 0 0
55 ip 0.0.0.0/0 0.0.0.55/0 1043 435946 0 0 0
56 ip 0.0.0.0/0 0.0.0.56/0 7853 3113500 0 0 0
63 ip 0.0.0.0/0 0.0.0.63/0 5160 1777378 0 0 0
65 ip 0.0.0.0/0 0.0.0.65/0 17528 4645232 0 0 0
71 ip 0.0.0.0/0 0.0.0.71/0 61018 26961152 0 0 3
72 ip 0.0.0.0/0 0.0.0.72/0 3874 651622 0 0 0
74 ip 0.0.0.0/0 0.0.0.74/0 710 215826 0 0 0
81 ip 0.0.0.0/0 0.0.0.81/0 1457960 645091734 0 0 2
24
85 ip 0.0.0.0/0 0.0.0.85/0 34654 12728535 0 0 0
89 ip 0.0.0.0/0 0.0.0.89/0 36111 16606006 0 0 0
94 ip 0.0.0.0/0 0.0.0.94/0 4983 2259820 0 0 0
104 ip 0.0.0.0/0 0.0.0.104/0 51 12468 0 0 0
105 ip 0.0.0.0/0 0.0.0.105/0 521043 436767248 0 0 12
079
106 ip 0.0.0.0/0 0.0.0.106/0 58764 28478800 0 0 0
142 ip 0.0.0.0/0 0.0.0.142/0 1214 508769 0 0 0
148 ip 0.0.0.0/0 0.0.0.148/0 93371 33289336 0 0 21
171 ip 0.0.0.0/0 0.0.0.171/0 1637322 1864599505 0 0
75693
173 ip 0.0.0.0/0 0.0.0.173/0 1777244 1818282417 0 0
41170
192 ip 0.0.0.0/0 0.0.0.192/0 67785 5476080 0 0 0
193 ip 0.0.0.0/0 0.0.0.193/0 15238 2460455 0 0 0
769 ip 0.0.0.0/0 192.168.10.81/0 159953 38984427 0 0 0
773 ip 0.0.0.0/0 192.168.10.85/0 290 33958 0 0 0
777 ip 0.0.0.0/0 192.168.10.89/0 1694 735722 0 0 0
791 ip 0.0.0.0/0 192.168.10.71/0 23836 9799868 0 0 4
792 ip 0.0.0.0/0 192.168.10.72/0 3344 470637 0 0 0
794 ip 0.0.0.0/0 192.168.10.74/0 30 6811 0 0 0
825 ip 0.0.0.0/0 192.168.10.105/0 210256 182313726 30 21846 8
838
826 ip 0.0.0.0/0 192.168.10.106/0 15182 9201533 0 0 0
852 ip 0.0.0.0/0 192.168.10.4/0 5016 1246574 0 0 0
858 ip 0.0.0.0/0 192.168.10.10/0 5296 2791612 0 0 0
866 ip 0.0.0.0/0 192.168.10.50/0 1209 139729 0 0 0
871 ip 0.0.0.0/0 192.168.10.55/0 2581 1436715 0 0 0
872 ip 0.0.0.0/0 192.168.10.56/0 10258 5289468 0 0 0
878 ip 0.0.0.0/0 192.168.10.62/0 28 4354 0 0 0
879 ip 0.0.0.0/0 192.168.10.63/0 3439 966968 0 0 0
883 ip 0.0.0.0/0 192.168.10.35/0 41634 8945215 0 0 0
912 ip 0.0.0.0/0 192.168.10.192/0 8634 530634 0 0 0
913 ip 0.0.0.0/0 192.168.10.193/0 2092 332497 0 0 0
964 ip 0.0.0.0/0 192.168.10.148/0 5525 1733432 0 0 0
971 ip 0.0.0.0/0 192.168.10.155/0 16 7045 0 0 0
972 ip 0.0.0.0/0 192.168.10.156/0 229 110945 0 0 0
974 ip 0.0.0.0/0 192.168.10.158/0 465 54859 0 0 0
1019 ip 0.0.0.0/0 192.168.10.171/0 150143 171385283 2 2936 1
680
1021 ip 0.0.0.0/0 192.168.10.173/0 184249 174505343 22 22361
4553
q00002: weight 1 pipe 2 50 sl. 46 queues (1024 buckets) droptail
mask: 0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
2 ip 192.168.10.85/0 0.0.0.0/0 494 489200 0 0 0
8 ip 0.0.0.4/0 0.0.0.0/0 27325 2825806 0 0 0
10 ip 192.168.10.81/0 0.0.0.0/0 234396 199537137 0 0 31
2
20 ip 0.0.0.10/0 0.0.0.0/0 15586 1343677 0 0 0
26 ip 192.168.10.89/0 0.0.0.0/0 1273 66512 0 0 0
28 ip 0.0.0.14/0 0.0.0.0/0 746 126164 0 0 0
38 ip 192.168.10.71/0 0.0.0.0/0 38227 3896111 0 0 0
56 ip 192.168.10.72/0 0.0.0.0/0 3282 190386 0 0 0
60 ip 192.168.10.74/0 0.0.0.0/0 65 4585 0 0 0
70 ip 0.0.0.35/0 0.0.0.0/0 1249605 477388469 0 0 8
04
76 ip 0.0.0.38/0 0.0.0.0/0 134506 9377552 0 0 7
100 ip 0.0.0.50/0 0.0.0.0/0 10688 562037 0 0 0
110 ip 0.0.0.55/0 0.0.0.0/0 899 70934 0 0 0
112 ip 0.0.0.56/0 0.0.0.0/0 7068 1071361 0 0 0
122 ip 192.168.10.105/0 0.0.0.0/0 184123 12083398 0 0 0
124 ip 192.168.10.106/0 0.0.0.0/0 11725 626412 0 0 0
126 ip 0.0.0.63/0 0.0.0.0/0 4757 466074 0 0 3
130 ip 0.0.0.65/0 0.0.0.0/0 14235 747212 0 0 0
142 ip 0.0.0.71/0 0.0.0.0/0 80250 7651324 0 0 0
144 ip 0.0.0.72/0 0.0.0.0/0 3784 224022 0 0 0
148 ip 0.0.0.74/0 0.0.0.0/0 700 50847 0 0 0
160 ip 192.168.10.4/0 0.0.0.0/0 4784 902953 0 0 0
162 ip 0.0.0.81/0 0.0.0.0/0 1971994 1270807714 0 0
1295
170 ip 0.0.0.85/0 0.0.0.0/0 37017 17685185 0 0 0
178 ip 0.0.0.89/0 0.0.0.0/0 28844 2641938 0 0 0
188 ip 192.168.10.10/0 0.0.0.0/0 4465 342906 0 0 0
198 ip 192.168.10.55/0 0.0.0.0/0 1850 78158 0 0 0
204 ip 192.168.10.50/0 0.0.0.0/0 1182 53142 0 0 0
208 ip 0.0.0.104/0 0.0.0.0/0 89 5765 0 0 0
210 ip 0.0.0.105/0 0.0.0.0/0 448972 32412481 0 0 0
212 ip 192.168.10.62/0 0.0.0.0/0 29 2018 0 0 0
214 ip 192.168.10.63/0 0.0.0.0/0 2916 172948 0 0 0
216 ip 192.168.10.56/0 0.0.0.0/0 8045 931188 0 0 0
238 ip 192.168.10.35/0 0.0.0.0/0 49027 27516863 0 0 0
284 ip 0.0.0.142/0 0.0.0.0/0 1047 123542 0 0 0
296 ip 192.168.10.192/0 0.0.0.0/0 6531 402231 0 0 0
298 ip 192.168.10.193/0 0.0.0.0/0 2112 126156 0 0 0
342 ip 0.0.0.171/0 0.0.0.0/0 1706289 136145863 0 0
83
346 ip 0.0.0.173/0 0.0.0.0/0 1770059 205683119 0 0 4
01
384 ip 192.168.10.148/0 0.0.0.0/0 5050 792838 0 0 0
386 ip 0.0.0.193/0 0.0.0.0/0 14801 943248 0 0 0
400 ip 192.168.10.156/0 0.0.0.0/0 258 24553 0 0 0
404 ip 192.168.10.158/0 0.0.0.0/0 477 35084 0 0 0
414 ip 192.168.10.155/0 0.0.0.0/0 20 2214 0 0 0
498 ip 192.168.10.173/0 0.0.0.0/0 186713 18780687 0 0 33
510 ip 192.168.10.171/0 0.0.0.0/0 159960 11823107 0 0 0 |
|
|
| 返回页首 |
|
 |
|