TClinux下流量控制工具详细说明及应用实例.doc
14页linux下流量控制工具 TC详细说明及应用实例目录一、TC的安装 1二、TC原理介绍 1三、TC规那么 23.1、 流量控制方式 23.2、 流量控制处理对象 23.3、 操作原理 33.4、 命名规那么 43.5、 单位 4四、TC命令 5五、具体操作 55.1、 根本实现步骤 65.2、 环境模拟实例 65.2.1. 建立队列 65.2.2. 建立分类 65.2.3. 建立过滤器 75.2.4. 建立路由 75.2.5. 监视 85.2.6. 维护 10六、dms 小组应用场景一个实例 11参考资料 12一、TC的安装TC是linux自带的模块,一般情况下不需要另行安装,可以用 man tc查看tc相关命令细节,tc要求内核2.4.18以 上注意,64位机器上,先执行下面命令: ln -s /usr/lib64/tc/ /usr/lib/tc二、TC原理介绍Linux操作系统中的流量控制器 TC 〔Traffic Control 〕用于Linux内核的流量控制,它利用队列规定建立处理数 据包的队列,并定义队列中的数据包被发送的方式, 从而实现对流量的控制TC模块实现流量控制功能使用的队列规定分为两类,一类是无类队列规定, 另一类是分类队列规定。
无类队列规定相对简单,而分类队列规定那么引出了分类和过滤器等概念,使其流量控制功能增强无类队列规定是对进入网络设备〔网卡〕的数据流不加区分统一对待的队列规定使用无类队列规定形成的队列能 够接受数据包以及重新编排、 延迟或丢弃数据包这类队列规定形成的队列可以对整个网络设备 〔网卡〕的流量进行整形,但不能细分各种情况, 常用的无类队列规定主要有 pfifo _fast 〔 先进现出〕、TBF 〔令牌桶过滤器〕、SFQ〔随机公平队列〕、ID 〔前向随机丢包〕等等这类队列规定使用的流量整形手段主要 是排序、 限速和丢包分类队列规定是对进入网络设备的数据包根据不同的需求以分类的方式区分对待的队列规定 数据包进入一个分类的队列后,它就需要被送到某一个类中, 也就是说需要对数据包做分类处理对数据包进行分类的工具是过滤器,过滤器会返回一个决定,队列规定就根据这个决定把数据包送入相应的类进行排队每个子类都可 以再次使用它们的过滤器进行进一步的分类直到不需要进一步分类时, 数据包才进入该类包含的队列排队 除了能够包含其它队列规定之外, 绝大多数分类的队列规定还能够对流量进行整形 这对于需要同时进行调度〔如使用SFQ 〕和流量控制的场合非常有用。
Linux流量控制的根本原理如下列图所示mpir - I叫2 ■〞呼出一 ■ Feb帕 X龌M 、〔WJ*电函*. PWWng L 39 FLnyJt 询 i: toriiolRocenhg X Mm*,腼接收包从输入接口〔 Input Interface 〕进来后,经过流量限制〔Ingress Policing 〕丢弃不符合规定的数据包, 由输入多路分配器〔Input De-Multiplexing 〕进行判断选择:如果接收包的目的是本主机,那么将该包送给上层处理; 否那么需要进行转发,将接收包交到转发块〔 Forwarding Block 〕处理转发块同时也接收本主机上层〔 TCP、UDP等〕 产生的包转发块通过查看路由表,决定所处理包的下一跳然后,对包进行排列以便将它们传送到输出接口〔 OutputInterface 〕一般我们只能限制网卡 发送的数据包,不能限制网卡接收的数据包 ,所以我们可以通过改变发送次序来控制传输速率Linux流量控制主要是在 输出接口排列 时进行处理和实现的三、TC规那么3.1、 流量控制方式流量控制包括以下几种方式:SHAPING〔限制〕当流量被限制,它的传输速率就被控制在某个值以下。
限制值可以大大小于有效带宽,这样可以平滑突发数据流量,使网络更为稳定shaping 〔限制〕只适用于向外的流量SCHEDULING〔 调度〕通过调度数据包的传输,可以在带宽范围内,按照优先级分配带宽 SCHEDULING〔调度〕也只适于向外的流POLICING〔策略〕SHAPING 用于处理向外的流量,而 POLICIING〔策略〕用于处理接收到的数据DROPPING〔丢弃〕如果流量超过某个设定的带宽,就丢弃数据包,不管是向内还是向外3.2、 流量控制处理对象流量的处理由三种对象控制,它们是: qdisc〔排队规那么〕、class〔类别〕和filter〔 过滤器〕QDisc〔排队规那么〕是queueing discipline 的简写,它是理解流量控制 〔traffic control〕 的根底无论何时, 内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的 qdisc〔排队规那么〕把数据包参加队列然后,内核会尽可能多地从 qdisc里面取出数据包,把它们交给网络适配器驱动模块 最简单的QDisc是pfifo它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。
不过,它会保存网络接口一时无法处理 的数据包QDISC 的分为 CLASSLESS QDisc 和 CLASSFUL QDISC 类另U如下:〔1 〕、 CLASSLESS QDisc〔 不可分类 QDisc〕1>无类别QDISC 包括:[p[b]fifo ,使用最简单的qdisc ,纯粹的先进先出只有一个参数:limit ,用来设置队列的长度,pfifo 是以数据包的个数为单位;bfifo是以字节数为单位pfifo_fast ,在编译内核时,如果翻开了高级路由器 〔Advanced Router〕 编译选项,pfifo_fast 就是系统的标准QDISC它的队列包括三个波段〔band〕在每个波段里面,使用先进先出规那么而三个波段〔band〕 的优先级也不相同,band 0的优先级最高,band 2的最低如果band里面有数据包,系统就不会处理band 1里面的数据包,band 1和band 2之间也是一样数据包是按照效劳类型 〔Type of Service,TOS〕 被分配多三个波段〔band〕里面的red , red是Random Early Detection〔 随机早期探测〕的简写。
如果使用这种 QDISC ,当带宽的占用接近于规定的带宽时,系统会随机地丢弃一些数据包它非常适合高带宽应用sfq , sfq是Stochastic Fairness Queueing 的简写它按照会话 〔session-- 对应于每个 TCP连接或者UDP流〕为流量进行排序,然后循环发送每个会话的数据包tbf , tbf是Token Bucket Filter 的简写,适合于把流速降低到某个值2>无类别QDisc的配置如果没有可分类 QDisc ,不可分类QDisc只能附属于设备的根它们的用法如下:tc qdisc add dev DEV root QDISC QDISC- PARAMETERS要删除一个不可分类 QDisc ,需要使用如下命令:tc qdisc del dev DEV root一个网络接口上如果没有设置 QDisc , pfifo_fast 就作为缺省的QDisc〔2〕、CLASSFUL QDISC〔 分类 QDisc〕可分类QDISC包括:CBQ , CBQ是Class Based Queueing〔 基于类别排队〕的缩写它实现了一个丰富的连接共享类别结 构,既有限制〔shaping〕带宽的能力,也具有带宽优先级管理的能力。
带宽限制是通过计算连接的空闲时间完 成的空闲时间的计算标准是数据包离队事件的频率和下层连接 〔数据链路层〕的带宽HTB , HTB是Hierarchy Token Bucket 的缩写通过在实践根底上的改良,它实现了一个丰富的连接共享类别体系使用HTB可以很容易地保证每个类别的带宽, 虽然它也允许特定的类可以突破带宽上限, 占用别的类的带宽HTB可以通过TBF〔Token Bucket Filter〕 实现带宽限制,也能够划分类别的优先级PRIO , PRIO QDisc 不能限制带宽,因为属于不同类别的数据包是顺序离队的使用 PRIO QDisc 可以很容易对流量进行优先级管理,只有属于高优先级类别的数据包全部发送完毕,才会发送属于低优先级类别 的数据包为了方便管理,需要使用iptables 或者ipchains处理数据包的效劳类型〔Type Of Service,ToS〕 3.3、 操作原理类〔Class〕组成一个树,每个类都只有一个 父类,而一个类可以有多个 子类某些QDisc〔例如:CBQ和 HTB〕允许在运行时动态添加类,而其它的 QDisc〔例如:PRIO〕不允许动态建立类。
允许动态添加类的 QDisc可以有零个或者多个子类,由它们为数据包排队止匕外,每个类都有一个叶子 QDisc,默认情况下,这个叶子QDisc使用pfifo的方式排队,我们也可以使用其它类型的 QDisc代替这个默认的 QDisc 而且,这个叶子叶子QDisc有可以分类,不过每个子类只能有一个叶子 QDisc当一个数据包进入一个分类 QDisc ,它会被归入某个子类我们可以使用以下三种方式为数据包归类,不过不是所有的 QDisc都能够使用这三种方式如果过滤器附属于一个类,相关的指令就会对它们进行查询过滤器能够匹配数据包头所有的域,也可以匹配由ipchains 或者iptables 做的标记树的每个节点都可以有自己的过滤器,但是高层的过滤器也可以直接用于其子类如果数据包没有被成功归类,就会被排到这个类的叶子 QDisc的队中相关细节在各个 QDisc的手册页中3.4、 命名规那么所有的QDisc、类和过滤器都有IDID可以手工设置,也可以有内核自动分配 ID由一个主序列号和一个从序列号组成,两个数字用一个冒号分开QDISC , 一个QDisc会被分配一个主序列号,叫做句柄 〔handle〕,然后把从序列号作为类的命名空间。
句柄 采用象10: 一样的表达方式习惯上,需要为有子类的 QDisc显式地分配一个句柄类〔CLASS〕,在同一个QDisc里面的类分享这个 QDisc的主序列号,但是每个类都有自己的从序列号,叫做 类识别符〔classid〕类识别符只与父 QDisc有关,和父类无关类的命名习惯和 QDisc的相同过滤器〔FILTER〕,过滤器的ID有三局部,只有在对过滤器进行散列组织才会用到详情请参考 tc-filters 手册页3.5、 单位tc命令的所有参数都可以使用浮点数,可能会涉及到以下计数单位1〕、带宽或者流速单位:kbps 千字节/秒mbps 兆字节/秒kbit KBits /秒mbit MBits /秒bps或者一个无单位数字 字节数/秒2〕、数据的数量单位:kb或者k 千字节mb或者m 兆字节mbit 兆 bitkbit 千 bitb或者一个无单位数字 字节数3〕、时间的计量单位:s、sec或者secs 秒ms、msec 或者 msecs 分钟us、usec、usecs 或者一个无单位数字 微秒四、TC命令tc可以使用以下命令对 QDisc、类和过滤器进行操作:add ,在一个节点里参加一个 QDisc、类或者过滤器。
添加时,需要传递一个祖先作为参数,传。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


