使用iptables和tc来进行限速
来源:互联网 发布:淘宝个人第一大卖家 编辑:程序博客网 时间:2024/05/29 03:14
首先在eth0的qdiscA,qdiscA控制通过本机到外网的速度,因此是用来控制服务器流出速度的
#tc qdisc add dev eth1 root handle 1:htb default 1
tc 队列 添加 设置接口 root为最上层 句柄(做标记用): 标记类型 默认使用1的class
解释如下:无论是队列,还是class和filter都有ID之类的标志符,一般都有parent(父,上层的),注意ID具有接口本地性,不同的网络接口可以有相同的ID.对于这里因为qdisc在顶部,所以parent无,用‘root’字样来标识,ID用1:来标志
default 1表示当某个ip流不满足任何已设定的filter规则时,将自动归入class 1中
#tc class add dev eth0 parent 1:0 classid1:30 htb rate 2mbit ceil 4mbit prio 2
(注:以上就是我们控制输出的规则:为eth0 下的root队列1:0 添加分类并命名为 1:30 类型为htb 速度为2M,最大可以到4M, 优先级为2)
rate: 是一个类保证得到的带宽值。如果有不只一个类,请保证所有子类总和是小于或等于父类。
prio:用来指示借用带宽时的竞争力,prio越小,优先级越高,竞争力越强。
ceil: ceil是一个类最大能得到的带宽值。
接着针对不同的应用在各root class下设置不同的类,如下。
#tc class add dev eth0 parent 1:30 classid 1:31 htb rate 0.5mbit ceil 2mbit prio 3
(在1:30分类下面 创建更细的分类1:31 类型为htb 规定速度0.5mbit 最高2mbit 优先级为3)
为了不使一个大的数据包传递过程(会话)永占带宽,在1:31下面添加 随即公平队列sfq.用于均衡排队的所有数据
#tc qdisc add dev eth0 parent 1:31 handle 31:sfq perturb 10
(以上是在子分类1:30下面继续添加名称为31:的队列。模式为sfq,这是一个循环均衡排队数据包的队列,它不偏向任何数据队列,循环抓取各个队列的数据包。这个循环的时间间隔是10秒钟一次,我们可以任意调节这个时间参数,比如2、4、5、6、8秒......只要不过与频繁与迟钝就好)
接着添加过滤器
#tc filter add dev eth0 parent 1:protocol ip prio 31 handle 31 fw flowid 1:31添加“过滤分类规则”到root qdisc处(也就是1:0),协议类型为ip 优先级为31。给这个队列起名31 采用的是fw(防火墙筛选)规则,一旦符合筛选,则进入1:31分类。(还记得1:31分类么?就是刚刚在上面添加的,限速0.5M的那个)
用iptable打标,也可以使用u32之类
#iptables -t mangle -I FORWARD -i !eth1 -p tcp –sport 80 -s 192.168.1.33 –j MARK –set-mark 31
(使用iptables命令,对于传递过程中不是来自eth1的ip 且来源地址为192.168.1.33 来源ip为80 的数据全部做上31标记。用以实现此数据经过以上过滤器时被分配到1:31这个0.5m的限速中)
tc qdisc add dev eth0 root handle 2: htb default 10
tc class add dev eth0 parent 2:0 classid 2:1 htb rate 100Mbit
tc class add dev eth0 parent 2:1 classid 2:10 htb rate 100Mbit ceil 100Mbit prio 3
tc qdisc add dev eth0 parent 2:10 handle 100: sfq perturb 10
tc class add dev eth0 parent 2:1 classid 2:11 htb rate 1Mbit ceil 1Mbit prio 2
tc qdisc add dev eth0 parent 2:11 handle 110: sfq perturb 10
tc filter add dev eth0 parent 2:0 protocol ip prio 4 handle 11 fw classid 2:11
/opt/iptables/sbin/iptables -t mangle -A BANDWIDTH_UP_eth0 -s 1.2.3.4 -m time --timestart 0:00:00 --timestop 10:00:00 -j MARK --set-mark 11
- 使用iptables和tc来进行限速
- 关于iptables和tc的限速理解
- 关于 iptables 和 tc 的限速理解
- 关于 iptables 和 tc 的限速理解
- ipp2p中使用tc+iptables限速(脚本)
- ipp2p中使用tc+iptables限速(脚本)
- iptables中用hashlimit来限速
- Iptables+tc 网吧每IP 限速脚本
- linux下使用tc做流量限速
- iptables和tc的使用及开发实例总结
- Iptables和TC数据包流程图
- tc命令——Linux基于IP进行流量限速
- iptables限速
- 嵌入式 使用iptables限速控制带宽流量
- Linux TC 流量限速
- tc与限速实例
- TC限速例子
- tc 限速脚本实例
- ARM处理器启动流程及bootlader架构设计
- leetcode -- 利用python统计string中的频率问题
- ScrollView中内容自动滑动至底部
- Struts问题: IllegalArgumentException occurred while calling setter of com.zzuli.
- 配置hive1.2.1,并更改元数据库为mysql
- 使用iptables和tc来进行限速
- Web服务器学习(一)
- fastcgi_finish_request
- 从零开始快速搭建Android应用自动化测试(二)
- 基于Zookeeper的服务注册与发现
- Mybatis3源码分析(06)-加载Configuration-缓存配置加载
- QQ公众号如何获取接口调用凭据
- 数据库(2):配置数据的缓存建立方法,建立通用表模型
- base64转码