KindGeorge 回复于:2005-03-12 12:25:51 |
[quote:e8d1f3eef4="hrcxf"] tc qdisc add dev eth2 root handle 2: htb default 30 tc class add dev eth2 parent 2: classid 2:1 htb rate 2Mbit burst 15k tc class add dev eth2 parent 2:1 classid 2:10 htb rate 2Mbit burst 15k tc c..........[/quote:e8d1f3eef4] 留意一下:"tc qdisc add dev eth0 root handle 1: [color=blue:e8d1f3eef4]htb default 30 [/color:e8d1f3eef4]" tc class add dev eth0 parent 1: classid 1:1 htb rate 10Mbit burst 15k tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10Mbit burst 15k tc class add dev eth0 parent 1:1 classid 1:20 htb rate 80Kbit ceil 80Kbit burst 15k 上面default 30 在下面的通道中还没定义. &可以定义为10或20. 另外还有一个值得留意的地方.因为本来局域网是通过100M网卡进行连接的高速网络,如果对内网网卡eth0进行控制了,例如你有两个网段,192.168.1.0,192.168.2.0.那么它们需要互相访问交换数据,通过网关的eth0时,也会受到默认设置htb default 速度的影响. 所以这个默认通道要选择得当. "tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.111.1.116 flowid 1:20 " 中就是说:凡是访问目标为dst 192.111.1.116的都限制在80Kbit. 本来的想法是限制通过互联网疯狂下载的机器.但内网中其他网段的机器访问该机器时是否也受到限制了,要测试一下 |
wingger 回复于:2005-03-12 13:38:38 |
不错,呵 [code:1:65bdaa2863]tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.111.1.116 flowid 1:20 [/code:1:65bdaa2863] 这个不需要用u32吧,一样也可以handle 6,整齐些吧 |
wingger 回复于:2005-03-12 13:40:03 |
[quote:90d385f8ec="KindGeorge"] "tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.111.1.116 flowid 1:20 " 中就是说:凡是访问目标为dst 192.111.1.116的都限制在80Kbit. 本来的想法是限制通过互联网疯狂下载的机器.但内网中其他网段的机器访问该机器时是否也受到限制了,要测试一下[/quote:90d385f8ec] 嗯。如果是多个网段,有可能,一个网段应该没有问题 |
守夜人 回复于:2005-03-12 15:10:33 |
能实现一个分类将1000个用户都分成如100K/ser,而不是只能对一个IP或一个段,怎么做?? |
wingger 回复于:2005-03-12 16:00:12 |
散列表或写个循环脚本应该可以解决 |
KindGeorge 回复于:2005-03-12 17:26:48 |
个人建议针对每个ip的服务,即是端口来做限制,例如80,20,21等较好. |
wingger 回复于:2005-03-13 15:25:11 |
[quote:81a900eab3="守夜人"]能实现一个分类将1000个用户都分成如100K/ser,而不是只能对一个IP或一个段,怎么做??[/quote:81a900eab3] 用u32的match ip 不可以吗?或者iptables打个mark? 难道TC会自动计算一个网段的速率? |
hrcxf 回复于:2005-03-13 23:06:23 |
[quote:92da70ae93="wingger"] "tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.111.1.116 flowid 1:20 " 中就是说:凡是访问目标为dst 192.111.1.116的都限制在80Kbit. 本来的想法是限制通过互联网疯狂下载的机器.但内网中其他网段的机器访问该机器时是否也受到限制了,要测试一下 [/quote:92da70ae93] 测试过了 不影响其他人的带宽使用 |
wingger 回复于:2005-03-13 23:14:12 |
[quote:39c8885c73="hrcxf"] 测试过了 不影响其他人的带宽使用[/quote:39c8885c73] [quote:39c8885c73]能实现一个分类将1000个用户都分成如100K/ser,而不是只能对一个IP或一个段,怎么做??[/quote:39c8885c73] hrcxf兄,帮忙: 按理,用u32的match ip应该可以做到吧,我没有环境,你能不能测试一下 |
KindGeorge 回复于:2005-03-15 09:10:22 |
hrcxf 兄,既然你有这个环境,帮忙测试考虑这种情况,把:"tc qdisc add dev eth0 root handle 1: htb default 10 " tc class add dev eth0 parent 1: classid 1:1 htb rate 10kbit burst 15k tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10kbit burst 15k tc class add dev eth0 parent 1:1 classid 1:20 htb rate 80Kbit ceil 80Kbit burst 15k 上面default 10 在下面的通道中定义为很小的10K带宽, 那么看看网络是否有延时感觉出来. 因为假如你默认的是10M的带宽,这是比较高速的,很难感觉是否有影响. 内网互拷贝是否有慢的感觉. 假如测试是有慢的感觉出来后,就说明你设置的eth0的控制是对网络有影响的.如果我们的网络是100M的连接,你设置为10M,就浪费了点啦 |
hrcxf 回复于:2005-03-16 10:17:42 |
[quote:7912123bab="wingger"] 能实现一个分类将1000个用户都分成如100K/ser,而不是只能对一个IP或一个段,怎么做??[/quote:7912123bab] 我能想到的只能写脚本实现。 |