QOS(Quality Of Server)(在拥塞时才用) 哪些问题会影响网络的数据传输 解决可用带宽的方法: 延迟的分类:端到端延迟分为 注意:只有排队延迟可以通过使用QOS来进行控制 解决抖动: 丢包:伪丢弃 排队满 将后续的包丢弃 不分优先级 QOS服务模型: IntServ 资源预留的过程分为5步: 路由器对数据包的处理过程: 资源预留方式可分为两类: 需要一个PDP(policy Decision Point策略决策点)来集中完成网络对RSVP请求的许可控制。 配置: R2(config)#interface S0 R3(config)#interface S0 show ip rsvp interface DiffServ 缺点:没有绝对的服务保证,机制复杂。 语音进程的端口号:16384-32767之间的偶数 奇数的是控制端口,偶数的是数据端口 ·确定数据流的优先顺序。对延迟敏感的流量赋予高的优先级。 ·制定排队策略: ·RTP(Real-Time Protocol):实时传输协议 ·MQC–模块化的QOS命令行 分类和标识的方法: 分类是以特定的优先级或预定的参数来区分帧或数据包 标记就是对区分出来的数据包打上相应的优先级 一、二层标记方法 二、三层标记方法 标在IP头中 同IEEE802.1P DSCP–区分服务代码点 PHB–逐跳行为,取出13个DSCP值进行了标准化 PBR:做了分类和设置优先级的工作。 例子: 第一步:定义ACL 第二步:定义route-map并打标记 R1(config)#route-map PBR 20 R1(config)#route-map PBR 30 第三步:调用 R1(config)#interface s0 MQC(Modular QoS CLI(command line interface)): CBMARKING 步骤: 2、定义类别映射表 R1(config)#class-map [match-any|match-all] TELNET R1(config)#class-map [match-any|match-all] NETWORK 3、定义策略映射表 4、调用 #show policy-map class-map默认是match-all 例二: R1(config)#class-map [match-any|match-all] INTER R1(config)#policy-map XWX 调用在出口 NBAR(Network-Based Application Recongnition基于网络的应用识别) 例一: 配置NBAR: 2、定义类别映射表 3、定义策略映射表 4、调用 注意事项: R1(config)#ip nbar port-map http tcp 80 8080 指定http协议对应的端口,不仅仅是默认的,还可以扩展 例二、禁止访问新浪、禁止下载JPG图片 class-map match-any DROP R1(config)#policy-map XWX R1(config)#int s0 PDLM(packet description language module) 包描述语言模块,一种扩展的技术,可以让路由器直接对某种应用程序流量或新的协议流量进行识别,而不需要更换IOS或重启路由器。PDLM模块由cisco的工程师开发,需要先下载进flash中,再进行加载。 例三: R1(config)#ip nbar pdlm bt.pdlm ——-灌入抓BT的PDLM。装入之后就可以在class map中调用了 R1(config)#class-map match-any DROP R1(config)#int s0 ———————————————————————————- 更多内容可关注老胳膊博客 FIFO:first in first out queuing 先进先出队列 分类:不对报文进行分类 ·FIFO(First In First Out) 排队是一种经典的分组传输算法。 R1(config-if)#no fair-queue 在接口启用FIFO show interface e0 查看 FIFO输出队列的缓存中默认只容纳40个包,可以修改。 PQ:优先级队列 加队:在每一个队列中还是按照fifo的原则加队,按尾丢弃原则丢弃。 实验: Access-list 100 permit icmp any any 抓出所有icmp的流量 R1(Config)# priority-list 1 protocol ip high tcp telnet 将telnet流量的优先级置为high R1(Config-if)#priority-group 1 接口下调用 R1(Config)# 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 看每一个队列有多少个座位,也就是能容纳多少个包 CQ Custom queue access-list 100 permit udp any any range 16384 32767 语音流量 R1(Config)# queue-list 1 protocol ip 0 list 100 注意:在定义CQ时,最好由小到大一个个来定义,否则可能出错 R1(Config-if)#custom-queue-list 1 接口下调用 R1(Config)# queue-list 1 queue 0 byte-count 800 show queueing custom 扩大优先级队列的范围 : 默认没有分类的流量走的是低级队列的第一个队列。默认就是走1级队列。 WFQ(Weighted Fair Queuing) 加权公平队列(基于流的) ·WFQ算法将数据流划分成流,这是根据分组报头中的地址实现的。 加队:默认总共只有256个队列,共享缓存,统一调度座位 1000个包 CDT:congestive discard threshold 缓存中容纳包的下限 HQO:hold-Queue out limit 缓存中容纳包的上限 调度: ·WFQ给每个数据包指定一个权重(also called finish time),权重决定了队列中分组的传输顺序。权重小的数据包得到优先传送,权重是根据公式得到的,FT和SN算法 ·WFQ在调度时首先传输权重小的分组。包的尺寸越小,其权重也就越小。所以小尺寸的包往往被优先传送。 ·小容量流量发送后,各大容量共享余下的链路带宽。 ·对于有优先级的包的处理:要计算其权重的时候会使用其虚拟包大小来计算。 virtual packet size=real packet/(ip precedence+1)实际上等于减小了权重 从以上公式可以看出:优先级越大,计算出的权重越小 ·WFQ可确保每个数据报都能占用适当的带宽。 ·WFQ给每个会话分配一个队列,队列优先级分7种。 配置: R2#show interfaces ethernet 0/0 ·速率不超过E1(2.048Mbps)的Serial口默认使用WFQ。 修改默认的队列数: show queueing interface Link queue:为系统保留的 CBWFQ(Class-Based Weighted Fair Queuing) ·CBWFQ拓展了标准WFQ的功能,支持用户自定义的数据流类别。 ·CBWFQ给每个类别(而不是流)指定权重,它与分配给类别的带宽呈反比。 ·默认情况下,分配给所有类别的带宽总和不能超过接口可用带宽的75%。 实验一: 1、分类: R1(config)#access-list 111 permit tcp any any eq www 2、策略: 3、调用: 还可以在最后一个队列中单独使用WFQ,用了后,就不能指定带宽了 max-reserved-bandwidth 100 这个值默认是75%,如果你想用到100%,必须打上这一命令 实验二: ·需求:普通199.1.1.0/24 ->20% 1)定义普通用户的流量: 2)将前2种流量放入Class-map: 3)为3种流量设定百分比: 4)在接口调用: 默认情况下,带宽的25%用于网络控制流量,只有75%用于数据的传输 LLQ(Low Latency Queuing)在WFQ的基础上增加了一个优先队列 ·低延迟队列:LLQ将绝对优先队列技术应用于CBWFQ,能够提供低延迟的传输保证。从而缓和了语音会话的抖动。绝对优先队列主要被用来处理对延迟敏感的数据(如语音)。 ·虽然可以将多种不同的实时数据流加入到Priority队列中,但Cisco建议只将语音流加入到这种队列中。 例一: 例二: 例三: 可用带宽=实际带宽*0.75 <CBWFQ/WFQ的对比> 与基于流的WFQ相比,CBWFQ具有以下优点: ·粒度更细、可扩展性更高:CBWFQ可根据多种条件来定义类别。 RTP优先队列可以和WFQ或CBWFQ结合使用 RTP优先队列只能为UDP流量服务 这个队列在接口下直接配置,实际上就是在接口下划出一部分带宽给特定UDP流量来使用,实际上主要是为VOIP流量服务 ·RTP(Real-Time Protocol):实时传输协议 语音进程的端口号:16384-32767之间的偶数 奇数的是控制端口,偶数的是数据端口 R1(config-if) #ip rtp priority 16384 16383 50 最后这个参数是分配的带宽值 WRRQ(Weighted Round-Robin加权轮询队列) 配置实例: SW1(config)#mls qos 启用命令,必须打上 SW1#sh mls qos int f0/1 queueing 查看 可以配置四个队列的权值,使其得到不同的服务 SW1(config-if)#priority-queue out 启用绝对优先队列 配置入站信任 当信任入站的COS和IP优先级时,会映射到相应的内部DSCP值,在交换机上根据内部的DSCP值来决定相应的出站QOS策略。 限速策略: 令牌桶: TC=BC/CIR CIR=Bc/Tc cir 64 tc 125=8000 bc Shaping mechanisms: GTS Overview GTS is multiprotocol. 三层协议 GTS Implementation Traffic-shape group shapes outbound traffic matched by the specified access list. configuration GTS 例一: R1(config-if)#traffic-shape rate 64000 8000 8000 1000 ———- 启用GTS,设置CIR为64000。 #show traffic-shap serial 0 例二: R1(config)#access-list 100 permit ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255 #show traffic-shape GTS帧中继适应性整型(GTS Frame Relay Congestion Adaptability) FECN (Forward explicit congestion notification) 前向显示拥塞通告 帧中继交换机通告receive方 DE:一旦帧中继有一个DE位置位,而且发生拥塞,那么就丢掉DE位的帧。 注意:在做帧中继适应性整型命令之前,首先要做正常的GTS流量×××,说明接口的限制速率。 if)#traffic-shape adaptive [bit-rate] ———- 启用帧中继适应性整型命令,还可以在这里设置当发生拥塞时,最少可低至多少流速 show traffic-shape 可以查看到BECN显示出来了 traffic-shape fecn-adapt —– 在接收方配置,在某些情况下,发过来的是单向流量,没有回包,产生拥塞时,无法通知发送方,用这一命令可让接收方在收到FECN置位的数据帧后发送一个测试信息,用来通知发送方产生了拥塞。 例三: FRTS Overview 帧中继流量整型 可以在帧中继中为每一个DLCI管道做整型 配置: 第二步: 另一种写法 第三步: 在一条PVC中单独调用: 也可以做适应性的流量×××: R1(config-map-class)#frame-relay cir 128000 适应性整型时指定cir FRTS的shape queue默认也是WFQ EIR=Be/Tc CBshaping 在CBshaping中可以指定平均速率,也可以指定最大速率。 例: 第一步:定义ACL,抓出流量 第二步:定义class-map,将流量分类 第三步:定义策略,对不同类别的流量给予不同的速率 第四步:接口下调用 show policy-map interface s0 shape max-buffers 2000 ——– 修改的buffers数,默认值为1000。 Policing mechanisms: CAR没有BE的情况下: CAR中有Be的情况下: 当DC<=Be时,这个包就属于comform-action 例一:对所有流量都控制,没有分类 if)#rate-limit input 64000 1500 2000 conform-action transmit exceed-action drop shaping中BC和BE是用单位bit 例二:对一类特定的流量做限制 access-list 100 permit udp 192.168.1.0 0.0.0.255 any range 4000 5000 int s0/0 #show interface rate-limit 注意:这里Bc和Be的单位是BYTE,切记,在shaping中,单位是bit,在policy中,单位是byte 例三:说明continue的作用 access-list 100 permit tcp any any eq www rate-limit output access-group 100 64000 1500 2000 conform-action transmit exceed-action continue CBpolicing 第一步: 第二步: 第三步: 第四步: show policy-map interface s0/0 —————————————————————————————– ·默认设置尾丢弃是一种被动的队列管理机制。 ·基本思想:确保队列长度位于最小阈值和最大阈值之间,对于不同类别的数据流采用不同丢弃策略。 R2(config-if)#random-detect 启用开关 random-detect precedence 6 45 50 5 设优先级为6的包在队列填充到45和50之间时开始丢弃 random-detect exponential-weighting-constant N 默认是9 注意:默认情况下,启用WRED后只能使用FIFO FB-WRED show queueing random-detect CBWRED即可对TCP,也可对非TCP流量,必须结合CBWFQ来做 例:将优先级为3、4 的数据包分为一个类别GOLD、带宽30% 将优先级为1、2 的数据包分为一个类别SILVER、带宽20% 对于默认队列,启用WFQ,WRED class-map GOLD policy-map POLICY1 show policy-map 以上的例子是基于优先级来做的,如果基于DSCP,开启的命令是不一样的 policy-map POLICY1 本文链接地址: Qos (Quality of server)
1、有限的带宽
2、延迟
3、抖动
4、丢包
1、升级带宽,增加链路带宽
2、让优先级高的流量先过
3、压缩二层的帧 不建议
4、压缩IP包的头部
1、处理延迟–网络设备将数据帧从入接口取出,将其放到接收队列,再放到出接口输出队列所需的时间
2、排队延迟–数据包在接口的输出队列中等待的时间 可控
3、串行化延迟–将封装在数据帧中比特放到物理介质上的时间 比特转换为电信号
4、传播延迟–通过物理介质传输数据帧中的比特所需的时间
解决延迟的方法:
1、增加链路带宽
2、让优先级高的流量通过
3、压缩 不建议
使用缓冲:解决的是抖动
解决方法:
1、升级链路带宽
2、为重要的数据有足够的带宽
3、拥塞之前丢弃不重要的数据包
1、尽力而为的服务–没有应用QOS,网络的默认行为
2、集成服务–所有的中间系统和资源都显式的为流提供预定的服务,这种服务需要预留网络资源,确保网络能够满足通信流的特定服务要求。
3、区分服务–将根据服务要求将通信流分类,然后将它们加入到效率不同的队列中,使一些通信流优先于其他类别的通信流得到处理。
集成服务是通过使用RSVP(Resource Reservation Protocol资源预留协议)实现的,在两个端点中间网络设备上都要启用RSVP。
工作原理–数据流在发送之前,起始节点会向网络请求特定类型的服务,并将其流量配置文件告诉网络中的每个中间节点,请求网络提供一种能够满足其带宽和延迟要求的服务。在从网络得到确认后,应用才开始发送数据。
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)–为所有源预留资源
缺点:不具有可扩展性,并且需要网络设备不断的发送信号,本身占用带宽。
R1(config)#interface e0
R1(config-if)#ip rsvp bandwidth 起用rsvp,默认使用75%的带宽做rsvp
R1(config-if)#ip rsvp bandwidth 500 只使用500K的带宽
R1(config)#interface S0
R1(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-if)#ip rsvp bandwidth
R2(config)#interface S1
R2(config-if)#ip rsvp bandwidth
R3(config-if)#ip rsvp bandwidth
R3(config)#interface S1
R3(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 installed
区分服务–能够提供满足不同QOS需求的多种服务等级。不需要显示的通知网络设备。
路由器对数据包的处理是逐跳行为
如果WAN链路不发生拥塞,没有必要划分数据流的优先顺序。
如果WAN链路经常发生拥塞,划分数据流的优先顺序可能解决不了问题,更合适的解决方案是增加带宽。
1.为所有用户提供合适的服务级别
2.节省昂贵的WAN费用
RTP传输多媒体应用的数据流,包括IP语音和视频(对延迟比较敏感的)
为我们配置QOS提供了一个统一的格式标准
COS–二层的服务类别 IEEE802.1P
7 保留
6 保留
5 语音流量
4 视频会议
3 呼叫信令
2 高优先级数据
1 中优先级数据
0 尽力而为的传输
IP优先级–共8个分类,从0-7,0级最低,7级最高
使用ToS字段的前6个bit,共64个不同的优先级
AF–保证转发,定义了四种不同的类别,每种类别又定义了三种不同的丢弃概率
EF–快速转发 101110 建议给语音用
注意:只能设置IP优先级,不能支持DSCP
1、对VOIP流量设定IP优先级为5
2、对于5.5.5.0网段过来的,访问2.2.2.0的流量设定IP优先级为2
3、对于6.6.6.0网段过来的,访问2.2.2.0的流量设定IP优先级为1
R1(config)#access-list 100 permit udp any any range 16384 32767 端口 抓的是VOIP的流量
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
R1(config)#route-map PBR 10
R1(config-route-map)#match ip address 100
R1(config-route-map)#set ip precedence 5
R1(config-route-map)#match ip address 101
R1(config-route-map)#set ip precedence 2
R1(config-route-map)#match ip address 102
R1(config-route-map)#set ip precedence 1
R1(config-if)#ip policy route-map PBR
MQC–模块化的QOS命令行
为我们配置QOS提供了一个统一的格式标准
要求:
1、对VOIP流量,给予IP优先级5
2、对于telnet流量,给予IP优先级4
3、对于来自172.16.1.0的流量,给予IP优先级2
1、定义ACL
R1(config)#access-list 100 permit udp any any range 16384 32767
R1(config)#access-list 101 permit tcp any any eq 23
R1(config)#access-list 102 permit ip 172.16.1.0 0.0.0.255 any
R1(config)#class-map [match-any|match-all] VOIP
R1(config-cmap)#match access-group 100
R1(config-cmap)#match access-group 101
R1(config-cmap)#match access-group 102
#show class-map
R1(config)#policy-map XWX
R1(config-pmap)#class VOIP
R1(config-pmap-c)#set ip precedence 5
R1(config-pmap)#class TELNET
R1(config-pmap-c)#set ip precedence 4
R1(config-pmap)#class NETWORK
R1(config-pmap-c)#set ip precedence 2
#show policy-map
R1(config)#int s0
R1(config-if)#service-policy input XWX
#show policy-map interface
#show class-map
#show policy-map interface
对于来自s1接口的流量,给予IP优先级1
R1(config-cmap)#match input-interface s1 还可以匹配入站接口
R1(config-pmap)#class INTER
R1(config-pmap-c)#set ip precedence 1
R1(config)#int s0
R1(config-if)#service-policy input XWX
基于ACL的分类使用数据包的第3层和4层信息来对数据包进行分类。
NBAR可以根据第7层信息来对数据帧进行分类。
match protocol时,就是用NBAR
对于telnet流量,给予优先级3
1、开启cef
R1(config)#ip cef
R1(config)#class-map [match-any|match-all] TELNET
R1(config-cmap)#match protocol telnet 区别就在这里
R1(config)#policy-map XWX
R1(config-pmap)#class TELNET
R1(config-pmap-c)#set ip precedence 3
R1(config)#int s0
R1(config-if)#ip nbar protocol-discovery
R1(config-if)#service-policy input XWX
使用NBAR,必须先启用CEF特性
config)#ip cef
使用NBAR,接口模式下必须打开 (match 字段中有protocol时就表示使用了NBAR)
ip nbar protocol-discovery 必须在接口下开启这一命令
match protocol http host www.sina.com.cn 过滤本网站的流量
match protocol http url *.jpg|*.gif 还可以抓网页上的图片
R1(config-pmap)#class DROP
R1(config-pmap-c)#drop
R1(config-if)#service-policy input XWX
在网络中过滤掉BT流量
R1(config-cmap)#match protocol pdlm bt
R1(config)#policy-map XWX
R1(config-pmap)#class DROP
R1(config-pmap-c)#drop
R1(config-if)#service-policy input XWX
———————————————————————————-
排队技术
从三个步骤上来学习:
1、分类
2、加队
3、调度
加队:按数据包到达的先后顺序进行加队,按尾丢弃原则丢弃。
调度:按数据包到达的先后顺序进行出队
分组的传输顺序与接收顺序相同。现今仍是大部分接口的默认设置。(大于2M的基本都是fifio)
默认2.048M以下都是WFQ
R1(config-if)#hold-queue 50 out
共有四个队列,分为四个优先级别,默认的流量都是normal
优先级分类:1high 2medium 3normal 4low 默认所有流量都走normal队列
调度:只要高优先级有流量就发高优先级的,只到高优先级的数据发完再发低优先级的数据,这样就有可能造成低优先级的数据无带宽可用。
要求在路由器的出接口将telnet流量放入high队列 将icmp流量放入medium队列
R1(Config)# priority-list 1 protocol ip medium list 100 调用访问列表将icmp的优先级置为normal
Show queueing (看所有队列)
Show queueing priority
Debug priority 再使用telnet和ping来测试
R2(config)#line vty 0 4
no login
分类:1~16队列 再加上一个优先队列0级队列 共17个队列 0级和其它级的关系相当于PQ
加队:自定义加队,不同的流量加不同的队列。在每一个队列中还是按照fifo的原则加队,按尾丢弃原则丢弃。
调度:轮循,第一个传完就传第二个,默认1500个字节,可以修改每个队列的传输字节数
先有1000个字节,再来1000,还是会传
例:将VOIP流量设为优先队列,将telnet流量置为队列1,将ICMP流量置为队列2
access-list 101 permit icmp any any
R1(Config)# queue-list 1 protocol ip 1 tcp telnet 将telnet流量置为队列1
R1(Config)# queue-list 1 protocol ip 2 list 101
R1(Config)# queue-list 1 queue 1 byte-count 1600 设置本队列每次可传的字节数 默认传1500字节
R1(Config)# queue-list 1 queue 1 limit 50 设置本队列的座位数
Debug custom-queue
show interface e0/0
R1(Config)#queue-list 1 lowest-custom 1 不推荐打0 一般打2 这样的话队列0和队列1同其它队列就相当于是PQ的关系
分类标准:按流来分,而不是按类来分
2层 源和目标的mac地址
3层 源和目标的ip地址,还有协议类型
4层 源和目标的端口号
流的五元组:源IP、目标IP、源端口号、目标端口号、协议
源/目标网络地址(MAC地址)(套接字)(DLCI)
当缓存中的数据包小于这个值时,不采取任何限制措施
当缓存中的数据包大于这个值时,采用以下方法来限制后续数据包:
1、如果后续数据包属于最长队列,则被drop
2、如果后续数据包不属于最长队列,则直接将这个包加入
如果缓存中的数据包超过HQO值,又来了一个包,则采取以下措施:
1、如果这个包属于最长队列,则被drop
2、如果这个包不属于最长队列,则去掉最长队列中的一个包,再将这个包加入其所属队列
·基于流的WFQ在传输数据之前,将各个会话的分组放到公平队列中。
虚拟包大小=实际包大小/(ip优先级+1)
大小相同的文件传输将获得相同的带宽,而不是先到的文件占用大量带宽。
R2(config-if)#fair-queue (接口启用WFQ) (s口默认是开启的,E口默认是FIFO)
….Queueing strategy: weighted fair
在使用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值,默认最大是1000
show queueing fair
Reserved queue:保留队列,为RSVP保留的
可以根据多种条件来定义数据流类别。(协议/ACL/输入接口)
CBWFQ最多只有64个类别,默认每个队列中能缓存64个包。
余下的25%用于传输控制数据流和路由选择数据流。
Voip 30%
Http 20%
Other ……25%
R1(config)#class-map voip
R1(config-)#match ip rtp 16384 16383 抓取16384之后的16383个端口
R1(config)#class-map http
R1(config-)#match access-group 111
policy-map CBWFQ 名字
class voip
bandwidth percent 30 percent参数代表总带宽的百分比,remaining参数代表75%可用带宽的百分比
class http
bandwidth percent 20
class class-default 设置其它流量占用20%带宽
bandwidth percent 25
service-policy output CBWFQ 名字
policy-map CBWFQ
class class-default
fair-queue
Voice (Critial)->50% VOIP的流量已经被标记了优先级5
Other ->30%
access-list 1 permit 199.1.1.0 0.0.0.255
class-map match-all VOICE
match ip precedence 5 将优先级为5的包找出来
class-map match-all NORMAL
match access-group 1
policy-map CBWFQ
class NORMAL
bandwidth percent 20
class VOICE
bandwidth percent 50
class class-default
bandwidth percent 30
interface Serial0/0
max-reserved-bandwidth 100
(因为默认是只能使用总带宽的75%,如果想用所有带宽,必须使用这一命令,对所有带宽进行划分)
service-policy output CBWFQ
R2#show class-map
R2#show policy-map
R2#show policy-map interface
·CBWFQ虽然能够为各种类别的流量提供带宽的保证,但却不能提供低延迟的传输保证。
使用这种LLQ特性后,将首先发送对延迟敏感的数据,也就是LLQ中的数据。这种数据发送完毕后才发送其他队列中的分组。
policy-map WAN-EDGE
class VOICE
priority percent 33 设定语音流量占用33%的带宽,并放入LLQ队列 使用priority就放入优先级队列
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-分配给语音的带宽
·带宽分配:CBWFQ能够给每个类别分配带宽,最多可以定义64个类别
WFQ只能根据7种IP优先级来对数据流进行分类。
<RTP优先队列>队列中真正的老大
RTP传输多媒体应用的数据流,包括IP语音和视频(对延迟比较敏感的)
主要用于交换机的技术
3550每一个端口下都有四个队列,每个队列默认占用25%的带宽,采用轮询的方式来调度。可以把第四个队列配置成绝对优先队列,只有绝对优先队列中的数据处理完成后,才会传输其它队列的数据。
需求:
将优先级为0、1的数据帧放入队列一中
将优先级为2、3的数据帧放入队列二中
将优先级为4、5的数据帧放入队列三中
将优先级为6、7的数据帧放入队列四中
SW1(config-if)#wrr-queue cos-map 1 0 1 定义映射表,将cos 0和1映射到队列1
SW1(config-if)#wrr-queue cos-map 2 2 3
SW1(config-if)#wrr-queue cos-map 3 4 5
SW1(config-if)#wrr-queue cos-map 4 6 7
SW1(config-if)#wrr-queue bandwidth 1 2 3 4
队列1得到10%的带宽
队列2得到20%的带宽
队列3得到30%的带宽
队列4得到40%的带宽
SW1(config-if)#mls qos trust cos
SW1(config-if)#mls qos trust dscp
SW1(config-if)#mls qos trust ip-precedence
SW1(config-if)#mls qos trust device cisco-phone
—————————————————————————————–
—————————————————————————————
Shaping mechanisms: ×××
Generic traffic shaping (GTS)通用流量整型
Frame Relay traffic shaping (FRTS)帧中继流量整型 这个通常要考
Class-based shaping
流量输出平缓 将超出的流量放入缓存 等带宽可用时再输出 只能用于出方向
Policing mechanisms: 监管
Committed access rate (CAR)
Class-based policing
将超出的流量直接丢弃 可以用处出方向和入方向
TC:time comminted 单位毫秒 默认125毫秒,承诺时间 间隔时间 每个多少时间放一次令牌
BC:burst committed 单位bit,承诺突发量,也叫正常突发量
Be:burst excess Be是从Bc溢出来的令牌,超出的突发量 存储第一个令牌桶溢出的令牌
CIR:commited infromation rate,单位Kbps。承诺信息速率 所要控制的流量
每Tc秒向桶中放入Bc这么多的令牌
CIR承诺信息速率,也就是你实际想要控制的速率
GTS Building Blocks通用流量整型
GTS uses WFQ for the shaping queue. 默认是WFQ,不能改
GTS can be implemented in combination with any queuing mechanisms:可以配合以下的软件Q使用
FIFO queuing
Priority queuing (PQ)
Custom queuing (CQ)
Weighted fair queuing (WFQ)
GTS works on output only. 只能工作在出方向
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.
要求将接口速率限制为64K
CIR Bc Be buffer(shape Q中的座位数)
关键是CIR的值,其它会自动计算,可以不指定
对于1.1.1.0网段的用户访问2.2.2.0网段进行限速,限为64K
R1(config-if)#traffic-shape group 100 64000
#show traffic-shape queue 查看shape队列
BECN (Backward explicit congestion notification) 后向显示拥塞通告 交换机通告send方
CLLM (Consolidated link layer management)
DE(Discard Eligibility)bit
发送方发送tcp数据给接收方,帧中继会FECN置位 发给接收方 接收方回包 帧中继会BECN置位 发给发送方
GTS在帧中继中可以做适应性的整型,如果收到BECN就降低到3/4,如收不到则回升。
if)#traffic-shape adaptive 12800 当发生拥塞时,最少可低到12800bit/S
要求将路由器的出接口速率限定为256K,并启用帧中继的适应性×××,一旦收到BECN,则可将速率最低降到64K。
interface s0/0
traffic-shape rate 256000
traffic-shape adaptive 64000
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中去改CIR
R1(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 如果两个值相同,等于没有Be
R1(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 8000
R1(config-map-class)#frame-relay [in|out] BE 8000
show traffic-shaping
R1(config-if)#frame-relay class FRTS 在接口下调用,对本接口下的所有VC均有效
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 minicir 16000 适应性整型的最低速率,通常和上一条命令结合用。
1、对VOICE流量,设定平均速率为64K
2、对于1.1.1.0网段访问2.2.2.0网段的流量,设定最大速率为32K
access-list 100 permit udp any any range 16384 32767
access-list 101 permit ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255
class-map VOIP
match access-group 100
class-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 CBSHAPE
CAR可以做在进方向也可以做在出方向。
同一接口使用car和CBmarking 入接口先cbmarking后car 出接口则相反
可以单独针对某一个流量作限速,还可决定拿到牌的和没拿到牌的分别作什么动作
-Transmit
-Continue
-Drop
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 conform
DA-actual debt 真实债务,向第二个桶所借的实际令牌数,DA是累加的,直到新令牌放进来
DC-compounded debt 符合债务
DC=原DC+当前DA
当DC>Be时,这个包就属于exceed-action,同时将DC置0
#show interface rate-limit
要求在出接口做 CAR
speed:64Kpbs
Traffic:192.168.1.0/24 any udp 4000 5000(端口号4000-5000)
Token:prec=3
NO Token:Drop
rate-limit output access-group 100 64000 1500 2000 conform-action set-prec-transmit 3 exceed-action drop
CIR Bc Bc+Be 拿到令牌的 设置优先级 没令牌的drop掉
set-prec-transmit 如果这里用的是set-prec-continue 则表示可以继续向下找更优的语句
要求:
1、将出接口的HTTP流控制在64K,拿到令牌的传递,其他的向下匹配
2、对于接口的语音流量要求控制在128K,拿到令牌的传递,其他的drop
access-list 101 permit udp any any range 16384 32767
rate-limit output access-group 101 128000 1500 2000 conform-action transmit exceed-action drop
-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/0
service-policy input WOLF 调用
WRED(Weighted Random Early Detection)
·TCP中存在一个慢启动和拥塞避免机制,当检测到网络中发生冲突的时候,会大幅度降低发送速率
·当网络中发生拥塞,有可能同时丢失多个TCP连接的数据包,造成多个TCP连接同时进入慢启动状态,这被称为TCP全局同步
·解决方法:可以在网络发生拥塞之前,就主动丢弃一部分TCP数据包,防止出现尾丢弃,从而避免进入慢启动
主动队列管理机制在拥塞发生前就丢弃分组。
丢弃概率:1/10
5表示按1/5的概率丢弃
random-detect dscp-based
show queueing random-detect
N值越大,WRED就越不敏感,最后导致失效,N值越小,会导致包被丢掉的概率越大
使用流来分类,默认最多可分256个流
int s0/0
random-detect flow 开启开关
random-detect flow count 256 设定可分的流的数目
当队列中数据包达到20个时,以1/10的概率丢弃优先级为3的包,达到40个时尾丢弃
当队列中数据包达到30个时,以1/10的概率丢弃优先级为4的包,达到40个时尾丢弃
当队列中数据包达到15个时,以1/10的概率丢弃优先级为1的包,达到35个时尾丢弃
当队列中数据包达到20个时,以1/10的概率丢弃优先级为2的包,达到35个时尾丢弃
match ip precedence 3 4
class-map SILVER
match ip precedence 1 2
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-detect
show policy-map interface s0/0
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
Qos (Quality of server)
原创
©著作权归作者所有:来自51CTO博客作者jamesfan的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:科幻靚錶設計:7R0N光速戰記錶
下一篇:VLAN间路由
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
QOS(Quality of Service|服务质量)
qos
优先级 网络协议 高优先级 -
dubbo: Fail to start qos server:
dubbo
java spring