TC流量控制学习文档_第1页
TC流量控制学习文档_第2页
TC流量控制学习文档_第3页
TC流量控制学习文档_第4页
TC流量控制学习文档_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE1页共SECTIONPAGES5页trafficcontrol(TC)学习文档目录26934第一章.概念 2119631.1Netem 25231第二章.原理 6266182.1TC 6105162.2简单的无类队列规则 85507第三章.实践应用 9概念Netem是linux2.6及以上内核版本提供的一个网络模拟功能模块。该功能模块可以用在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽,传输延迟,丢包等网络故障情况。TC是linux系统中的一个工具,全名为trafficcontrol(流量控制)。TC可以用来控制netem的工作模式。也就是说,如果想使用netem,需要至少两个条件,一个是内核中的netem功能被包含,另一个是要有TC。通过TC,可以控制网络接口发送数据的速率,每个网络接口(如eth0)都有一个队列,用户管理和调度待发的数据。Tc的原理就是,通过设置不同类型的网络接口队列,从而改变数据包发送的速率和优先级,达到流量控制的目的。原理Tc用于Linux内核的流量控制。基本概念流量控制包括以下几种方式:SHAPING(限制)当流量被限制,他的传输速率就被控制在某个值以下。限制值能够大大小于有效带宽,这样能够平滑突发数据流量,使网络更为稳定。shaping(限制)只适用于向外的流量。SCHEDULING(调度)通过调度数据包的传输,能够在带宽范围内,按照优先级分配带宽。SCHEDULING(调度)也只适于向外的流量。POLICING(策略)SHAPING用于处理向外的流量,而POLICIING(策略)用于处理接收到的数据。DROPPING(丢弃)假如流量超过某个设定的带宽,就丢弃数据包,不管是向内还是向外。流量的处理由三种对象控制,他们是:qdisc(排队规则)、class(类别)和filter(过滤器)。QDISC(排队规则)QDisc(排队规则)是queueingdiscipline的简写,他是理解流量控制(trafficcontrol)的基础。无论何时,内核假如需要通过某个网络接口发送数据包,他都需要按照为这个接口配置的qdisc(排队规则)把数据包加入队列。然后,内核会尽可能多地从qdisc里面取出数据包,把他们交给网络适配器驱动模块。最简单的QDisc是pfifo他不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。但是,他会保存网络接口一时无法处理的数据包。CLASS(类)某些QDisc(排队规则)能够包含一些类别,不同的类别中能够包含更深入的QDisc(排队规则),通过这些细分的QDisc还能够为进入的队列的数据包排队。通过配置各种类别数据包的离队次序,QDisc能够为配置网络数据流量的优先级。FILTER(过滤器)filter(过滤器)用于为数据包分类,决定他们按照何种QDisc进入队列。无论何时数据包进入一个划分子类的类别中,都需要进行分类。分类的方法能够有多种,使用fileter(过滤器)就是其中之一。使用filter(过滤器)分类时,内核会调用附属于这个类(class)的任何过滤器,直到返回一个判决。假如没有判决返回,就作进一步的处理,而处理方式和QDISC有关。需要注意的是,filter(过滤器)是在QDisc内部,他们不能作为主体。TC实现原理TC在流量控制中使用的队列分为两类:1无类队列2有类队列。无类队列比较简单,分类队列则有分类和过滤器等概念,比较复杂。无类队列对进入网卡的数据流统一对待,不进行区分,无类队列形成的队列能够接受数据包以及重新编排、延迟、丢包,它可以对网卡流量进行整形,但是不能细分各种情况,无类队列规定主要有pfifo_fast、tbf、sfq等,无类队列的流量整形手段主要是排序、限速、丢包。有类队列规定则是对进入网卡的数据包根据不同的需求以分类的方式区分对待的分类规定,数据包进入分类队列后,通过过滤器对数据包进行分类,过滤器返回一个决定,队列就根据这个返回的决定把数据包发送到相应的某一类队列中进行排队。每个子类可以再次使用他们的过滤器进行进一步的分类,直到不需要分类为止,数据包才会进入相关类的队列中进行排队。TC包括三个基本的构成块:队列规定qdisc(queueingdiscipline)、类(class)和分类器(Classifiers)1)TC中的队列(queueingdiscipline):用来实现控制网络的收发速度.通过队列,linux可以将网络数据包缓存起来,然后根据用户的设置,在尽量不中断连接(如TCP)的前提下来平滑网络流量.需要注意的是,linux对接收队列的控制不够好,所以我们一般只用发送队列,即“控发不控收”.它封装了其他两个主要TC组件(类和分类器)。内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的qdisc(排队规则)把数据包加入队列。然后,内核会尽可能多地从qdisc里面取出数据包,把它们交给网络适配器驱动模块。最简单的QDisc是PFIFO,它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。不过,它会保存网络接口一时无法处理的数据包。

