QOS不错的解析.docx
《QOS不错的解析.docx》由会员分享,可在线阅读,更多相关《QOS不错的解析.docx(30页珍藏版)》请在冰豆网上搜索。
QOS不错的解析
QOS详解
QOS(QualityOfServer)(在拥塞时才用)
哪些问题会影响网络的数据传输
1、有限的带宽
2、延迟
3、抖动
4、丢包
解决可用带宽的方法:
1、升级带宽,增加链路带宽
2、让优先级高的流量先过
3、压缩二层的帧
4、压缩IP包的头部
延迟的分类:
1、处理延迟--网络设备将数据帧从入接口取出,将其放到接收队列,再放到出接口输出队列所需的时间
2、排队延迟--数据包在接口的输出队列中等待的时间
3、串行化延迟--将封装在数据帧中比特放到物理介质上的时间
4、传播延迟--通过物理介质传输数据帧中的比特所需的时间
注意:
只有排队延迟可以通过使用QOS来进行控制
QOS服务模型:
1、尽力而为的服务--没有应用QOS,网络的默认行为
2、集成服务--所有的中间系统和资源都显式的为流提供预定的服务,这种服务需要预留网络资源,确保网络能够满足通信流的特定服务要求。
3、区分服务--将根据服务要求将通信流分类,然后将它们加入到效率不同的队列中,使一些通信流优先于其他类别的通信流得到处理。
IntServ
集成服务是通过使用RSVP(ResourceReservationProtocol资源预留协议)实现的,在两个端点中间网络设备上都要启用RSVP。
工作原理--数据流在发送之前,起始节点会向网络请求特定类型的服务,并将其流量配置文件告诉网络中的每个中间节点,请求网络提供一种能够满足其带宽和延迟要求的服务。
在从网络得到确认后,应用才开始发送数据。
资源预留的过程分为5步:
1、数据发送方发送rsvppath控制消息,这种消息描述了将要被发送的数据的信息。
2、每个rsvp路由器收到path消息后,保存上一跳的IP地址,并继续向下发送。
3、接收站接收到rsvppath消息后,使用rsvpresv消息向上一跳路由器请求rsvp资源预留。
rsvpresv消息从接收方到发送方所经过的路径与rsvppath消息到来时完全相同。
4、rsvp路由器确定是否可以满足这些rsvp请求,如果不能,则拒绝。
如果可以,则预留出资源,并继续向上一跳发送出rsvp请求。
5、发送方收到rsvp请求,说明预留已经就绪,可以开始发送数据了。
路由器对数据包的处理过程:
1、准入控制
2、分类
3、策略
4、排队
5、调度
资源预留方式可分为两类:
1、独占式--适合于多个数据源同时发送的应用程序,针对每个发送方预留资源,且发送方是很清楚的。
2、共享式--适合于多个数据源不太可能同时发送的应用程序。
又可分为两种:
①共享显式(shardexplicitSE)--为多个明确的源预留资源
②通配符过滤器(wildcardfilterWF)--为所有源预留资源
需要一个PDP(policyDecisionPoint策略决策点)来集中完成网络对RSVP请求的许可控制。
缺点:
不具有可扩展性,并且需要网络设备不断的发送信号,本身占用带宽。
配置:
R1(config)#interfacee0
R1(config-if)#iprsvpbandwidth 起用rsvp,默认使用75%的带宽做rsvp
R1(config-if)#iprsvpbandwidth500 设定只使用500K的带宽
R1(config)#interfaceS0
R1(config-if)#iprsvpbandwidth
R1(config)#iprsvpsender20.1.1.510.1.1.4udp1040010.1.1.4e03232
目标IP 源IP 目标端口源端口 预留带宽
R2(config)#interfaceS0
R2(config-if)#iprsvpbandwidth
R2(config)#interfaceS1
R2(config-if)#iprsvpbandwidth
R3(config)#interfaceS0
R3(config-if)#iprsvpbandwidth
R3(config)#interfaceS1
R3(config-if)#iprsvpbandwidth
R3(config)#iprsvpreservation20.1.1.510.1.1.4 udp1040020.1.1.5e0ffload3232
独占式预留
showiprsvpinterface
showiprsvpinstalled
showiprsvpsender
每30S发一次dump-messages
===========================================================================
DiffServ
区分服务--能够提供满足不同QOS需求的多种服务等级。
不需要显示的通知网络设备。
路由器对数据包的处理是逐跳行为
缺点:
没有绝对的服务保证,机制复杂。
语音进程的端口号:
16384-32767之间的偶数 奇数的是控制端口,偶数的是数据端口
·确定数据流的优先顺序。
对延迟敏感的流量赋予高的优先级。
如果WAN链路不发生拥塞,没有必要划分数据流的优先顺序。
如果WAN链路经常发生拥塞,划分数据流的优先顺序可能解决不了问题,更合适的解决方案是增加带宽。
·制定排队策略:
1.为所有用户提供合适的服务级别
2.节省昂贵的WAN费用
·RTP(Real-TimeProtocol):
实时传输协议
RTP传输多媒体应用的数据流,包括IP语音和视频(对延迟比较敏感的)
·MQC(ModularQoSCLI(commandlineinterface)):
MQC--模块化的QOS命令行
为我们配置QOS提供了一个统一的格式标准
区分服务可分为以下四大部分:
-----------------------------------------------------------------------------------------
分类和标记 限速(shaping&policy) 拥塞避免 Queuing
ACL GTS CAR RED FIFO
PBR FRTS CBpolicing WRED PQ
NBAR CBshaping FB-WRED CQ
CBMARKING 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优先级为5
2、对于5.5.5.0网段过来的,访问2.2.2.0的流量设定IP优先级为2
3、对于6.6.6.0网段过来的,访问2.2.2.0的流量设定IP优先级为1
第一步:
定义ACL
R1(config)#access-list100permitudpanyanyrange1638432767
R1(config)#access-list101permitip5.5.5.00.0.0.2552.2.2.00.0.0.255
R1(config)#access-list102permitip6.6.6.00.0.0.2552.2.2.00.0.0.255
第二步:
定义route-map并打标记
R1(config)#route-mapPBR10
R1(config-route-map)#matchipaddress100
R1(config-route-map)#setipprecedence5
R1(config)#route-mapPBR20
R1(config-route-map)#matchipaddress101
R1(config-route-map)#setipprecedence2
R1(config)#route-mapPBR30
R1(config-route-map)#matchipaddress102
R1(config-route-map)#setipprecedence1
第三步:
调用
R1(config)#interfaces0
R1(config-if)#ippolicyroute-mapPBR
CBMARKING
例二:
1、对VOIP流量,给予IP优先级5
2、对于telnet流量,给予IP优先级4
3、对于来自172.16.1.0的流量,给予IP优先级2
步骤:
1、定义ACL
R1(config)#access-list100permitudpanyanyrange1638432767
R1(config)#access-list101permittcpanyanyeq23
R1(config)#access-list102permitip172.16.1.00.0.0.255any
2、定义类别映射表
R1(config)#class-map[match-any|match-all]VOIP
R1(config-cmap)#matchaccess-group100
R1(config)#class-map[match-any|match-all]TELNET
R1(config-cmap)#matchaccess-group101
R1(config)#class-map[match-any|match-all]NETWORK
R1(config-cmap)#matchaccess-group102
3、定义策略映射表
R1(config)#policy-mapXWX
R1(config-pmap)#classVOIP
R1(config-pmap-c)#setipprecedence5
R1(config-pmap)#classTELNET
R1(config-pmap-c)#setipprecedence4
R1(config-pmap)#classNETWORK
R1(config-pmap-c)#setipprecedence2
4、调用
R1(config)#ints0
R1(config-if)#service-policyinputXWX
#showpolicy-map
#showclass-map
#showpolicy-mapinterface
class-map默认是match-all
例三:
对于来自s1接口的流量,给予IP优先级1
R1(config)#class-map[match-any|match-all]INTER
R1(config-cmap)#matchinput-interfaces1 还可以匹配入站接口
R1(config)#policy-mapXWX
R1(config-pmap)#classINTER
R1(config-pmap-c)#setipprecedence1
调用在出口
R1(config)#ints0
R1(config-if)#service-policyinputXWX
NBAR(Network-BasedApplicationRecongnition基于网络的应用识别)
基于ACL的分类使用数据包的第3层和4层信息来对数据包进行分类。
NBAR可以根据第7层信息来对数据帧进行分类。
在定义class-map时使用matchprotocol命令时,就是使用了NBAR
例一:
在路由器入口,对于telnet流量,给予优先级3
配置NBAR:
1、开启cef
R1(config)#ipcef
2、定义类别映射表
R1(config)#class-map[match-any|match-all]TELNET
R1(config-cmap)#matchprotocoltelnet 区别就在这里
3、定义策略映射表
R1(config)#policy-mapXWX
R1(config-pmap)#classTELNET
R1(config-pmap-c)#setipprecedence3
4、调用
R1(config)#ints0
R1(config-if)#ipnbarprotocol-discovery
R1(config-if)#service-policyinputXWX
注意事项:
使用NBAR,必须先启用CEF特性
config)#ipcef
使用NBAR,接口模式下必须打开(match字段中有protocol时就表示使用了NBAR)
ipnbarprotocol-discovery 必须在接口下开启这一命令
R1(config)#ipnbarport-maphttptcp808080 指定http协议对应的端口,不仅仅是默认的,还可以扩展
例二、禁止访问新浪、禁止下载JPG图片
class-mapmatch-anyDROP
matchprotocolhttphost 过滤本网站的流量
matchprotocolhttpurl*.jpg|*.gif 还可以抓网页上的图片
R1(config)#policy-mapXWX
R1(config-pmap)#classDROP
R1(config-pmap-c)#drop
R1(config)#ints0
R1(config-if)#service-policyinputXWX
PDLM(packetdescriptionlanguagemodule)
包描述语言模块,一种扩展的技术,可以让路由器直接对某种应用程序流量或新的协议流量进行识别,而不需要更换IOS或重启路由器。
PDLM模块由cisco的工程师开发,需要先下载进flash中,再进行加载。
例三:
在网络中过滤掉BT流量
R1(config)#ipnbarpdlmbt.pdlm-------灌入抓BT的PDLM。
装入之后就可以在classmap中调用了
R1(config)#class-mapmatch-anyDROP
R1(config-cmap)#matchprotocolpdlmbt
R1(config)#policy-mapXWX
R1(config-pmap)#classDROP
R1(config-pmap-c)#drop
R1(config)#ints0
R1(config-if)#service-policyinputXWX
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
排队技术
从三个步骤上来学习:
1、分类
2、加队
3、调度
FIFO:
firstinfirstoutqueuing先进先出队列
分类:
不对报文进行分类
加队:
按数据包到达的先后顺序进行加队,按尾丢弃原则丢弃。
调度:
按数据包到达的先后顺序进行出队
·FIFO(FirstInFirstOut)排队是一种经典的分组传输算法。
分组的传输顺序与接收顺序相同。
现今仍是大部分接口的默认设置。
(大于2M的基本都是)
默认2M以下都是WFQ
R1(config-if)#nofair-queue 在接口启用FIFO
showinterfacee0 查看
FIFO输出队列的缓存中默认只容纳40个包,可以修改。
R1(config-if)#hold-queue50out
PQ:
优先级队列
共有四个队列,分为四个优先级别,默认的流量都是normal
优先级分类:
1high 2medium 3normal 4low 默认所有流量都走normal队列
加队:
在每一个队列中还是按照fifo的原则加队,按尾丢弃原则丢弃。
调度:
只要高优先级有流量就发高优先级的,只到高优先级的数据发完再发低优先级的数据,这样就有可能造成低优先级的数据无带宽可用。
实验:
要求在路由器的出接口将telnet流量放入high队列 将icmp流量放入medium队列
Access-list100permiticmpanyany
R1(Config)#priority-list1protocoliphightcptelnet 将telnet流量的优先级置为high
R1(Config)#priority-list1protocolipmediumlist100 调用访问列表将icmp的优先级置为normal
R1(Config-if)#priority-group1 接口下调用
priority-list1queue-limit22446688定义每一个队列的座位数,队列1为22个,队列4为88个
priority-list1interfaces0[high|medium|normal|low]按接口来进行分类,也就是说把一个接口来的数据都放进一个队列,太过粗略
priority-list1default[high|medium|normal|low]设置默认
Showinte0 看每一个队列有多少个座位,也就是能容纳多少个包
Showqueueing (看所有队列)
Showqueueingpriority
Debugpriority 再使用telnet和ping来测试
CQ Customqueue
分类:
1~16队列再加上一个优先队列0级队列 共17个队列 0级和其它级的关系相当于PQ
加队:
自定义加队,不同的流量加不同的队列。
在每一个队列中还是按照fifo的原则加队,按尾丢弃原则丢弃。
调度:
轮循,第一个传完就传第二个,默认1500个字节,可以修改每个队列的传输字节数
先有1000个字节,再来1000,还是会传
例:
将VOIP流量设为优先队列,将telnet流量置为队列1,将ICMP流量置为队列2
access-list100permitudpanyanyrange1638432767
access-list101permiticmpanyany
R1(Config)#queue-list1protocolip0list100
R1(Config)#queue-list1protocolip1tcptelnet 将telnet流量置为队列1
R1(Config)#queue-list1protocolip2list101
注意:
在定义CQ时,最好由小到大一个个来定义,否则可能出错
R1(Config-if)#custom-queue-list1 接口下调用
R1(Config)#queue-list1queue0byte-count800
R1(Config)#queue-list1queue1byte-count1600设置本队列每次可传的字节数
R1(Config)#queue-list1queue1limit50 设置本队列的座位数
showqueueingcustom
Debugcustom-queue
showinterfacee0/0
扩大优先级队列的范围:
R1(Config)#queue-list1lowest-custom1 不推荐打0一般打2 这样的话队列0和队列1同其它队列就相当于是PQ的关系
默认没有分类的流量走的是低级队列的第一个队列。
默认就是走1级队列。
WFQ(WeightedFairQueuing)加权公平队列(基于流的)
分类标准:
按流来分,而不是按类来分
2层源和目标的mac地址
3层源和目标的ip地址,还有协议类型
4层源和目标的端口号
流的五元组:
源IP、目标IP、源端口号、目标端口号、协议
·WFQ算法将数据流划分成流,这是根据分组报头中的地址实现的。
源/目标网络地址(MAC地址)(套接字)(DLCI)
加队:
默认总共只有256个队列,共享缓存,统一调度座位
CDT:
congestivediscardthreshold 缓存中容纳包的下限
当缓存中的数据包小于这个值时,不采取任何限制措施
当缓存中的数据包大于这个值时,采用以下方法来限制后续数据包:
1、如果后续数据包属于最长队列,则被drop
2、如果后续数据包不属于最长队列,则直接将这个包加入
HQO:
hold-Queueout