• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

频宽控管

发布: 2007-7-04 12:06 | 作者: admin | 来源:  网友评论 | 查看: 17次 | 进入软件测试论坛讨论

领测软件测试网
  作者: 阿忠
  
  
  依照大哥所翻译的文章内容来看,cbq是适合正式的ip不能经过NAT的
  
  有NAT的服务器是不能兼做CBQ 频宽控管。
  
  IN<--->ETH0--LINUX(防火墙)---ETH1<----->客户端(正式的IP)
  
  而经过设定频宽控管后如(上传):
  如下图
  IN<---ETH0(队列)--LINUX(防火墙)---ETH1(队列)<-----客户端(正式的IP)
  所以抓取以封包的程序
  
  如:tc filter add dev eth0 parent 20:0 protocol ip prio 100 u32 \
  match ip src 150.151.23.24 flowid 20:100
  
  如封包经过防火墙到达队列时要比对来源ip match ip src
  就可将比对到的封包颉取出来,送入20:100的队列当中
  
  而经过设定频宽控管后如(下传):
  如下图
  IN--->ETH0(队列)--LINUX(防火墙)---ETH1(队列)----->客户端(正式的IP)
  所以抓取以封包的程序
  
  如:tc filter add dev eth1 parent 10:0 protocol ip prio 100 u32 \
  match ip src 150.151.23.24 flowid 10:100
  
  如封包经过防火墙到达队列时要比对来源ip match ip dst
  就可将比对到的封包颉取出来,送入20:100的队列当中
  
  所以频宽控管只能设在路由器(route)无法兼做伪装。
  
  ----------------如要兼做(NAT)伪装--------------------------------------
  而经过设定频宽控管后如(上传):
  动机:
  我的做法是:既然使用u32分类器来比对上传的ip封包而受制
  于封包伪装的动作比u32分类器比对ip还快一步执行的话。
  那就不要用这一个ip比对方式换一个
  
  既然受制防火墙(nat)那就用防火墙来比对来源ip封包 FW
  依照大哥所翻的文章第11.1项 FW 分类器
  iptables -I PREROUTING -t mangle -p tcp -d HostA \
  -j MARK --set-mark 1
  
  tc filter add dev eth0 protocol ip parent 1:0 prio 1 \
  handle 1 fw classid 1:1
  来设定其测试结果控频宽功能照我们所设定的k数在上传
  
  底下是以u32来比对区块图
  如下图
  IN<---ETH0(队列)--LINUX(防火墙NAT)---ETH1(队列)<-----客户端(虚凝IP)
  所以抓取以封包的程序
  
  如:tc filter add dev eth0 parent 20:0 protocol ip prio 100 u32 \
  match ip src 192.168.1.50 flowid 20:100
  
  如封包经过防火墙到达队列时要比对来源ip match ip src
  就可将比对到的封包颉取出来,送入20:100的队列当中
  但它是无法抓取到192.168.1.50的IP封包的只会从ROOT伫类通过而无法转交下层的伫
  类。
  因为封包巳经先伪装后再经过伫类程序。
  
  ***我有将来源ip192.168.1.50换为match ip src 211.***.***.37 (eth0的正式ip)
  就可颉取到封包送到root伫类而转交到20:100伫类当中
  *****所以它所抓取到的封包是经过伪装后的封包
  
  而经过设定频宽控管后如(下传):
  如下图
  IN--->ETH0(队列)--LINUX(防火墙)---ETH1(队列)----->客户端(正式的IP)
  所以抓取以封包的程序
  
  如:tc filter add dev eth1 parent 10:0 protocol ip prio 100 u32 \
  match ip dst 192.168.1.50 flowid 10:100
  
  如封包经过防火墙到达队列时要比对来源ip match ip dst
  就可将比对到的封包颉取出来,送入20:100的队列当中
  *****这部份:就没有问题一切正常受频宽控制中
  
  以下的例子是在我的计算机上所执行当中
  欢迎大哥收入巧心得中
  还希望大哥有空的话,多多翻些原文的文章,给我们这些不识英文的小子,能有一窥
  linux领域的管道。谢谢
  
  #!/bin/bash
  # unded 叙述拿掉那么该类别就能够借取其它类别的频宽来用。
  # eth0 为上传
  # eth1 为下传
  
  #下例为上传:宣告队列戒律
  tc qdisc add dev eth0 root handle 10: cbq bandwidth 64Kbit avpkt 1000
  
  #宣告顶层的类别为: 10:0
  tc class add dev eth0 parent 10:0 classid 10:1 cbq bandwidth 64Kbit rate
  512Kbit allot 1514 weight 3Kbit prio 8 maxburst 20 avpkt 1000
  
  #宣告客户类别,及其频宽大小 id:为10:300
  # 忠的上传频宽
  tc class add dev eth0 parent 10:1 classid 10:300 cbq bandwidth 64Kbit rate
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 滋的上传频宽
  tc class add dev eth0 parent 10:1 classid 10:100 cbq bandwidth 64Kbit rate
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 修的上传频宽
  tc class add dev eth0 parent 10:1 classid 10:110 cbq bandwidth 64Kbit rate
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 雨仰的上传频宽
  tc class add dev eth0 parent 10:1 classid 10:120 cbq bandwidth 64Kbit rate
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 雪的上传频宽
  tc class add dev eth0 parent 10:1 classid 10:130 cbq bandwidth 64Kbit rate
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 阿宾的上传频宽
  tc class add dev eth0 parent 10:1 classid 10:140 cbq bandwidth 64Kbit rate
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 张太的上传频宽
  tc class add dev eth0 parent 10:1 classid 10:150 cbq bandwidth 64Kbit rate
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 煌的上传频宽
  tc class add dev eth0 parent 10:1 classid 10:160 cbq bandwidth 64Kbit rate
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 婷的上传频宽
  tc class add dev eth0 parent 10:1 classid 10:180 cbq bandwidth 64Kbit rate
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 裕的上传频宽
  tc class add dev eth0 parent 10:1 classid 10:190 cbq bandwidth 64Kbit rate
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 邮件主机的上传频宽
  tc class add dev eth0 parent 10:1 classid 10:200 cbq bandwidth 64Kbit rate
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  #-------------------------------------------------------------------------
  
  # 宣告管理队列
  tc qdisc add dev eth0 parent 10:300 sfq quantum 1514b perturb 15
  tc qdisc add dev eth0 parent 10:100 sfq quantum 1514b perturb 15
  tc qdisc add dev eth0 parent 10:110 sfq quantum 1514b perturb 15
  tc qdisc add dev eth0 parent 10:120 sfq quantum 1514b perturb 15
  tc qdisc add dev eth0 parent 10:130 sfq quantum 1514b perturb 15
  tc qdisc add dev eth0 parent 10:140 sfq quantum 1514b perturb 15
  tc qdisc add dev eth0 parent 10:150 sfq quantum 1514b perturb 15
  tc qdisc add dev eth0 parent 10:160 sfq quantum 1514b perturb 15
  tc qdisc add dev eth0 parent 10:180 sfq quantum 1514b perturb 15
  tc qdisc add dev eth0 parent 10:190 sfq quantum 1514b perturb 15
  tc qdisc add dev eth0 parent 10:200 sfq quantum 1514b perturb 15
  
  #-----------------------------------------------------------------------
  
  # 向核心解释什么样的封包属于什么样别:
  # 忠的封包设定及颉取
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 30 fw classid
  10:300
  
  iptables -I PREROUTING -t mangle -s 192.168.2.50 -j MARK --set-mark 30
  
  # 滋的封包设定及颉取
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 1 fw classid
  10:100
  
  iptables -I PREROUTING -t mangle -s 192.168.1.10 -j MARK --set-mark 1
  
  # 修的封包设定及颉取
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 2 fw classid
  10:110
  
  iptables -I PREROUTING -t mangle -s 192.168.1.11 -j MARK --set-mark 2
  
  # 雨仰的封包设定及颉取
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 3 fw classid
  10:120
  
  iptables -I PREROUTING -t mangle -s 192.168.1.12 -j MARK --set-mark 3
  
  # 雪的封包设定及颉取
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 4 fw classid
  10:130
  
  iptables -I PREROUTING -t mangle -s 192.168.1.13 -j MARK --set-mark 4
  
  # 阿宾的封包设定及颉取
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 5 fw classid
  10:140
  
  iptables -I PREROUTING -t mangle -s 192.168.1.14 -j MARK --set-mark 5
  
  # 张太的封包设定及颉取
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 6 fw classid
  10:150
  
  iptables -I PREROUTING -t mangle -s 192.168.1.15 -j MARK --set-mark 6
  
  # 煌的封包设定及颉取
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 7 fw classid
  10:160
  
  iptables -I PREROUTING -t mangle -s 192.168.1.16 -j MARK --set-mark 7
  
  # 婷的封包设定及颉取
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 8 fw classid
  10:180
  
  iptables -I PREROUTING -t mangle -s 192.168.1.18 -j MARK --set-mark 8
  
  # 裕的封包设定及颉取
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 9 fw classid
  10:190
  
  iptables -I PREROUTING -t mangle -s 192.168.1.19 -j MARK --set-mark 9
  
  # 邮件主机的封包设定及颉取
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle10 fw classid
  10:200
  
  iptables -I PREROUTING -t mangle -s 192.168.1.60 -j MARK --set-mark 10
  
  #--------------------------------------------------------------------
  # 下载部份:eth1
  
  # unded 叙述拿掉那么该类别就能够借取其它类别的频宽来用。
  
  #下例为下传:宣告队列戒律
  tc qdisc add dev eth1 root handle 20: cbq bandwidth 512Kbit avpkt 1000
  
  #宣告顶层的类别为: 20:0
  tc class add dev eth1 parent 20:0 classid 20:1 cbq bandwidth 512Kbit rate
  512Kbit allot 1514 weight 3Kbit prio 8 maxburst 20 avpkt 1000
  
  #宣告客户类别,及其频宽大小 id:为10:100
  # 忠的下传频宽
  tc class add dev eth1 parent 20:1 classid 20:300 cbq bandwidth 512Kbit rate
  80Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 滋的下传频宽
  tc class add dev eth1 parent 20:1 classid 20:100 cbq bandwidth 512Kbit rate
  80Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 修的下传频宽
  tc class add dev eth1 parent 20:1 classid 20:110 cbq bandwidth 512Kbit rate
  80Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 雨仰的下传频宽
  tc class add dev eth1 parent 20:1 classid 20:120 cbq bandwidth 512Kbit rate
  80Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 雪的下传频宽
  tc class add dev eth1 parent 20:1 classid 20:130 cbq bandwidth 512Kbit rate
  80Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 阿宾的下传频宽
  tc class add dev eth1 parent 20:1 classid 20:140 cbq bandwidth 512Kbit rate
  80Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 张太的下传频宽
  tc class add dev eth1 parent 20:1 classid 20:150 cbq bandwidth 512Kbit rate
  80Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 煌的下传频宽
  tc class add dev eth1 parent 20:1 classid 20:160 cbq bandwidth 512Kbit rate
  80Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 婷的下传频宽
  tc class add dev eth1 parent 20:1 classid 20:180 cbq bandwidth 512Kbit rate
  80Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 裕的下传频宽
  tc class add dev eth1 parent 20:1 classid 20:190 cbq bandwidth 512Kbit rate
  80Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 邮件主机的下传频宽
  tc class add dev eth1 parent 20:1 classid 20:200 cbq bandwidth 512Kbit rate
  80Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
  
  # 宣告管理队列
  tc qdisc add dev eth1 parent 20:100 sfq quantum 1514b perturb 15
  tc qdisc add dev eth1 parent 20:110 sfq quantum 1514b perturb 15
  tc qdisc add dev eth1 parent 20:120 sfq quantum 1514b perturb 15
  tc qdisc add dev eth1 parent 20:130 sfq quantum 1514b perturb 15
  tc qdisc add dev eth1 parent 20:140 sfq quantum 1514b perturb 15
  tc qdisc add dev eth1 parent 20:150 sfq quantum 1514b perturb 15
  tc qdisc add dev eth1 parent 20:160 sfq quantum 1514b perturb 15
  tc qdisc add dev eth1 parent 20:180 sfq quantum 1514b perturb 15
  tc qdisc add dev eth1 parent 20:190 sfq quantum 1514b perturb 15
  tc qdisc add dev eth1 parent 20:200 sfq quantum 1514b perturb 15
  tc qdisc add dev eth1 parent 20:300 sfq quantum 1514b perturb 15
  
  # 向核心解释什么样的封包属于什么样别:
  tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip dst
  192.168.1.50 flowid 20:300
  
  tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip dst
  192.168.1.10 flowid 20:100
  
  tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip dst
  192.168.1.11 flowid 10:110
  
  tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip dst
  192.168.1.12 flowid 20:120
  
  tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip dst
  192.168.1.13 flowid 20:130
  
  tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip dst
  192.168.1.14 flowid 20:140
  
  tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip dst
  192.168.1.15 flowid 20:150
  
  tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip dst
  192.168.1.16 flowid 20:160
  
  tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip dst
  192.168.1.18 flowid 10:180
  
  tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip dst
  192.168.1.19 flowid 10:190
  
  tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip dst
  192.168.1.60 flowid 20:200
  
  对了小弟还有二个问题想请教
  
  1. iptables -I PREROUTING -t mangle -p tcp -d HostA \
  -j MARK --set-mark 1
  能否解释上面这个指令
  2. 如果我用iptables -t nat -A POSTROUTING -o eth0 -s
  192.168.1.0/24 -j MASQUERADE
  来引导一群计算机上网的话。
  我只开放10台ip从192.168.1.1--192.168.11的话不让他们使用
  我们规定的ip,以外的ip全档下来的话
  iptables的要怎么下呢?
  如要一个ip配合一个mac位置其于全文件下来又如何下呢
  谢谢大哥指导
  
  
  回复本文
  Re: 达成频宽控管功能了!!!!!
  作者: netman (---.seed.net.tw)
  日期: 01/09/03 20:59
  
  太好了﹗恭喜﹗我可以将文章收录进‘技巧心得’里面吗﹖还是您可以另外提供一个
  HTML 版本给我﹖
  
  至于您的问题﹕
  
  1) 就是为封包加上一个为 1 的卷标而已﹐这个卷标可以共其它封包处理程序﹐如 cbq
  使用。
  
  2) 我想您要逐行来写了﹐或是玩玩 subnet 聚集﹕
  第一行是关于 192.168.1.0/29 的﹐
  第二行是关于 192.168.1.9 的﹐
  第三行是关于 192.168.1.10 的﹐
  第四行数关于 192.168.1.11 的。
  
  不过﹐说老实话﹐我没这样试过哦﹐如果我来设﹐就乖乖的输入 11 行就是了。
  
  至于 MAC 地址﹐参考前面的文章吧﹐好象有提到过。
  
  

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网