asp.net网站很快吗,广东公路建设公司官网,使用爬虫做的网站,2345网址大全设主页广告理解流量监管和整形的关键算法—令牌桶无论是流量监管还是流量整形都提到一个超额流量的问题#xff0c;而前面已经描述了监管和整形对超额流量的处理方式不同#xff0c;监管丢弃或者重标记#xff0c;流量整形是缓存#xff0c;通过加大延迟的方式发送平滑的数据流量而前面已经描述了监管和整形对超额流量的处理方式不同监管丢弃或者重标记流量整形是缓存通过加大延迟的方式发送平滑的数据流量那么网络设备怎么去确定这个超额流量难道链路的带宽为512K而此时用户以每秒768KB/s发送数据使用768-512就256KB,难道超额的流量就是256KB吗不是的这样做是一种错误的理解要确定用户的超额流量必须使用如下两种算法中的一种来确定一种叫漏桶算法leaky bucket algorithm另一种叫令牌桶算法token bucket algorithm而思科在流量监管和整形时使用的是令牌桶算法为什么思科会选择令牌桶算法下面开始来理解漏桶算法leaky bucket algorithm 漏桶算法leaky bucket algorithm是一种不支持任何数据突发量的算法为了更好的理解漏桶算法如图所示它好比一个底部呈现一个漏孔然后装满水的桶而桶的底部有一个恒定大小的漏孔由于漏孔的大小是是恒定的所以无论桶上方的水龙头以多大的注水量向桶中注水水通过漏孙向外泄漏的速率永远是一样的算法不会因为桶中的水快被溢出而瞬间将桶中的水泄漏完之后再继续盛水。在这个比喻中桶中的水就好比是数据水龙头好比是用户发送数据的速率而桶底部的漏孔比如是流量整形或者监管的速率。注意在上面的描述中只是为了更好的理解漏桶算法因为该算未能不并是需要描述的重点大家只需要记住这样这个原则因为漏桶算法只能以恒定速率输送数据不支持任持续突发和最大突发所以在流量管理中不使用漏桶算法而是后面将要描述的令牌桶算法。 令牌桶算法token bucket algorithm或叫令牌漏桶算法如图所示其实令牌桶的底部也有一个“漏洞”这一点是乎和漏桶非常相似所以令牌桶还有另一个名命叫“令牌漏桶本章节至此以后统称它为令牌桶”但是它与一般所指的常规漏洞有实质上的区别令牌桶里面装载的是令牌然后让令牌去关联到数据发送常规漏桶里面装载的是数据令牌桶允许用户的正常的持续突发量Bc就是一次就将桶里的令牌全部用尽的方式来支持续突发而常规的漏桶则不允许用户任何突发行。而令牌桶的算法分为“单桶”和“双桶”算法那现在首先来理解单桶算法。令牌桶中的令牌如何去关联到数据发送在令牌桶算法中只有拿到令牌的数据才能被发送反之则不能假设一个令牌可以发送1bit比特的数据那么要发6个bit的数据就需要拿到六个令牌当拿到令牌的数据被发送后该令牌就从桶中移除。换句话说桶中有多少令牌就能发送多少数据。如上图所示一共有6个数据需要被发送桶中有四个令牌那么就能发送4个数据。在图示环境中剩下的2个数据因为没有多余的令牌可用它们将不被发送。 令牌桶算法如何判断超额流量以及如何向令牌桶中加入令牌简单的讲如果令牌桶中没有可用的令牌那么在这个时刻到来的所有数据流量都是超额流量。如下图所示至于超额的流量怎么处理它可能被监管丢弃也可能被整形所缓存但这不是这里讨论的重点在实验部分会重点讨论丢弃和缓存的效果。至此为止大家应该清晰的知道使用令牌去关联数据并发送的过程了令牌除了会从桶中移除以后算法还会每隔一个的周期不断的向桶中加入令牌关键加入令牌的速率是多少是什么时候间隔时间周期加入令牌然后加多少令牌到桶中这些问题被三个关键因素所决定它们是CIR承诺信息速率、Tc时间周期、Bc持续突发量。CIR承诺信息速率这个速率就是向令牌桶中加入令牌的速度单位是bits persecond每秒多少个比特一般情况下会将这个速率配置成与认购的合同速率相匹配。比如虽然您的接入速率可能有128K但是认购速率为64K那么就应该把CIR配置为64K。Tc时间间隔承诺的持续突发Bc间隔时间也是让令牌桶充满令牌的时间隔它的单位是毫秒ms这个Tc间隔是不能手工配置的通常思科会假设这个Tc为125ms。它能被CIR和Bc通过公式计算而得到。Bc持续突发量它实际上定义了令牌桶的容量或者这样讲更容易理解它就是在一个Tc时间时隔内允许用户一次耗尽桶中所有令牌的数量以比特bit为单位。 流量监管和整形必须理解的重要公式Bc Tc * CIR假设现在需要将一个接入速度是128K的链路流量整形为承诺信息速率64K那么该连接的持续突发量Bc是多少很简单此时只需要使用思科默认的Tc(125ms)即0.125s乘以64000bit/s即得到8000bits的持续突发量Bc。同样的道理如果已经知道了CIR和Bc就可以通过公式来计算出Tc。但是请始终注意一个问题Tc是不可以手工配置的。能手工配置的只有CIR和Bc而且思科建议只配置CIR其它的参数比如Bc都让系统去自动计算完成。所以在上述的三个参数中最重要的还是CIR。 注意有些时候读者在参看一些外文书籍或者参资料时这个CIR也叫整形后的目标速率Target Rate或者叫整形速率Shaped Rate但其核心意思都一样往令牌桶中加入令牌的速率。所以公式Bc Tc * CIR等同于Bc Tc * Target rate也等同于Bc Tc * Shaped Rate。但是这有一个前提就是你整形后的目标速率或者叫整形速率必须与承诺信息速率相同。但是在一些特殊案例中当用户想获得高于CIR的数据发送速率时可以将上述后两个公式中的Target rate 和Shaped Rate适当设置得更高些。 理解令牌桶算法支持用户的持续突发行为为什么叫Bc为“持续”突发事实上在单令牌桶的算法中用户的持续突发量被Bc所决定的Bc也代表令牌桶的容量所谓突发行为是指允许用户一次用完令牌桶中的所有令牌那么如何体现“持续”突发的特点呢持续突发是指间隔一个Tc时间令牌桶中的令牌会被再次充满然后用户可以再次用尽令牌桶中的所有令牌也就是说这个突发行为是可以持续进行的会在间隔Tc的时间周期上反复充满桶中的令牌同时又不断释放桶中的令牌而不是在整个流量的较长时间发送过程中的瞬间行为。 流量整形到底是如何将接入速率AR转化为认购速率比如说接入速率也就是物理时钟频率工作在128K而认购速率也就是CIR只有64K流量整形是如何将这个接入速率128K整形成与CIR相匹配的64K的在回答这个问题前首先得弄明白一个不可争义的事实如果接入速率工作在128K通常这个速率被时钟频率所决定请注意在任何时候该接口都只会以128K的速率发送数据就接口本身而言它是决不可能自己将发送速率降致64K的但是它可以采取一种机制把1秒钟1s拿来平均化成N个以毫秒ms组成的时间间隔然后一些间隔时间不让其发送数据能发送的时间间隔接口还是以128K的速率来发送如图所示就是将128K的接入速率整形为64K的认购速率也就是CIR假设配置令牌桶的深度Bc8000比特因为TcBc/CIR,所以就会产生8000除以64000等于0.125s(125ms)的时间间隔那么8个125ms就是1秒所以现在以125ms为基础划分8个时间间隔。然后接口仍然将以128K来发送数据因为这是不可改变的事实当前令牌桶的深度(Bc)是8000比特如果以128K来发送数据那么8000除以128000等于62.5ms就完成数据发送了正好是125ms的一半但是此时由于令牌桶中的令牌耗尽令牌耗尽就代表数据无法拿到令牌无法拿到令牌就无法发送数据。所以在125ms的时间间隔中的另一半时间后62.5ms数据发送将被抑制不能发送直到125ms间隔周期到来令牌桶又被充满然后再次耗尽它然后重复的执行这个过程。所以从一秒钟这个角度来看虽然接口以128K发送但是有500ms发送都被抑制实际上就每秒就等于64K的发送率。最后就能得到如图所示的整形情况通过上面的描述应该能理解单桶流量整形的工作机制了现在需要进一步提出一个问题如果用户有长时间没有发送数据或者发送的数据低于令牌桶的容量也就是不耗尽Bc中的令牌那么新产生入桶的令牌会发生什么情况 理解双令牌桶算法 如果只有一个令牌桶(Bc)那么当用户发送的数据低于令牌桶的容量也就是不耗尽Bc中的令牌新产生入桶的令牌会充满令牌桶当桶已经被充满时多余的令牌将被丢弃这意味着用户的整个突发量只能维持在Bc之内。不能存在有高过持续突发的超额突发或者我更喜欢称呼超额突发为瞬间突发。为了突破这个限制现在在令牌桶算法中引入双桶机制如图所示第一个令牌桶通常被称为桶1也叫Bc或者叫持续突发桶第二个令牌桶通常叫桶2也叫Be或者叫瞬间突发桶。双桶算法遵守如下重要原则1 算法不会直接向桶2产生并加入令牌2 只有当桶1被填充满载时从桶1溢出的令牌将被放入到桶23 不能保证桶2在每个时间间隔被充满令牌这被桶1溢出多少令牌到桶2有关。4 但是如果桶2也被满载那么多余的令牌将被丢弃 根据上述的原则当引入桶2Be后如果用户发送数据时他将获得比单桶算法更大的突发量因为流量耗尽了桶1Bc的令牌后算法让会让流量去使用桶2Be中的令牌所以此时用户的数据突发量将等于BcBe。但是在流量整形过程中Bc和Be到底可以配置成多少bits建议这样的原则将用户获得ISP的认购合同书上的CIR速率配置到流量整形中让系统自行去计算最合理的Bc和Be并不建议用户通过人工的方式去配置Bc和Be整形系统的Bc可以通过Tc*CIR获得而Be和Bc在数学上是不存在必然的关系的。思科一般会将Be的大小自动配置为和Bc相同。举一个例子来说明如图所示为将接入速率128K整形为64KBc8000bits, Be8000bits,所以图中的流量突发会多一个Be的瞬间突发流量如箭头所指示的那一部分为什么Be只有那么一瞬间的突发量而不能持续因为算法从来都不会向Be直接加入令牌Be只能收集被Bc溢出的令牌如果用户一直以持续的高于64K的速率来发送数据那么Bc就根本不会有令牌溢出它将被反复的充满又耗光然后又充满然后又耗光那么就不会有多是余的令牌溢出到桶2(Be)中所以被允许的Be叫瞬间突发一般只出现在数据初始发送的第一个时间时隔内因为只有此时的Bc和Be的令牌都是满桶还有就是出现在用户以低于CIR的速率在发送数据只有这个时候桶2Be才有机会被充满。注意区别持续突发和瞬间突发的差异持续突发是指Bc所谓持续是指它可以每隔一个Tc间隔就能将Bc的令牌全部用完这意味着这个行为是可以反复持续的进行的它与CIR和Tc存在必然的数学关系通常是BcCIR*Tc而瞬间突发或者叫超额突发是指Be它不能被持续进行能执行瞬间突发的一个唯一条件就是Bc的令牌已经满了有令牌溢出到Be当完成一次突发后耗完Be的令牌后如果一直没有令牌从Bc溢出到Be那么就不能在进行瞬间突发行为所以它只是瞬间。 流量整形的配置及单双桶的确认以GTS通用流量整形为例默认情况下建议只配置CIR系统自动计算Bc和Be系统会使用双桶算法同时使用Bc和Be具体如下所示 关于流量整形的配置说明R1(config)#inte s1/0R1(config-if)#traffic-shape rate 64000 * 配置流量整形到每秒64KbpsR1(config-if)#exit 上述配置就仅是配置了整形的CIR让系统去确定Bc和Be当完成配置后可以通过show traffic-shape来查看流量整形的各项配置参数如图所示当前的配置是将接入速率整形到64K桶1(Bc)8000bits1000bytes该参数是系统根据64000/bps(CIR)*0.125s(Tc)8000bits所得到的。Tc思科默认是125ms。同时系统启动了双桶算法将桶2Be配置成为与桶1Bc相同的大小8000bits。所以现在第一个时间时隔的突发量就是BcBe16000bits换成以字节为单位就是16000除以8等于2000byte。手工配置Bc并申明使用单桶机制R1(config)#intes1/0R1(config-if)#traffic-shaperate 64000 8000 0* 整到CIR64K手工配置桶1Bc为8000bits手工配置桶2Be为0由于Be被配置为0这就申明目前流量整形只使用单桶算法具体如图所示。