MLSQoS自我理解.docx_第1页
MLSQoS自我理解.docx_第2页
MLSQoS自我理解.docx_第3页
MLSQoS自我理解.docx_第4页
MLSQoS自我理解.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

MLS QOS默认3550上关闭对于接口的信任状态只能是一种,要么是COS,要么是DSCP,要么是IP优先级,不可重复。当携带有(cos dscp IP precedence)的数据进入交换机后,如果交换机信任这个数据包携带的标签(cos dscp ip precedence)的话,那么会映射到一个内部的DSCP表(也就是cos-内部dscp, ip precedence-内部dscp,数据包的dscp-内部dscp的映射),交换机的策略都是根据内部的dscp来制定的。由于默认rewrite是开启的,所以交换机会把内部的DSCP映射到数据包本身的DSCP上发出。如果是trust COS那么会根据入口数据帧的COS 通过COS-内部DSCP来执行策略。如果数据帧本身不携带COS,那么使用定义的默认的COS。如果接口是非信任状态,那么会洗掉所有的标记(二层和三层),并且默认的COS为0。可以通过命令改变默认的COS值,数据帧进入交换机后依然会使用COS-内部DSCP的映射来处理。如果在接口使用了mls qos cos override那么不会信任任何从这个接口进入的标记,并且所有的数据都会使用定义的default COS来执行策略(通过COS-内部DSCP的映射,然后通过内部DSCP做策略)。如果已经在接口开启了trust,再使用这个cos override后会变成not trust状态。此时不管进入的数据的任何标记,都会是使用默认的COS,COS-内部DSCP的映射做策略,在发出数据时会自动的使用内部DSCP-COS的映射,所以会给人一种修改了override就影响发出帧的COS的假象。因为默认的COS-内部DSCP和内部DSCP-COS的映射出来的值是相等的。对于trust的种类(COS TOS DSCP其中之一)都是会映射到一个内部的DSCP进行策略。而内部的DSCP是否映射到出口的数据包的DSCP要看是否开启了rewrite。Rewrite是默认开启的,也就是说如果内部DSCP有变动,那么也会映射到本身数据包的DSCP,这个映射是通过内部DSCP-DSCP的映射来完成的。如果关闭了rewrite那么对于发出的的数据包,不管内部DSCP-DSCP映射变成了什么,都不会对数据包本身的DSCP进行修改。对于trust COS 即使是access接口,虽然进入接口的数据帧本身不带COS标记,但是会对这个接口定义的COS (default COS)分配一个内部的DSCP值,交换机会根据内部的DSCP值进行策略。SW(config-if)#do show mls qos int f0/1FastEthernet0/1trust state: trust costrust mode: trust cosCOS override: disdefault COS: 0DSCP Mutation Map: Default DSCP Mutation MapTrust device: none对于access接口进入的数据帧,由于本身不携带COS字段,所以可以对不携带COS字段的帧分配一个默认的COS,默认是0。可以通过接口命令来修改默认的cos。SW(config-if)#mls qos cos ? Class of service value between 0 and 7 override Force default COS on all packetsCOS override可以强制在帧进入时按定义的default COS的值来执行策略,如果是接口的状态是trust,那么如果开启了COS override后,自动关闭接口的trust,直接使用在入口的COS-内部DSCP的map。在出口时会使用内部DSCP-COS的map来重写帧的COS(这个是自动的不可控的)。并且如果开启了rewrite,那么会把内部的DSCP重写在IP包的DSCP上。对于在接口trust dscp后面的default COS对于IP包来说无意义,对于非IP包来说会选择default COS来影射到内部的DSCP,来执行策略。SW(config-if)#do show mls qos int f0/1FastEthernet0/1trust state: trust dscptrust mode: trust dscpCOS override: disdefault COS: 0DSCP Mutation Map: Default DSCP Mutation MapTrust device: none如果在接口通过挂policy-map,那么接口的trust会自动关闭。Policy-map会接管接口的trust。SW(config-if)#do show mls qos int f0/1FastEthernet0/1Attached policy-map for Ingress: 1trust state: not trustedtrust mode: not trustedCOS override: disdefault COS: 6DSCP Mutation Map: ZTrust device: none在policy-map中使用set ip dscp则是设定内部的DSCP。如果set的是IP优先级,则是通过IP优先级再映射到内部的DSCP。Policy-map会优先于接口的trust,所以一旦在接口上调用了service-policy那么这个policy-map就会接管端口的信任状态。使用速率限制时可以对超速的流量做mark-down,而超速的流量mark-down是把内部的dscp降低。降低DSCP是通过policed-dscp的map,也就是把内部DSCP 通过map 映射到policed DSCP来把超速的包的内部DSCP映射到一个新的内部的DSCP。SW(config)#mls qos map policed-dscp 20 21 22 23 24 25 to 10SW#show mls qos maps policed-dscp Policed-dscp map: d1 : d2 0 1 2 3 4 5 6 7 8 9 - 0 : 00 01 02 03 04 05 06 07 08 09 1 : 10 11 12 13 14 15 16 17 18 19 2 : 10 10 10 10 10 10 26 27 28 29 3 : 30 31 32 33 34 35 36 37 38 39 4 : 40 41 42 43 44 45 46 47 48 49 5 : 50 51 52 53 54 55 56 57 58 59 6 : 60 61 62 63对于命令SW1(config-if)#mls qos trust cos pass-through dscp的意思是交换机会信任cos,但是不会改变包本身的DSCP,例如从access口进入了一个dscp=CS11的包。如果不打pass-through dscp,由于这个包是从一个access接口进入的,本身并不携带有COS值,所以交换机会使用默认的COS值0来处理这个包,交换机会使用cos-内部dscp的映射来转换一个内部的dscp值, cos 0 到内部dscp的映射还是0,然后交换机通过内部DCSP来处理包并进行策略,由于rewrite打开所以在包发出的时候会使用内部的DSCP 0来替换包本身的DSCP,这样发出的数据包的DSCP值就为0了。如果打了pass-through,那么还是会信任COS,但是交换机不会把这个从cos0-内部dscp0再写到数据包中。(虽然不会把cos0-内部dscp0再写到数据包中,但是数据包出去时还是会执行Dscp-dscp mutation map的。)参数:cos 配置端口信任cos 值;cos pass-through-dscp 配置端口信任cos 值但是不更改包的dscp 值;dscp 配置端口信任dscp 值;dscp pass-through-cos 配置端口信任dscp 值但是不更改包的cos 值;ip-precedence 配置端口信任ip 优先级;同样的道理,对于命令SW1(config-if)#mls qos trust dscp pass-through cos,就是不改变出口帧的cos字段。如果不打pass-through cos那么进入的一个数据包会根据Dscp-dscp mutation map来得到一个内部的DSCP并执行策略,然后在出口时会根据内部DSCP-COS的映射来建立数据帧的COS字段。如果敲了pass-through cos,那么进入时的COS字段在发出时不会被改变。内部DSCP在COS到发送队列映射中的重用的概括:*交换机收到分组,通过trust cos dscp IP precedence映射到内部DSCP。*交换机根据配置的内部DSCP值对分组分类。*交换机监控、标记或mark down内部DSCP。*交换机根据内部DSCP值,和内部DSCP到COS的map决定出口的COS值。*交换机根据出口COS值、COS-出口队列的map将分组放入到4个发送队列中。*交换机根据严格优先权队列或WRR将分组从发送队列中调度出来。交换机在发出分组时,需要根据不同的COS放入到不同的队列中,所以需要内部DSCP-COS的映射。可以使用wrr-queue cos-map qid cos1 来修改出口的COS应该放到哪个队列中。使用命令priority-queue out来使队列4变成优先级队列(一旦敲了priority-queue out那么总是使队列4 变成优先级队列),但是这样会产生饿死其他队列的情况,也就是说在这个优先级队列还没发送完的情况下,其他的三个队列不能发送数据。所以可以使用WRR来配置4个队列(3550支持4个出口队列)。使用公式(W/S)*B=n来计算出口权重。W表示队列的WRR的权重,S表示所有队列的权重总和,B表示接口的总带宽,n表示队列的出口带宽。如果wrr-queue bandwidth 5 5 10 20的话对于一个百兆口来说队列1分配的带宽是(5/40)*100Mbit/s=12.5Mbit/s,队列2也是12.5M,队列3是25M,队列4是50M。3550在Gbit口上支持两个尾部丢弃门限,这个阀值是根据交换机内部DSCP来执行的。例如让内部DSCP=af11的数据包可以到进入队列的30%,让内部DSCP=ef的数据包可以进入到队列的100%,那么一旦队列的长度超过了30%那么会丢弃所有的内部dscp=af11的数据,而队列长度到达了100%则会对内部dscp=ef的数据包进行尾部丢弃。可以使用命令wrr-queue threshold queue-id threshold-percentage1 threshold-percentage2来修改这两个阀值。Queue-id是4个队列其中的一个的ID也就是指定了一个队列,而阀值百分比是指丢弃的百分比。Wrr-queue dscp-map threshold-id dscp1 dscp8这个阀值ID表示上面阀值百分比的1或者2。也可以在定义是使用wred,命令是wrr-queue wred threshold queue-id threshold-percentage1 threshold-percentage2。3550的Gbit口支持调整队列的大小,调整队列大小的公式是(W/S)*Q=n。W表示队列的WRR的权重,S表示所有队列的权重总和,Q表示出口队列的总数出口队列总计是4096个,n表示每个队列的大小。每个F口支持最小保留缓冲区(也就是每个WRR子队列的长度),一般来说实时交互流量需要较小的缓冲区,而文件需要较大的缓冲区,可以使用命令mls qos min-reserve min-reserve-level min-reserve-buffersize全局可配置8个保留等级(标识),保留缓冲区大小表示以分组为单位的大小(队列长度)。然后用过命令wrr-queue min-reserve queue-id min-reserve-level来指定接口队列的大小。在3560上可以同时在接口上挂input方向policy-map 和trust dscp,对于policy-map中匹配的class ,set成内部DSCP,对于不匹配policy-map的class按照接口的trust来设置相应的dscp。Policy-map中的trust的优先级高于接口的trust。(3560不能再出口挂policy-map)拓扑: R4-(f0/4)SW1(f0/5)-R5对于接口上的这个policy-map:mls qos map policed-dscp 5 to 15SW1#show policy-map Policy Map P1 Class class-default police 8000 8000 exceed-action policed-dscp-transmit set dscp 5和这个命令SW1#show policy-map Policy Map P1 Class class-default set dscp 5police 8000 8000 exceed-action policed-dscp-transmit的效果是一样的,不论把set写在哪里,总是先把符合这个class的类set成内部dscp 5,对于超速的流量会mark down到dscp 15SW1#show mls qos interface f0/5 statistics FastEthernet0/5 (All statistics are in packets) dscp: incoming 这里显示的是入口包的dscp,并不是内部dscp- 0 - 4 : 0 0 0 0 0 5 - 9 : 7 0 0 0 0 10 - 14 : 0 0 0 0 0 15 - 19 : 6993 0 0 0 0 20 - 24 : 0 0 0 0 0 25 - 29 : 0 0 0 0 0 30 - 34 : 0 0 0 0 0 35 - 39 : 0 0 0 0 0 40 - 44 : 0 0 0 0 0 45 - 49 : 0 0 0 0 0 50 - 54 : 0 0 0 0 0 55 - 59 : 0 0 0 0 0 60 - 64 : 0 0 0 0 dscp: outgoing 这里显示的是出口包的dscp但是默认rewrite打开,所以会把内部dscp映射到出口包的dscp- 0 - 4 : 0 0 0 0 0 5 - 9 : 9 0 0 0 0 10 - 14 : 0 0 0 0 0 15 - 19 : 6991 0 0 0 0 20 - 24 : 0 0 0 0 0 25 - 29 : 0 0 0 0 0 30 - 34 : 0 0 0 0 0 35 - 39 : 0 0 0 0 0 40 - 44 : 0 0 0 0 0 45 - 49 : 0 0 0 0 0 50 - 54 : 0 0 0 0 0 55 - 59 : 0 0 0 0 0 60 - 64 : 0 0 0 0 cos: incoming - 0 - 4 : 7174 0 0 0 0 5 - 7 : 0 0 0 cos: outgoing - 0 - 4 : 11 6991 0 0 0 5 - 7 : 0 0 0 Policer: Inprofile: 0 OutofProfile: 0SW1#show mls qos int f0/5FastEthernet0/5trust state: not trustedtrust mode: not trustedtrust enabled flag: enaCOS override: disdefault COS: 0DSCP Mutation Map: Default DSCP Mutation MapTrust device: noneqos mode: port-basedSW1#show mls qos int f0/4FastEthernet0/4Attached policy-map for Ingress: P1trust state: not trustedtrust mode: not trustedtrust enabled flag: enaCOS override: disdefault COS: 0DSCP Mutation Map: Default DSCP Mutation MapTrust device: noneqos mode: port-basedSW1#show mls qos interface f0/4 statistics FastEthernet0/4 (All statistics are in packets) dscp: incoming - 0 - 4 : 13601 0 0 0 0 5 - 9 : 0 0 0 0 0 10 - 14 : 0 0 0 0 0 15 - 19 : 0 0 0 0 0 20 - 24 : 0 0 0 0 0 25 - 29 : 0 0 0 0 0 30 - 34 : 0 0 0 0 0 35 - 39 : 0 0 0 0 0 40 - 44 : 0 0 0 0 0 45 - 49 : 0 0 0 0 0 50 - 54 : 0 0 0 0 0 55 - 59 : 0 0 0 0 0 60 - 64 : 0 0 0 0 dscp: outgoing - 0 - 4 : 13599 0 0 0 0 5 - 9 : 0 0 0 0 0 10 - 14 : 0 0 0 0 0 15 - 19 : 0 0 0 0 0 20 - 24 : 0 0 0 0 0 25 - 29 : 0 0 0 0 0 30 - 34 : 0 0 0 0 0 35 - 39 : 0 0 0 0 0 40 - 44 : 0 0 0 0 0 45 - 49 : 0 0 0 0 0 50 - 54 : 0 0 0 0 0 55 - 59 : 0 0 0 0 0 60 - 64 : 0 0 0 0 cos: incoming - 0 - 4 : 14253 0 0 0 0 5 - 7 : 0 0 0 cos: outgoing - 0 - 4 : 14004 0 0 0 0 5 - 7 : 0 0 0 Policer: Inprofile: 228 OutofProfile: 139823560和3550的其他机制大体相同,下面说一下不同之处。3560的出口使用SRR调度,有shaped和shared两种方式。在shaped模式中,将保证出口队列拥有带宽的一个百分比,也就是说在shaped模式下,这个速率既是保证带宽,又是最大带宽。既是链路空闲,shaped流量使用的带宽也不会超过分配给它的带宽。所以shaped既是带宽保证又是带宽限制。在shaped中使用每个分配的权重的绝对的值来计算队列的可用带宽(就是说配置的权重是多少则就取配置权重的倒数)。SRR允许对分配给每个队列的权重进行修改。这些权重的比值确定了SRR调度器从每个队列中发送分组的频率。“1/权重”决定了每个队列的整形带宽。例如,如果一个队列被限制为10%,则它的shaped的权重被设为10(1/10)。Shaped权重为0意味着队列正以shared模式运行。Shaped模式会覆盖shared模式。在shared模式中,队列根据已经配置的权重来共享他们之间的带宽,带宽可以被保证在这个水平上,但是并不限制它。例如,一个队列是空的并且不再需要使用链路,其余的队列可以扩展到这些未被使用的带宽中,并且可以在他们之间共享这些带宽。在shared模式时,权重的比值决定了出队列的频率,而绝对值是没有意义的(就是说所有的shared的权重的和,其中一个队列占了多少shared权重的和)。如果一个接口既配置了shared又配置了shaped,那么则运行在shaped模式。也就是说shaped会覆盖shared。所谓绝对的值就是如果接口带宽是100Mbps,其中队列1 shape的权重为10(实际上就是权重的倒数1/10),就是使这个队列的带宽保证在10Mbps(1/10*100Mbps),这个shaped权重10就绝对的接口带宽的10%。此时如果队列2 3 4 shared分别是10,10,10的话(由于此时队列1已经是shaped所以shared的数值没有意义)那么这个shared的权重10则是相对值,所谓相对值就是在刨去shaped占用的绝对带宽后的剩下的值,按照shared的权重进行分配,也就是说队列2 3 4总共的权重值是30 其中队列2占了其中的10。由于队列1 shaped已经占了10Mbps,所以只剩下了90Mbps,其中队列2占10/(10+10+10)*90Mbps=30Mbps,如果队列2 是空的那么队列3 4 可以使用队列2的这30Mbps的带宽。如果配置了严格优先级队列(priority-queue out)那么shaped和shared就都没有意义了。3560的拥塞避免3560使用WTD,丢弃机制,也就是加权尾部丢弃。举例说明如果队列1 对于DSCP为ef的包的阈值为80%则队列(分配的队列allocation)到达80%以后再来的DSCP为EF的包就丢弃。3560队列的内存分配3560每个队列可以配置一个基本的队列长度,并且每个队列可以配置一个保留的队列长度,如果保留队列的百分比小于分配的(allocation)队列长度的话,那么剩下的buffers则被划归到common pool也就是被划归到了公共池,这样可以允许被别的队列借用。使用命令 mls qos queue-set output qset-id buffers allocation1 allocation2 allocation3 allocation4 这个命令首先定义一个qset-id(每个端口属于一个queue-set)。然后为四个队列分配buffers总数乘以队列百分比个buffers,默认4个队列都是25%。例如buffers的总数为1000 默认情况下每个队列都获得25%的buffers,那么对于队列2来说它获得的buffers就是250。举例:命令:mls qos queue-set output 1 buffers 35 30 25 10 的意思是对于queue-set 1会以35% 30% 25% 10%的比例在队列1-4之间分配buffers。如果总共有400个缓冲可用的话,那么队列1-4分别被分配140、120、100、40个缓冲。但是每个队列可能不会全部用掉自己的buffers,他们会为自己预留一部分buffers,把除预留外的buffers放到公共池(common pool)中,这样如果别的队列的包过多的话可以向common pool中借用buffers。命令:mls qos queue-set output qset-id threshold queue-id drop-threshold1 drop-threshold2 reserved-threshold maximum-threshold 其中drop-threshold1 和drop-threshold2 是指定两个WTD的阈值,这个值是以百分比的形式出现的,并且是分配(allocation)的buffers的百分比(也就是在 mls qos queue-set output 1 buffers中指定的数值为计算基准),范围从1-3200(因为有可能借用common pool)。和上面的例子连贯起来。命令:mls qos queue-set output 1 threshold 3 30 80 60 100的意思是,对于队列3来说WTD的阈值1是分配(allocation)的buffers的30%,队列3 allocation的buffers是400*25%=100,队列3阀值1的buffers是100*30%=30个buffers。也就是说阀值是以allocation为基础计算的。对于队列3阀值2的buffers为:400(所有的buffers)*25%(队列3的allocation)*80%(阀值2的对于allocation的百分比)= 80,在大于80的情况下会对符合阈值2的数据进行丢弃。Reserved-threshold是明确的保留的buffers,也就是说不会把这些buffers放到common pool中,保留的buffers一直归这个队列所有不会被别的队列借用,并且保留的buffers是以分配(allocation)的buffers为基础计算的,也就是说是allocation的buffers乘以reserved-thre

温馨提示

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

评论

0/150

提交评论