linux带宽管理系统 tc 配置(QOS)
2010-05-07 15:07
627 查看
Linux 包含复杂的带宽管理系统 TC (流量控制,Traffic Control)。该系统支持分类、优先、共享和输入、输出流量限制等。这套系统可以与专用的带宽管理系统相媲美。
tc 包括三个基本的构成块: 队列规定qdisc(queueing discipline )、类(class)和分类器(Classifiers).流量的处理也是由这三种对象控制的。
QDISC(队列规则)
QDisc(队列规则)是queueing discipline的简写,队列规定可以看作设备的流量/数据包管理器。队列规定内封装了其他两个主要TC组件(类和分类器),控制数据的流动。
它是理解流量控制(traffic control)的基础。无论何时,内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的qdisc(排队规则)把数据包加入队列。然后,内核会尽可能多地从qdisc里面取出数据包,把它们交给网络适配器驱动模块。
最简单的QDisc是pfifo它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。不过,它会保存网络接口一时无法处理的数据包。
队列规则包括FIFO(先进先出),RED(随机早期探测),SFQ(随机公平队列)和令牌桶(Token Bucket),类基队列(CBQ),CBQ 是一种超级队列,即它能够包含其它队列(甚至其它CBQ)。
CLASS(类)
某些QDisc(排队规则)可以包含一些类别,不同的类别中可以包含更深入的QDisc(排队规则),通过这些细分的QDisc还可以为进入的队列的数据包排队。通过设置各种类别数据包的离队次序,QDisc可以为设置网络数据流量的优先级。
FILTER(过滤器)
filter(过滤器)用于为数据包分类,决定它们按照何种QDisc进入队列。无论何时数据包进入一个划分子类的类别中,都需要进行分类。分类的方法可以有多种,使用fileter(过滤器)就是其中之一。使用filter(过滤器)分类时,内核会调用附属于这个类(class)的??
目前,TC可以使用的过滤器有:fwmark分类器,u32分类器,基于路由的分类器和RSVP分类器(分别用于IPV6、IPV4)等;其中,fwmark分类器允许我们使用 Linux netfilter 代码选择流量,而u32分类器允许我们选择基于 ANY 头的流量 .
需要注意的是,filter(过滤器)是在QDisc内部,它们不能作为主体。
实例
一、下载
下载限制单个IP(eth0内网卡)
tc qdisc add dev eth0 root handle 1: htb r2q 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 3000kbit burst 10k
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.111.168 flowid 1:1
就可以限制192.168.111.168的下载速度为300kB
下载整段IP
tc qdisc add dev eth0 root handle 1: htb r2q 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 3000kbit burst 10k
tc filter add dev eth0 parent 1: protocol ip prio 16 u32
match ip dst 192.168.111.0/24 flowid 1:1
就可以限制192.168.111.0 到255 的带宽为3000k了,实际下载速度为200k左右。
这种情况下,这个网段所有机器共享这200k的带宽。
还可以加入一个sfq(随机公平队列)
tc qdisc add dev eth0 root handle 1: htb r2q 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 3000kbit burst 10k
tc qdisc add dev eth0 parent 1:1 handle 10: sfq perturb 10
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.111.168 flowid 1:1
红色的是加入的,他可以防止一个段内的一个ip占用整个带宽。
二、上传
上传和下载一样,只是把eth0改成eth1,改到外网卡上
三、删除tc规则
tc qdisc del dev eth0 root
只把根规则删除就行了
实际中一般写两个脚本(以添加单个人的IP为例)
1.添加tc规则的脚本
###########第一个人的IP下载################
tc qdisc add dev eth0 root handle 1: htb r2q 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 3000kbit burst 10k
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.254.211 flowid 1:1
########第二个人的IP,第二个人只需要这一行就行,前两行是设置规则和类的####
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.254.5 flowid 1:1
###########第一个人的IP上传################
tc qdisc add dev eth1 root handle 1: htb r2q 1
tc class add dev eth1 parent 1: classid 1:1 htb rate 3000kbit burst 10k
tc filter add dev eth1 parent 1: protocol ip prio 16 u32 match ip dst 192.168.254.211 flowid 1:1
########第二个人的IP,第二个人只需要这一行就行,前两行是设置规则和类的####
tc filter add dev eth1 parent 1: protocol ip prio 16 u32 match ip dst 192.168.254.5 flowid 1:1
再有人的IP可以继续添加
2.删除 tc规则的脚本
tc qdisc del dev eth0 root 这是内网卡,下载的
tc qdisc del dev eth1 root 外网卡,上传的
tc 包括三个基本的构成块: 队列规定qdisc(queueing discipline )、类(class)和分类器(Classifiers).流量的处理也是由这三种对象控制的。
QDISC(队列规则)
QDisc(队列规则)是queueing discipline的简写,队列规定可以看作设备的流量/数据包管理器。队列规定内封装了其他两个主要TC组件(类和分类器),控制数据的流动。
它是理解流量控制(traffic control)的基础。无论何时,内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的qdisc(排队规则)把数据包加入队列。然后,内核会尽可能多地从qdisc里面取出数据包,把它们交给网络适配器驱动模块。
最简单的QDisc是pfifo它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。不过,它会保存网络接口一时无法处理的数据包。
队列规则包括FIFO(先进先出),RED(随机早期探测),SFQ(随机公平队列)和令牌桶(Token Bucket),类基队列(CBQ),CBQ 是一种超级队列,即它能够包含其它队列(甚至其它CBQ)。
CLASS(类)
某些QDisc(排队规则)可以包含一些类别,不同的类别中可以包含更深入的QDisc(排队规则),通过这些细分的QDisc还可以为进入的队列的数据包排队。通过设置各种类别数据包的离队次序,QDisc可以为设置网络数据流量的优先级。
FILTER(过滤器)
filter(过滤器)用于为数据包分类,决定它们按照何种QDisc进入队列。无论何时数据包进入一个划分子类的类别中,都需要进行分类。分类的方法可以有多种,使用fileter(过滤器)就是其中之一。使用filter(过滤器)分类时,内核会调用附属于这个类(class)的??
目前,TC可以使用的过滤器有:fwmark分类器,u32分类器,基于路由的分类器和RSVP分类器(分别用于IPV6、IPV4)等;其中,fwmark分类器允许我们使用 Linux netfilter 代码选择流量,而u32分类器允许我们选择基于 ANY 头的流量 .
需要注意的是,filter(过滤器)是在QDisc内部,它们不能作为主体。
实例
一、下载
下载限制单个IP(eth0内网卡)
tc qdisc add dev eth0 root handle 1: htb r2q 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 3000kbit burst 10k
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.111.168 flowid 1:1
就可以限制192.168.111.168的下载速度为300kB
下载整段IP
tc qdisc add dev eth0 root handle 1: htb r2q 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 3000kbit burst 10k
tc filter add dev eth0 parent 1: protocol ip prio 16 u32
match ip dst 192.168.111.0/24 flowid 1:1
就可以限制192.168.111.0 到255 的带宽为3000k了,实际下载速度为200k左右。
这种情况下,这个网段所有机器共享这200k的带宽。
还可以加入一个sfq(随机公平队列)
tc qdisc add dev eth0 root handle 1: htb r2q 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 3000kbit burst 10k
tc qdisc add dev eth0 parent 1:1 handle 10: sfq perturb 10
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.111.168 flowid 1:1
红色的是加入的,他可以防止一个段内的一个ip占用整个带宽。
二、上传
上传和下载一样,只是把eth0改成eth1,改到外网卡上
三、删除tc规则
tc qdisc del dev eth0 root
只把根规则删除就行了
实际中一般写两个脚本(以添加单个人的IP为例)
1.添加tc规则的脚本
###########第一个人的IP下载################
tc qdisc add dev eth0 root handle 1: htb r2q 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 3000kbit burst 10k
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.254.211 flowid 1:1
########第二个人的IP,第二个人只需要这一行就行,前两行是设置规则和类的####
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.254.5 flowid 1:1
###########第一个人的IP上传################
tc qdisc add dev eth1 root handle 1: htb r2q 1
tc class add dev eth1 parent 1: classid 1:1 htb rate 3000kbit burst 10k
tc filter add dev eth1 parent 1: protocol ip prio 16 u32 match ip dst 192.168.254.211 flowid 1:1
########第二个人的IP,第二个人只需要这一行就行,前两行是设置规则和类的####
tc filter add dev eth1 parent 1: protocol ip prio 16 u32 match ip dst 192.168.254.5 flowid 1:1
再有人的IP可以继续添加
2.删除 tc规则的脚本
tc qdisc del dev eth0 root 这是内网卡,下载的
tc qdisc del dev eth1 root 外网卡,上传的
相关文章推荐
- Debian Linux 系统配置与管理 第8章 读书笔记
- Linux系统管理实践(8):网络配置 (续)
- linux学习之系统管理、网络配置、软件安装
- Linux_系统管理_网络配置_命令行配置网络
- Linux grep工具应用实例 精简配置文件 从系统管理命令输出中查找
- linux系统管理笔记之十--例行性任务的配置
- linux系统 网络服务管理配置
- Linux系统管理-(11)-网络配置ifcfg家族
- Linux基本配置和管理 4 ---- Linux系统启动详解
- Linux系统网络配置与管理
- Linux系统基础-管理之Linux 目录配置标准:FHS:FileSystem Hierarchy Standard
- 如何快速安装Webmin(linux系统web管理配置工具)
- Linux系统管理实践(12):Syslog系统日志配置
- Linux系统管理_网络地址配置-Redhat Enterprise 5.9 推荐
- Linux系统管理实践(8):网络配置 (续)
- Linux系统文件目录配置与管理
- 【Linux系统和服务管理】MySQL服务器安装与配置(一)
- linux高级文件系统管理概述:处理交换分区、设置文件系统配额、配置raid和逻辑卷
- Linux系统管理实践(9):DHCP服务器配置
- Linux基本配置和管理 4 ---- Linux系统启动详解