队列规则包括FIFO(先进先出),RED(随机早期探测),SFQ(随机公平队列)和令牌桶(TokenBucket),类基队列(CBQ),CBQ是一种超级队列,即它能够包含其它队列(甚至其它CBQ)。2)TC中的Class类:class用来表示控制策略.很显然,很多时候,我们很可能要对不同的IP实行不同的流量控制策略,这时候我们就得用不同的class来表示不同的控制策略了.3)TC中的Filter规则:filter用来将用户划入到具体的控制策略中(即不同的class中).比如,现在,我们想对xxa,xxb两个IP实行不同的控制策略(A,B),这时,我们可用filter将xxa划入到控制策略A,将xxb划入到控制策略B,filter划分的标志位可用u32打标功能或IPtables的set-mark(大多使用iptables来做标记)功能来实现。

目前,TC可以使用的过滤器有:fwmark分类器,u32分类器,基于路由的分类器和RSVP分类器(分别用于IPV6、IPV4)等;其中,fwmark分类器允许我们使用Linuxnetfilter代码选择流量,而u32分类器允许我们选择基于ANY头的流量.需要注意的是,filter(过滤器)是在QDisc内部,它们不能作为主体。4)TC的应用流程数据包->iptables(在通过iptables时,iptables根据不同的ip来设置不同的mark)->TC(class)->TC(queue)5)TC对最对高速度的控制(1Rateceiling速率限度参数ceil指定了一个类可以用的最大带宽,用来限制类可以借用多少带宽。缺省的ceil是和速率一样(2Burst突发burst和cburst参数控制多少数据可以以硬件最大的速度不费力的发送给需要的其他类。网络硬件只能在一个时间发送一个包这仅仅取决于一个硬件的速率。链路共享软件可以利用这个能力动态产生多个连接运行在不同的速度。所以速率和ceil不是一个即时度量只是一个在一个时间里发送包的平均值。实际的情况是怎样使一个流量很小的类在某个时间类以最大的速率提供给其他类。

注:burst和cburst至少要和其子类的值一样大。TC流量控制在Linux操作系统中流量控制器(TC)主要是在输出端口处建立一个队列进行流量控制,控制的方式是基于路由,亦即基于目的IP地址或目的子网的网络号的流量控制。流量控制器TC,其基本的功能模块为队列、分类和过滤器。Linux内核中支持的队列有,ClassBasedQueue,TokenBucketFlow(TBF,令牌桶过滤器),CSZ,FirstInFirstOut,Priority,TEQL,SFQ,ATM,RED。Pfifo_fast(ThirdBandFirstInFirstOutQueue先进先出队列),SFQ(StochasticFairnessQueueing随机公平队列),HTB(HierarchyTokenBucket分层令牌桶)等。报文分组从输入网卡(入口)接收进来,经过路由的查找,以确定是发给本机的,还是需要转发的。如果是发给本机的,就直接向上递交给上层的协议,比如TCP,如果是转发的,则会从输出网卡(出口)发出。网络流量的控制通常发生在输出网卡处。虽然在路由器的入口处也可以进行流量控制,Linux也具有相关的功能,但一般说来,由于我们无法控制自己网络之外的设备,入口处的流量控制相对较难。因此我们这里处理的流量控制一般指出口处的流量控制。流量控制的一个基本概念是队列(Qdisc),每个网卡都与一个队列(Qdisc)相联系,每当内核需要将报文分组从网卡发送出去,都会首先将该报文分组添加到该网卡所配置的队列中,由该队列决定报文分组的发送顺序。因此可以说,所有的流量控制都发生在队列中,详细流程图见图1。图1报文在Linux内部流程图有些队列的功能是非常简单的,它们对报文分组实行先来先走的策略。有些队列则功能复杂,会将不同的报文分组进行排队、分类,并根据不同的原则,以不同的顺序发送队列中的报文分组。为实现这样的功能,这些复杂的队列需要使用不同的过滤器(Filter)来把报文分组分成不同的类别(Class)。这里把这些复杂的队列称为可分类(Classiful)的队列。通常,要实现功能强大的流量控制,可分类的队列是必不可少的。因此,类别(Class)和过滤器(Filter)也是流量控制的另外两个重要的基本概念。图2所示的是一个可分类队列的例子。图2多类别队列由图2可以看出,类别(Class)和过滤器(Filter)都是队列的内部结构,并且可分类的队列可以包含多个类别,同时,一个类别又可以进一步包含有子队列,或者子类别。所有进入该类别的报文分组可以依据不同的原则放入不同的子队列或子类别中,以此类推。而过滤器(Filter)是队列用来对数据报文进行分类的工具,它决定一个数据报文将被分配到哪个类别中。实践应用TC命令的一般形式:tcqdisc[add|change|replace|link]devDEV[parentqdisk-id|root][handleqdisc-id]qdisc[qdiscspecificparameters]qdiscadd添加一个派对规则devDEV指定和排队规则相关对应的设备。root对于TC来说,root就是指“egress”handle是用户指定的一个编号,其格式是主编号:次编号。对任何排队规则句柄来说,次编号必需是0.排队规则(qdisc)句柄的一种可用简写形式是“1:”当没有指定次编号时就默认为0.使用TC给一个存在的父class添加子classtcclassadddeveth0parent1:1classid1:6htbrate256kbitceil512kbitclassadd:添加一个class,也可以用del删除deveth0:指定我们要关联新的class的设备。parent:指定我们要关联新class的父class句柄classid1:6:标识此class的唯一句柄(主编号:次编号)。次编号必需为非零值。htb:带分类的qdisc需要所有子class都和其是相同的类型。因此,HTBqdisc将包含HTBclasses。rate256kbitceil512kbit:class的参数。实例解析tcfilteradddeveth0parent1:0protocolipprio5u32matchipport220xffffmatchiptos0x100xffflowid1:6policerate32000bpsburst10240mpu0actiondrop/continuetcfilteradd:添加一个filter,也可以使用del来删除。deveth0:指定新的filter要关联的设备parent1:0:指定新的filter要关联的父句柄protocolip:这个参数是必要的prio5:prio参数能使一个filter在另一个之前被使用,pref是prio的同义词。u32:这是一个分类器(classifer),所有tcfilter命令都需包含该选项。matchipport220xffffmatchiptos0x100xff:这是分类器的参数。带有服务标识且端口号是22的数据包将会被选择。flowid1:6:flowid指定一个目标class句柄,filter所选择的数据包将发往这个句柄所指向的class。police:这是一个监管器(policer),在tcfilter命令中是可选项。rate32000bps:当超过这个速率时,监管器将执行一个动作,低于这个速率时,监管期将执行另一个动作。burst10240:burstmpu0:被监管的最小数据单位。为了统计所有流量,使用mpu0.actiondrop/continue:action指定了当流量大于给politer所配置的rate时应采取的动作。第一个词指明了当流量超过rate时所要执行的操作,第二个词指明了其他情况下应该采取的操作。网络延迟命令:tcqdiscadddeveth0rootnetemdelay100ms将eth0网卡的传输设置为延迟100ms发送命令:tcqdiscadddeveth0rootnetemdelay100ms10ms模拟出带有波动性的延迟值命令:tcqdiscadddeveth0rootnetemdelay100ms10ms30%模拟一定概率带有波动性的延迟值命令:tcqdiscchangedeveth0rootnetemdelay100ms10msdistributionnormal在eth0口模拟时延,在100ms+-10ms之间的正态分布模拟网络丢包命令:tcqdiscadddeveth0rootnetemloss1%将eth0网卡的传输设置为随机丢掉1%的数据包也可以设置丢包

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论