Linux流量控制中的HTB队列创建与过滤
x不能相同, 比如2:1和2:2.
下面,将以HTB队列为主,结合需求来讲述TC的使用.假设eth0出口有100mbit/s的带宽, 分配给WWW 、E-mail和Telnet三种数据流量, 其中分配给WWW的带宽为40Mbit/s,分配给Email的带宽为40Mbit/s, 分配给Telnet的带宽为20Mbit/S. 需要注意的是, 在TC 中使用下列的缩写表示相应的带宽: ◆ Kbps kiIobytes per second, 即"千字节每秒 ; ◆ Mbps megabytes per second, 即"兆字节每秒 , ◆ Kbit kilobits per second,即"千比特每秒 ; ◆ Mbit megabits per second, 即"兆比特每秒 . 三、创建HTB队列 有关队列的TC命令的一般形式为: 1.#tc qdisc [add|change|replace|link] dev DEV [parent qdisk-id| root][handle qdisc-id] qdisc[qdisc specific parameters] ,需要为网卡eth0配置一个HTB队列,使用下列命令: 1.#tc qdisc add dev eth0 root handle 1:htb default 11 这里,命令中的"add 表示要添加,"dev eth0 表示要操作的网卡为eth0."root 表示为网卡eth0添加的是一个根队列."handle 1: 表示队列的句柄为1:."htb 表示要添加的队列为HTB队列.命令的"default 11 是htb特有的队列参数,意思是所有未分类的流量都将分配给类别1:11.
四、为根队列创建相应的类别 有关类别的TC 命令的一般形式为: 1.#tc class [add|change|replace] dev DEV parent qdisc-id [classid class-id] qdisc [qdisc specific parameters] 可以利用下面这三个命令为根队列1创建三个类别,分别是1:1 1、1:12和1:13,它们分别占用40、40和20mb[t的带宽. 1.#tc class add dev eth0 parent 1: classid 1:1 htb rate 40mbit ceil 40mbit 2.#tc class add dev eth0 parent 1: classid 1:12 htb rate 40mbit ceil 40mbit 3.#tc class add dev eth0 parent 1: cllassid 1:13 htb rate 20mbit ceil 20mbit 命令中,"parent 1:"表示类别的父亲为根队列1:."classid1:11"表示创建一个标识为1:11的类别,"rate 40mbit"表示系统 将为该类别确保带宽40mbit,"ceil 40mbit",表示该类别的最高可占用带宽为40mbit. 五、为各个类别设置过滤器 有关过滤器的TC 命令的一般形式为: 1.#tc filter [add|change|replace] dev DEV [parent qdisc-id |root] protocol protocol prio priority filtertype [filtertype specific parameters] flowid flow-id 需要将WWW、E-mail、Telnet三种流量分配到三个类别,即上述1:11、1:12和1:13,因此,需要创建三个过滤器,如下面的三个命令: 1.#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:11 2.#tc filter add dev eth0 prtocol ip parent 1:0 prio 1 u32 match ip dport 25 0xffff flowid 1:12 3.#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 23 oxffff flowid 1:13 这里,"protocol ip"表示该过滤器应该检查报文分组的协议字段."pr[o 1" 表示它们对报文处理的优先级是相同的,对于不同优先级的过滤器, 系统将按照从小到大的优先级. 顺序来执行过滤器, 对于相同的优先级,系统将按照命令的先后顺序执行.这几个过滤器还用到了u32选择器(命令中u32后面的部分)来匹配不同的数据流.以第一个命令为例,判断的是dport字段,如果该字段与Oxffff进行与操作的结果是8O,则"flowid 1:11" 表示将把该数据流分配给类别1:1 1.更加详细的有关TC的用法可以参考TC 的手册页. 六、复杂的实例 在上面的例子中, 三种数据流(www、Email、Telnet)之间是互相排斥的.当某个数据流的流量没 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |