QOS(Quality Of Server)(在拥塞时才用)
哪些问题会影响网络的数据传输
1、有限的带宽2、延迟3、抖动4、丢包解决可用带宽的方法:
1、升级带宽,增加链路带宽 2、让优先级高的流量先过 3、压缩二层的帧 4、压缩IP包的头部延迟的分类:
1、处理延迟--网络设备将数据帧从入接口取出,将其放到接收队列,再放到出接口输出队列所需的时间 2、排队延迟--数据包在接口的输出队列中等待的时间 3、串行化延迟--将封装在数据帧中比特放到物理介质上的时间 4、传播延迟--通过物理介质传输数据帧中的比特所需的时间注意:只有排队延迟可以通过使用QOS来进行控制
QOS服务模型:
1、尽力而为的服务--没有应用QOS,网络的默认行为2、集成服务--所有的中间系统和资源都显式的为流提供预定的服务,这种服务需要预留网络资源,确保网络能够满足通信流的特定服务要求。3、区分服务--将根据服务要求将通信流分类,然后将它们加入到效率不同的队列中,使一些通信流优先于其他类别的通信流得到处理。 IntServ集成服务是通过使用RSVP(Resource Reservation Protocol资源预留协议)实现的,在两个端点中间网络设备上都要启用RSVP。工作原理--数据流在发送之前,起始节点会向网络请求特定类型的服务,并将其流量配置文件告诉网络中的每个中间节点,请求网络提供一种能够满足其带宽和延迟要求的服务。在从网络得到确认后,应用才开始发送数据。 资源预留的过程分为5步:1、数据发送方发送rsvp path控制消息,这种消息描述了将要被发送的数据的信息。2、每个rsvp路由器收到path消息后,保存上一跳的IP地址,并继续向下发送。3、接收站接收到rsvp path消息后,使用rsvp resv消息向上一跳路由器请求rsvp资源预留。rsvp resv消息从接收方到发送方所经过的路径与rsvp path消息到来时完全相同。4、rsvp路由器确定是否可以满足这些rsvp请求,如果不能,则拒绝。如果可以,则预留出资源,并继续向上一跳发送出rsvp请求。5、发送方收到rsvp请求,说明预留已经就绪,可以开始发送数据了。路由器对数据包的处理过程:
1、准入控制2、分类3、策略4、排队5、调度资源预留方式可分为两类:
1、独占式--适合于多个数据源同时发送的应用程序,针对每个发送方预留资源,且发送方是很清楚的。2、共享式--适合于多个数据源不太可能同时发送的应用程序。 又可分为两种: ①共享显式(shard explicit SE)--为多个明确的源预留资源 ②通配符过滤器(wildcard filter WF)--为所有源预留资源需要一个PDP(policy Decision Point策略决策点)来集中完成网络对RSVP请求的许可控制。
缺点:不具有可扩展性,并且需要网络设备不断的发送信号,本身占用带宽。配置:
R1(config)#interface e0
R1(config-if)#ip rsvp bandwidth 起用rsvp,默认使用75%的带宽做rsvpR1(config-if)#ip rsvp bandwidth 500 设定只使用500K的带宽R1(config)#interface S0R1(config-if)#ip rsvp bandwidth R1(config)#ip rsvp sender 20.1.1.5 10.1.1.4 udp 1040 0 10.1.1.4 e0 32 32 目标IP 源IP 目标端口 源端口 预留带宽R2(config)#interface S0
R2(config-if)#ip rsvp bandwidth R2(config)#interface S1R2(config-if)#ip rsvp bandwidthR3(config)#interface S0
R3(config-if)#ip rsvp bandwidth R3(config)#interface S1R3(config-if)#ip rsvp bandwidth R3(config)#ip rsvp reservation 20.1.1.5 10.1.1.4 udp 1040 0 20.1.1.5 e0 ff load 32 32 独占式预留show ip rsvp interface
show ip rsvp installedshow ip rsvp sender每30S发一次dump-messages
===========================================================================
DiffServ
区分服务--能够提供满足不同QOS需求的多种服务等级。不需要显示的通知网络设备。路由器对数据包的处理是逐跳行为缺点:没有绝对的服务保证,机制复杂。
语音进程的端口号:16384-32767之间的偶数 奇数的是控制端口,偶数的是数据端口
·确定数据流的优先顺序。对延迟敏感的流量赋予高的优先级。
如果WAN链路不发生拥塞,没有必要划分数据流的优先顺序。 如果WAN链路经常发生拥塞,划分数据流的优先顺序可能解决不了问题,更合适的解决方案是增加带宽。·制定排队策略:
1.为所有用户提供合适的服务级别 2.节省昂贵的WAN费用·RTP(Real-Time Protocol):实时传输协议
RTP传输多媒体应用的数据流,包括IP语音和视频(对延迟比较敏感的)·MQC(Modular QoS CLI(command line interface)):
MQC--模块化的QOS命令行 为我们配置QOS提供了一个统一的格式标准 区分服务可分为以下四大部分:-----------------------------------------------------------------------------------------分类和标记 限速(shaping&policy) 拥塞避免 QueuingACL GTS CAR RED FIFOPBR FRTS CBpolicing WRED PQNBAR CBshaping FB-WRED CQCBMARKING CB-WRED WFQ LLQ CBWFQ WRRQ------------------------------------------------------------------------------------------分类和标识的方法:
分类就是以预定的参数来区分帧或数据包,最常见的是按流量的类型来分类。
标记就是对区分出来的数据包打上相应的优先级
一、二层标记方法
COS--二层的服务类别7 保留6 保留5 语音流量4 视频会议3 呼叫信令2 高优先级数据1 中优先级数据0 尽力而为的传输二、三层标记方法
IP优先级--共8个分类,从0-7,0级最低,7级最高DSCP--区分服务代码点
使用ToS字段的前6个bit,共64个不同的优先级PHB--逐跳行为,取出13个DSCP值进行了标准化
AF--保证转发,定义了四种不同的类别,每种类别又定义了三种不同的丢弃概率EF--快速转发PBR:做了分类和设置优先级的工作。
注意:只能设置IP优先级,不能支持DSCP例一:
1、对VOIP流量设定IP优先级为52、对于5.5.5.0网段过来的,访问2.2.2.0的流量设定IP优先级为23、对于6.6.6.0网段过来的,访问2.2.2.0的流量设定IP优先级为1第一步:定义ACL
R1(config)#access-list 100 permit udp any any range 16384 32767 R1(config)#access-list 101 permit ip 5.5.5.0 0.0.0.255 2.2.2.0 0.0.0.255 R1(config)#access-list 102 permit ip 6.6.6.0 0.0.0.255 2.2.2.0 0.0.0.255第二步:定义route-map并打标记
R1(config)#route-map PBR 10R1(config-route-map)#match ip address 100R1(config-route-map)#set ip precedence 5R1(config)#route-map PBR 20
R1(config-route-map)#match ip address 101R1(config-route-map)#set ip precedence 2R1(config)#route-map PBR 30
R1(config-route-map)#match ip address 102R1(config-route-map)#set ip precedence 1第三步:调用
R1(config)#interface s0
R1(config-if)#ip policy route-map PBR CBMARKING例二:1、对VOIP流量,给予IP优先级52、对于telnet流量,给予IP优先级43、对于来自172.16.1.0的流量,给予IP优先级2步骤:
1、定义ACLR1(config)#access-list 100 permit udp any any range 16384 32767 R1(config)#access-list 101 permit tcp any any eq 23R1(config)#access-list 102 permit ip 172.16.1.0 0.0.0.255 any2、定义类别映射表
R1(config)#class-map [match-any|match-all] VOIPR1(config-cmap)#match access-group 100R1(config)#class-map [match-any|match-all] TELNET
R1(config-cmap)#match access-group 101R1(config)#class-map [match-any|match-all] NETWORK
R1(config-cmap)#match access-group 1023、定义策略映射表
R1(config)#policy-map XWXR1(config-pmap)#class VOIPR1(config-pmap-c)#set ip precedence 5R1(config-pmap)#class TELNETR1(config-pmap-c)#set ip precedence 4R1(config-pmap)#class NETWORKR1(config-pmap-c)#set ip precedence 24、调用
R1(config)#int s0R1(config-if)#service-policy input XWX#show policy-map
#show class-map#show policy-map interfaceclass-map默认是match-all
例三:
对于来自s1接口的流量,给予IP优先级1R1(config)#class-map [match-any|match-all] INTER
R1(config-cmap)#match input-interface s1 还可以匹配入站接口R1(config)#policy-map XWX
R1(config-pmap)#class INTERR1(config-pmap-c)#set ip precedence 1调用在出口
R1(config)#int s0R1(config-if)#service-policy input XWXNBAR(Network-Based Application Recognition基于网络的应用识别)
基于ACL的分类使用数据包的第3层和4层信息来对数据包进行分类。
NBAR可以根据第7层信息来对数据帧进行分类。
在定义class-map时使用match protocol命令时,就是使用了NBAR
例一:
在路由器入口,对于telnet流量,给予优先级3配置NBAR:
1、开启cefR1(config)#ip cef2、定义类别映射表
R1(config)#class-map [match-any|match-all] TELNETR1(config-cmap)#match protocol telnet 区别就在这里3、定义策略映射表
R1(config)#policy-map XWXR1(config-pmap)#class TELNETR1(config-pmap-c)#set ip precedence 34、调用
R1(config)#int s0R1(config-if)#ip nbar protocol-discoveryR1(config-if)#service-policy input XWX注意事项:
使用NBAR,必须先启用CEF特性config)#ip cef使用NBAR,接口模式下必须打开 (match 字段中有protocol时就表示使用了NBAR)ip nbar protocol-discovery 必须在接口下开启这一命令 R1(config)#ip nbar port-map http tcp 80 8080 指定http协议对应的端口,不仅仅是默认的,还可以扩展 例二、禁止访问新浪、禁止下载JPG图片class-map match-any DROP
match protocol http host 过滤本网站的流量 match protocol http url *.jpg|*.gif 还可以抓网页上的图片R1(config)#policy-map XWX
R1(config-pmap)#class DROPR1(config-pmap-c)#dropR1(config)#int s0
R1(config-if)#service-policy input XWX PDLM(packet description language module)包描述语言模块,一种扩展的技术,可以让路由器直接对某种应用程序流量或新的协议流量进行识别,而不需要更换IOS或重启路由器。PDLM模块由cisco的工程师开发,需要先下载进flash中,再进行加载。
例三:
在网络中过滤掉BT流量R1(config)#ip nbar pdlm bt.pdlm -------灌入抓BT的PDLM。装入之后就可以在class map中调用了
R1(config)#class-map match-any DROP
R1(config-cmap)#match protocol pdlm btR1(config)#policy-map XWXR1(config-pmap)#class DROPR1(config-pmap-c)#dropR1(config)#int s0
R1(config-if)#service-policy input XWX----------------------------------------------------------------------------------
----------------------------------------------------------------------------------排队技术从三个步骤上来学习:1、分类2、加队3、调度FIFO:first in first out queuing 先进先出队列
分类:不对报文进行分类
加队:按数据包到达的先后顺序进行加队,按尾丢弃原则丢弃。调度:按数据包到达的先后顺序进行出队·FIFO(First In First Out) 排队是一种经典的分组传输算法。
分组的传输顺序与接收顺序相同。现今仍是大部分接口的默认设置。(大于2M的基本都是)默认2M以下都是WFQ R1(config-if)#no fair-queue 在接口启用FIFOshow interface e0 查看
FIFO输出队列的缓存中默认只容纳40个包,可以修改。
R1(config-if)#hold-queue 50 outPQ:优先级队列
共有四个队列,分为四个优先级别,默认的流量都是normal优先级分类:1high 2medium 3normal 4low 默认所有流量都走normal队列加队:在每一个队列中还是按照fifo的原则加队,按尾丢弃原则丢弃。
调度:只要高优先级有流量就发高优先级的,只到高优先级的数据发完再发低优先级的数据,这样就有可能造成低优先级的数据无带宽可用。实验:
要求在路由器的出接口将telnet流量放入high队列 将icmp流量放入medium队列Access-list 100 permit icmp any any
R1(Config)# priority-list 1 protocol ip high tcp telnet 将telnet流量的优先级置为high
R1(Config)# priority-list 1 protocol ip medium list 100 调用访问列表将icmp的优先级置为normalR1(Config-if)#priority-group 1 接口下调用
priority-list 1 queue-limit 22 44 66 88 定义每一个队列的座位数,队列1为22个,队列4为88个
priority-list 1 interface s0 [high|medium|normal|low] 按接口来进行分类,也就是说把一个接口来的数据都放进一个队列,太过粗略
priority-list 1 default [high|medium|normal|low] 设置默认
Show int e0 看每一个队列有多少个座位,也就是能容纳多少个包
Show queueing (看所有队列)Show queueing priorityDebug priority 再使用telnet和ping来测试CQ Custom queue
分类:1~16队列 再加上一个优先队列0级队列 共17个队列 0级和其它级的关系相当于PQ加队:自定义加队,不同的流量加不同的队列。在每一个队列中还是按照fifo的原则加队,按尾丢弃原则丢弃。调度:轮循,第一个传完就传第二个,默认1500个字节,可以修改每个队列的传输字节数先有1000个字节,再来1000,还是会传例:将VOIP流量设为优先队列,将telnet流量置为队列1,将ICMP流量置为队列2access-list 100 permit udp any any range 16384 32767
access-list 101 permit icmp any anyR1(Config)# queue-list 1 protocol ip 0 list 100
R1(Config)# queue-list 1 protocol ip 1 tcp telnet 将telnet流量置为队列1R1(Config)# queue-list 1 protocol ip 2 list 101注意:在定义CQ时,最好由小到大一个个来定义,否则可能出错
R1(Config-if)#custom-queue-list 1 接口下调用
R1(Config)# queue-list 1 queue 0 byte-count 800
R1(Config)# queue-list 1 queue 1 byte-count 1600 设置本队列每次可传的字节数R1(Config)# queue-list 1 queue 1 limit 50 设置本队列的座位数show queueing custom
Debug custom-queueshow interface e0/0扩大优先级队列的范围 :
R1(Config)#queue-list 1 lowest-custom 1 不推荐打0 一般打2 这样的话队列0和队列1同其它队列就相当于是PQ的关系默认没有分类的流量走的是低级队列的第一个队列。默认就是走1级队列。
WFQ(Weighted Fair Queuing) 加权公平队列(基于流的)
分类标准:按流来分,而不是按类来分2层 源和目标的mac地址3层 源和目标的ip地址,还有协议类型 4层 源和目标的端口号流的五元组:源IP、目标IP、源端口号、目标端口号、协议·WFQ算法将数据流划分成流,这是根据分组报头中的地址实现的。
源/目标网络地址(MAC地址)(套接字)(DLCI)加队:默认总共只有256个队列,共享缓存,统一调度座位
CDT:congestive discard threshold 缓存中容纳包的下限
当缓存中的数据包小于这个值时,不采取任何限制措施 当缓存中的数据包大于这个值时,采用以下方法来限制后续数据包: 1、如果后续数据包属于最长队列,则被drop 2、如果后续数据包不属于最长队列,则直接将这个包加入HQO:hold-Queue out limit 缓存中容纳包的上限
如果缓存中的数据包超过HQO值,又来了一个包,则采取以下措施: 1、如果这个包属于最长队列,则被drop 2、如果这个包不属于最长队列,则去掉最长队列中的一个包,再将这个包加入其所属队列调度:
·基于流的WFQ在传输数据之前,将各个会话的分组放到公平队列中。·WFQ给每个数据包指定一个权重(also called finish time),权重决定了队列中分组的传输顺序。权重小的数据包得到优先传送,权重是根据公式得到的,FT和SN算法
·WFQ在调度时首先传输权重小的分组。包的尺寸越小,其权重也就越小。所以小尺寸的包往往被优先传送。
·小容量流量发送后,各大容量共享余下的链路带宽。
·对于有优先级的包的处理:要计算其权重的时候会使用其虚拟包大小来计算。
virtual packet size=real packet/(ip precedence+1)实际上等于减小了权重
虚拟包大小=实际包大小/(ip优先级+1)从以上公式可以看出:优先级越大,计算出的权重越小
·WFQ可确保每个数据报都能占用适当的带宽。
大小相同的文件传输将获得相同的带宽,而不是先到的文件占用大量带宽。·WFQ给每个会话分配一个队列,队列优先级分7种。
配置:
R2(config-if)#fair-queue (接口启用WFQ) (s口默认是开启的,E口默认是FIFO)R2#show interfaces ethernet 0/0
....Queueing strategy: weighted fair·速率不超过E1(2.048Mbps)的Serial口默认使用WFQ。
在使用X.25或压缩PPP的Serial,WFQ被禁用。 E3/T3 (34M/45M)的WAN接口和Serial不支持WFQ。修改默认的队列数:
R2(config-if)#fair-queue 256 512 6 注意最后这一参数表示为RSVP预留的队列数 CDT 队列数 R2(config-if)#hold-queue 2000 out 修改允许的座位数HQO值,默认最大是1000show queueing interface
show queueing fairLink queue:为系统保留的
Reserved queue:保留队列,为RSVP保留的CBWFQ(Class-Based Weighted Fair Queuing)
·CBWFQ拓展了标准WFQ的功能,支持用户自定义的数据流类别。
可以根据多种条件来定义数据流类别。(协议/ACL/输入接口) CBWFQ最多只有64个类别,默认每个队列中能缓存64个包。·CBWFQ给每个类别(而不是流)指定权重,它与分配给类别的带宽呈反比。
·默认情况下,分配给所有类别的带宽总和不能超过接口可用带宽的75%。
余下的25%用于传输控制数据流和路由选择数据流。实验一:
Voip 30%Http 20%Other ......25%1、分类:
R1(config)#class-map voipR1(config-)#match ip rtp 16384 16383R1(config)#access-list 111 permit tcp any any eq www
R1(config)#class-map httpR1(config-)#match access-group 1112、策略:
policy-map CBWFQ class voip bandwidth percent 30 percent参数代表总带宽的百分比,remaining参数代表可用带宽的百分比 class http bandwidth percent 20 class class-default 设置其它流量占用20%带宽 bandwidth percent 253、调用:
service-policy output CBWFQ 调用还可以在最后一个队列中单独使用WFQ,用了后,就不能指定带宽了
policy-map CBWFQ class class-default fair-queuemax-reserved-bandwidth 100 这个值默认是75%,如果你想用到100%,必须打上这一命令
实验二:
·需求:普通199.1.1.0/24 ->20%
Voice (Critial)->50% VOIP的流量已经被标记了优先级5 Other ->30%1)定义普通用户的流量:
access-list 1 permit 199.1.1.0 0.0.0.2552)将前2种流量放入Class-map:
class-map match-all VOICE match ip precedence 5 将优先级为5的包找出来 class-map match-all NORMAL match access-group 13)为3种流量设定百分比:
policy-map CBWFQ class NORMAL bandwidth percent 20 class VOICE bandwidth percent 50 class class-default bandwidth percent 304)在接口调用:
interface Serial0/0 max-reserved-bandwidth 100 (因为默认是只能使用总带宽的75%,如果想用所有带宽,必须使用这一命令,对所有带宽进行划分) service-policy output CBWFQ默认情况下,带宽的25%用于网络控制流量,只有75%用于数据的传输
R2#show class-map R2#show policy-map R2#show policy-map interfaceLLQ(Low Latency Queuing)在WFQ的基础上增加了一个优先队列
·CBWFQ虽然能够为各种类别的流量提供带宽的保证,但却不能提供低延迟的传输保证。·低延迟队列:LLQ将绝对优先队列技术应用于CBWFQ,能够提供低延迟的传输保证。从而缓和了语音会话的抖动。绝对优先队列主要被用来处理对延迟敏感的数据(如语音)。
使用这种LLQ特性后,将首先发送对延迟敏感的数据,也就是LLQ中的数据。这种数据发送完毕后才发送其他队列中的分组。·虽然可以将多种不同的实时数据流加入到Priority队列中,但Cisco建议只将语音流加入到这种队列中。
例一:policy-map WAN-EDGE class VOICE priority percent 33 设定语音流量占用33%的带宽,并放入LLQ队列 class CALL-SIGNALING bandwidth percent 20 class MISSION bandwidth percent 20 class class-default fair-queue 对其它的流量应用WFQ例二:
policy-map WAN-EDGE class VOICE priority 540 指定语音流量占用540K带宽 class VIDEO priority 460 指定视频流量占用460K带宽 class CALL-SIGNALING bandwidth percent 2 class MISSION bandwidth percent 20 class class-default fair-queue例三:
policy-map WAN-EDGE class VOICE priority percent 33 class NISSION bandwidth remaining percent 50 剩余百分比语句,划分去掉优先级队列所占带宽之后的带宽 class class-default bandwidth remaining percent 50可用带宽=实际带宽*0.75
其它队列的可用带宽=实际带宽*0.75-分配给语音的带宽<CBWFQ/WFQ的对比>
与基于流的WFQ相比,CBWFQ具有以下优点:
·带宽分配:CBWFQ能够给每个类别分配带宽,最多可以定义64个类别 WFQ只能根据7种IP优先级来对数据流进行分类。·粒度更细、可扩展性更高:CBWFQ可根据多种条件来定义类别。
<RTP优先队列>队列中真正的老大RTP优先队列可以和WFQ或CBWFQ结合使用
RTP优先队列只能为UDP流量服务
这个队列在接口下直接配置,实际上就是在接口下划出一部分带宽给特定UDP流量来使用,实际上主要是为VOIP流量服务
·RTP(Real-Time Protocol):实时传输协议
RTP传输多媒体应用的数据流,包括IP语音和视频(对延迟比较敏感的)语音进程的端口号:16384-32767之间的偶数 奇数的是控制端口,偶数的是数据端口
R1(config-if) #ip rtp priority 16384 16383 50 最后这个参数是分配的带宽值
WRRQ(Weighted Round-Robin加权轮询队列)
主要用于交换机的技术3550每一个端口下都有四个队列,每个队列默认占用25%的带宽,采用轮询的方式来调度。可以把第四个队列配置成绝对优先队列,只有绝对优先队列中的数据处理完成后,才会传输其它队列的数据。配置实例:
需求:将优先级为0、1的数据帧放入队列一中将优先级为2、3的数据帧放入队列二中将优先级为4、5的数据帧放入队列三中将优先级为6、7的数据帧放入队列四中SW1(config)#mls qos 启用命令,必须打上
SW1(config-if)#wrr-queue cos-map 1 0 1 定义映射表,将cos 0和1映射到队列1SW1(config-if)#wrr-queue cos-map 2 2 3SW1(config-if)#wrr-queue cos-map 3 4 5 SW1(config-if)#wrr-queue cos-map 4 6 7SW1#sh mls qos int f0/1 queueing 查看
可以配置四个队列的权值,使其得到不同的服务
SW1(config-if)#wrr-queue bandwidth 1 2 3 4队列1得到10%的带宽队列2得到20%的带宽队列3得到30%的带宽队列4得到40%的带宽SW1(config-if)#priority-queue out 启用绝对优先队列
配置入站信任
SW1(config-if)#mls qos trust cosSW1(config-if)#mls qos trust dscpSW1(config-if)#mls qos trust ip-precedenceSW1(config-if)#mls qos trust device cisco-phone当信任入站的COS和IP优先级时,会映射到相应的内部DSCP值,在交换机上根据内部的DSCP值来决定相应的出站QOS策略。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------限速策略:
可分为两种:policing和shapingpolicing的特点:会将超出的流量直接drop掉,所以接口的流量输出图形是锯齿状,不平滑的。但是工作原理简单,占用系统资源少。
shaping的特点:会将超出的流量先缓存起来,等到有可用带宽的时候,再发送出去,所以接口的流量输出是非常平滑的,但是占用的系统资源比较多。
Shaping mechanisms:
Generic traffic shaping (GTS)通用流量整型Frame Relay traffic shaping (FRTS)帧中继流量整型 Class-based shapingPolicing mechanisms:Committed access rate (CAR)Class-based policing令牌桶理论:
TC:time comminted 间隔时间,也就是放令牌的周期时间。BC:burst committed 承诺突发量,也叫正常突发量,单位bitBe:burst excess 超出的突发量,相当于存钱罐,可以将超出的令牌存起来。CIR:commited infromation rate,单位Kbps。承诺信息速率TC=BC/CIR
每Tc秒向桶中放入Bc这么多的令牌CIR承诺信息速率,也就是你实际想要控制的速率Shaping mechanisms:
GTS Building Blocks通用流量整型
GTS Overview
GTS is multiprotocol.
GTS uses WFQ for the shaping queue. 默认是WFQ,不能改GTS can be implemented in combination with any queuing mechanisms:可以配合以下的软件Q使用FIFO queuingPriority queuing (PQ)Custom queuing (CQ)Weighted fair queuing (WFQ)GTS works on output only. 只能工作在出方向GTS Implementation
Traffic-shape group shapes outbound traffic matched by the specified access list.Several traffic-shape group commands can be configured on the same interface.The traffic-shape rate and traffic-shape group commands cannot be mixed on the same interface.A separate token bucket and shaping queue is maintained for each traffic-shape group command.Traffic not matching any access list is not shaped.
configuration GTS
例一:
要求将接口速率限制为64KR1(config-if)#traffic-shape rate 64000 8000 8000 1000 ---------- 启用GTS,设置CIR为64000。
CIR Bc Be buffer(shape Q中的座位数)关键是CIR的值,其它会自动计算,可以不指定#show traffic-shap serial 0
例二:
对于1.1.1.0网段的用户访问2.2.2.0网段进行限速,限为64KR1(config)#access-list 100 permit ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255
R1(config-if)#traffic-shape group 100 64000#show traffic-shape
#show traffic-shape queue 查看shape队列GTS帧中继适应性整型(GTS Frame Relay Congestion Adaptability)
FECN (Forward explicit congestion notification) 前向显示拥塞通告 帧中继交换机通告receive方
BECN (Backward explicit congestion notification) 后向显示拥塞通告 交换机通告send方 CLLM (Consolidated link layer management) DE(Discard Eligibility)bitDE:一旦帧中继有一个DE位置位,而且发生拥塞,那么就丢掉DE位的帧。
GTS在帧中继中可以做适应性的整型,如果收到BECN就降低到3/4,如收不到则回升。
注意:在做帧中继适应性整型命令之前,首先要做正常的GTS流量×××,说明接口的限制速率。
if)#traffic-shape adaptive [bit-rate] ---------- 启用帧中继适应性整型命令,还可以在这里设置当发生拥塞时,最少可低至多少流速
if)#traffic-shape adaptive 12800 当发生拥塞时,最少可低到12800bit/Sshow traffic-shape 可以查看到BECN显示出来了
traffic-shape fecn-adapt ----- 在接收方配置,在某些情况下,发过来的是单向流量,没有回包,产生拥塞时,无法通知发送方,用这一命令可让接收方在收到FECN置位的数据帧后发送一个测试信息,用来通知发送方产生了拥塞。
例三:
要求将路由器的出接口速率限定为256K,并启用帧中继的适应性×××,一旦收到BECN,则可将速率最低降到64K。interface s0/0 traffic-shape rate 256000 traffic-shape adaptive 64000FRTS Overview 帧中继流量整型 可以在帧中继中为每一个PVC管道做整型
FRTS is multiprotocol.在接口上启用了FRTS后,不能使用WFQ,只能是FIFO,CISCO的胶片上有错误FRTS can use one of these queuing mechanisms as the shaping queue:shap Q可以选以下任一种Priority queuing (PQ)Custom queuing (CQ)Weighted fair queuing (WFQ)FRTS can be implemented only in combination with only FIFO on the interface.FRTS works on output only. 也只能工作在出方向配置:
第一步:R1(config-if)#frame-relay traffic-shaping 在接口上启用FRTS第二步:
在帧中继中必须在map-class中去改CIRR1(config)#map-class frame-relay FRTS R1(config-map-class)#frame-relay traffic-rate average[peak] 看下面的示例R1(config-map-class)#frame-relay traffic-rate 64000 80000 如果两个值相同,等于没有BeR1(config-map-class)#frame-relay traffic-rate 64000 64000 这种情况等于没有Be另一种写法
R1(config-map-class)#frame-relay [in|out] cir 64000 分别指定,以下三条命令等于上面一条R1(config-map-class)#frame-relay [in|out] BC 8000R1(config-map-class)#frame-relay [in|out] BE 8000show traffic-shaping第三步:
R1(config-if)#frame-relay class FRTS 在接口下调用,对本接口下的所有VC均有效在一条PVC中单独调用:
R1(config-if)#frame-relay interface-dlci 104 R1(config-if-dlci)#class FRTS 在PVC下单独调用和修改也可以做适应性的流量×××:
R1(config)#map-class frame-relay FRTS R1(config-map-class)#frame-relay adaptive-shaping becn ----------- FR中启用适应性的整型,也就是让路由器根据收到的BECN量调整其发送速率。单独针对一条PVC起效R1(config-map-class)#frame-relay cir 128000 适应性整型时指定cir
R1(config-map-class)#frame-relay minicir 16000 适应性整型的最低速率,通常和上一条命令结合用。FRTS的shape queue默认也是WFQ
EIR=Be/Tc
实验:
需求:R1通过两条PVC连接了R4和R5,现要求对这两条PVC做限速。
对于PVC104,将其速率限制为256K。 对于PVC105,将其速率限制为128K。并启用帧中继适应性流量×××,最小速率不低于32K。 map-class frame-relay WOLF frame-relay traffic-rate 256000 256000!map-class frame-relay PVC104 frame-relay traffic-rate 256000 256000!map-class frame-relay PVC105 frame-relay cir 128000 frame-relay mincir 32000 frame-relay adaptive-shaping becninterface Serial1/0
encapsulation frame-relay frame-relay traffic-shaping frame-relay interface-dlci 102 class PVC102 frame-relay interface-dlci 103 class PVC103CBshaping
CBshaping可以对出接口的流量进行分类,然后对每一类流量进行限速。在CBshaping中可以指定平均速率,也可以指定最大速率。例:
1、对VOICE流量,设定平均速率为64K2、对于1.1.1.0网段访问2.2.2.0网段的流量,设定最大速率为32K第一步:定义ACL,抓出流量
access-list 100 permit udp any any range 16384 32767access-list 101 permit ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255第二步:定义class-map,将流量分类
class-map VOIP match access-group 100class-map NET match access-group 101第三步:定义策略,对不同类别的流量给予不同的速率
policy-map CBSHAPE class VOIP shape average 64000 class NET shape peak 32000第四步:接口下调用
int e0/0 service-policy output CBSHAPEshow policy-map interface s0
shape max-buffers 2000 -------- 修改的buffers数,默认值为1000。
Policing mechanisms:
CAR可以做在进方向也可以做在出方向。可以单独针对某一个流量作限速,还可决定拿到牌的和没拿到牌的分别作什么动作-Transmit-Continue-DropCAR没有BE的情况下:
If the number of bytes in the packet is less than or equal to(<=)the number of tokens in Bucket1,the packet conforms,CAR removes tokens from Bucket1 equal to the number of bythes in the packet and performs the action for packets that conformCAR中有Be的情况下:
DA-actual debt 真实债务,向第二个桶所借的实际令牌数,DA是累加的,直到新令牌放进来DC-compounded debt 符合债务DC=原DC+当前DA当DC<=Be时,这个包就属于comform-action
当DC>Be时,这个包就属于exceed-action,同时将DC置0 例一:对所有流量都控制,没有分类if)#rate-limit input 64000 1500 2000 conform-action transmit exceed-action drop
#show interface rate-limitshaping中BC和BE是用单位bit
例二:对一类特定的流量做限制
要求在出接口做 CARspeed:64KpbsTraffic:192.168.1.0/24 any udp 4000 5000(端口号4000-5000)Token:prec=3NO Token:Dropaccess-list 100 permit udp 192.168.1.0 0.0.0.255 any range 4000 5000
int s0/0
rate-limit output access-group 100 64000 1500 2000 conform-action set-prec-transmit 3 exceed-action drop CIR Bc Bc+Be 拿到令牌的 设置优先级 没令牌的drop掉#show interface rate-limit
注意:这里Bc和Be的单位是BYTE,切记,在shaping中,单位是bit,在policy中,单位是byte
set-prec-transmit 如果这里用的是set-prec-continue 则表示可以继续向下找更优的语句例三:说明continue的作用
要求:1、对于接口的VOIP流量要求控制在128K,拿到令牌的,直接传递,没牌的向下匹配2、将出接口的总速率控制在640K,拿到令牌的传递,其他的dropaccess-list 100 permit udp any any range 16384 32767
rate-limit output access-group 100 128000 1500 2000 conform-action transmit exceed-action continue
rate-limit output 640000 1500 2000 conform-action transmit exceed-action drop CBpolicing-conforms 拿到令牌的就是conforms-exceeds 在只有一个桶的情况下,没拿到令牌的就是exceeds,两个桶的情况下,借了第二个桶的令牌的就是exceeds-violates 在有两个桶的情况下才有用,当两个桶的令牌都用完了,再来的数据包就是violates一类了例:对于VOICE流量,设传输速率为64K,拿到令牌的设为EF优先级,并传输,借用令牌的,只作为普通包传输,没牌的drop掉。第一步:
access-list 100 permit udp any any range 16384 32767第二步:
class-map VOIP match access-group 100第三步:
policy-map WOLF class VOIP police cir 64000 conform-action set-dscp-transmit ef exceed-action transmit violate-action drop 拿到令牌的设为ef优先级,借用令牌的只作为普通包传输,没牌的丢掉第四步:
int s0/0service-policy input WOLF 调用show policy-map interface s0/0
-----------------------------------------------------------------------------------------
WRED(Weighted Random Early Detection)·TCP中存在一个慢启动和拥塞避免机制,当检测到网络中发生冲突的时候,会大幅度降低发送速率·当网络中发生拥塞,有可能同时丢失多个TCP连接的数据包,造成多个TCP连接同时进入慢启动状态,这被称为TCP全局同步·解决方法:可以在网络发生拥塞之前,就主动丢弃一部分TCP数据包,防止出现尾丢弃,从而避免进入慢启动·默认设置尾丢弃是一种被动的队列管理机制。
主动队列管理机制在拥塞发生前就丢弃分组。·基本思想:确保队列长度位于最小阈值和最大阈值之间,对于不同类别的数据流采用不同丢弃策略。
丢弃概率:1/10R2(config-if)#random-detect 启用开关
random-detect precedence 6 45 50 5 设优先级为6的包在队列填充到45和50之间时开始丢弃
5表示按1/5的概率丢弃random-detect dscp-based show queueing random-detectrandom-detect exponential-weighting-constant N 默认是9
N值越大,WRED就越不敏感,最后导致失效,N值越小,会导致包被丢掉的概率越大注意:默认情况下,启用WRED后只能使用FIFO
FB-WRED
使用流来分类,默认最多可分256个流int s0/0random-detect flow 开启开关random-detect flow count 256 设定可分的流的数目show queueing random-detect
CBWRED即可对TCP,也可对非TCP流量,必须结合CBWFQ来做
例:将优先级为3、4 的数据包分为一个类别GOLD、带宽30%
当队列中数据包达到20个时,以1/10的概率丢弃优先级为3的包,达到40个时尾丢弃 当队列中数据包达到30个时,以1/10的概率丢弃优先级为4的包,达到40个时尾丢弃将优先级为1、2 的数据包分为一个类别SILVER、带宽20%
当队列中数据包达到15个时,以1/10的概率丢弃优先级为1的包,达到35个时尾丢弃 当队列中数据包达到20个时,以1/10的概率丢弃优先级为2的包,达到35个时尾丢弃对于默认队列,启用WFQ,WRED
class-map GOLD
match ip precedence 3 4class-map SILVER match ip precedence 1 2policy-map POLICY1
class GOLD bandwidth percent 30 random-detect random-detect precedence 3 20 40 10 random-detect precedence 4 30 40 10 class SILVER bandwidth percent 20 random-detect random-detect precedence 1 15 35 10 random-detect precedence 2 20 35 10 class class-default fair-queue random-detectshow policy-map
show policy-map interface s0/0以上的例子是基于优先级来做的,如果基于DSCP,开启的命令是不一样的
policy-map POLICY1
class GOLD bandwidth percent 30 random-detect dscp-based random-detect precedence 31 20 40 10 random-detect precedence 41 30 40 10 class SILVER bandwidth percent 20 random-detect dscp-based random-detect precedence 11 15 35 10 random-detect precedence 21 20 35 10 class class-default rair-queue random-detect dscp-based------------------------------------------------------------------------------------------
QPPB:QoS Policyrouter bgp 300
table-map mark-prec4-as400!route-map mark prec4-as400 10match as-path 1set ip precedence 4!route-map mark prec4-as400 20set ip precedence 0!ip as-path access-list 1 permit 400!interface serial 0bgp-policy destination ip-prec-map!----------------------------------------------------------------------
压缩int s0/0ip tcp header compression TCP的头部压缩show ip tcp header compressionint s0/0
ip rtp header-compression RTP的头部压缩show ip rtp header-comression在帧中继接口下:
int s0/0frame-relay ip tcp header-compression TCP头部压缩frame-relay ip rtp header-compression RTP头部压缩其它内容------------------------------if)#no fair-queue(改为FIFO队列)if)#hold-queue 100 out(更改缓存大小)
Priority Queuing
priority-list