快速业务通道

Linux流量控制中的HTB队列创建与过滤

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-20
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号