前言 QOS基础<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
QOS(quality of service ),服务质量。传统IP网络中,所有报文都是无区别对待。网络设备的处理机制是FIFO(first in first out)也就是best-effort,但对报文的吞吐量,延迟,延迟抖动,丢包率等不保证。Maybe很好,maybe很差,视网络具体状况而定。
随着网络的高速发展,网络承载的信息越来越丰富。而实时性强的语音,图像,重要数据对延迟,抖动,带宽比较敏感,解决的办法是增加带宽。但带宽始终是有限的。用有限的带宽,对不同网络应用数据流提供预期的服务质量保证。但QOS本身并不能增加带宽。(只是把带宽等资源进行重新分配调度)
QOS能够:
1,
通过某种测量和监管机制,控制不同业务享受到不同的服务。
2,
通过某种调度策略,保障了在网络拥塞时重要业务保持持续稳定的运行。
3,
通过对网络流量的优化,使流量获得合理分配,网络运行于最佳状态。
形象点说,就跟现实中各行业里的VIP和普通客户,分别获得不同的服务。
交换QoS主要是在网络的接入层对数据流,实施分类和标记,同时提供流量监管和拥塞管理。
QOS
模型
:由于QOS是端对端的通讯,比如两个不同网络通讯,中间可能会跨越多个router和switch,那么QOS设计就需要全局考虑。否则你只能控制你的网络out的流。
1,
best-effort service 尽力而为模型
2,
integrated 综合服务模型 简称 intserv
3,
differentiated service 区分(差分)服务模型 简称 diffserv
其实best-effort 模型并不算QOS,这是数据传输的一种简单机制。目前是internet缺省服务类型。Intserv模型,应用程序首先通知自己的流量参数和需要的特定服务质量。在收到确认报文后,才开始发送报文。靠的是RSVP(resource reservation protocol)预留资源协议。缺点:RSVP报文太多,不停刷新。对单一数据流预留带宽的解决思路在internet上太难实现。厂家互联等。所以,现实中几乎是不采用。
Diffserv模型,不需要预留资源。通过IP优先级,COS,DSCP,ACL等定义QOS,对报文进行分类,流量监管,流量×××,队列调度等。一般通过以下技术来实现:
1,
CAR 根据报文的COS或TOS(对IP报文就是IP优先级和DSCP等),或IP报文的五元组(源,目的地址,源,目的端口,协议类型)对报文进行分类标志和流量监管
2, 队列技术 WRED,PQ,CQ,WFQ,CBWFQ等队列技术对拥塞的报文进行缓存和调度,实现拥塞管理。
QOS处理流程:
1,
首先在网络边缘对数据流进行分类,打上不同的QOS标志。流分类(traffic classification)是指采用一定的规则,标识出具有某种特征的报文。分类规则(classification rule)是指根据管理需求而配置的过滤规则。可以只根据DSCP,TOS或定义ACL对MAC地址,IP,源端口,目的端口等进行过滤。
2,
然后根据标志,在每一跳上进行相应的转发处理。比如流量×××,流量监管,拥塞避免。
一,优先级标志
优先级标志是实施QOS的基础。方法包括:802.1P,优先级,IP优先级,TOS优先级和DSCP优先级.
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
![](https://i-blog.csdnimg.cn/blog_migrate/6053d91a413e186e584be29d3110c68c.jpeg)
1, IP header的TOS区域有8个bit,0到2这3个bit表示的是IP优先级(COS),取值范围是0~7(二层frame只用0~5,6和7保留) ;3-6bit表示的是TOS(type of service)优先级,取值范围是0~15;在RFC2474中,重新定义了TOS域.称之为DS域,其中DSCP使用0~5,取值范围是0-63 , 6和7是保留位.
![](https://i-blog.csdnimg.cn/blog_migrate/083c49bfbfcee7aea3a2190b77f7876c.gif)
以太帧格式和TAG字段。四个字节的TAG里,PRI就代表802.1P优先级.
正常的以太frame并不带标志,802.1Q才会带有.(还有ISL,CISCO私有VLAN协议).而packet却有两中标分方法: IP precedence IP优先级和DSCP 区分服务代码点
![](https://i-blog.csdnimg.cn/blog_migrate/49fe4c029f2c8ada47354f81e2be1fe5.gif)
IP precedence分0~7和各对应表.
802.1P优先级位于二层报文头.适用于不需要分析三层报文,只需要在二层保证QOS的场合.
The table below is very important,we should be aware and remember。
![](https://i-blog.csdnimg.cn/blog_migrate/97a036d833373fcab576a878cdada2eb.gif)
二
标志
(
marking
)
设备说明:
1,
华为记录HCSE教材上的设备型号,或本人实际操作的S5624P,AR46-20
2,
思科选用是C3550-48-EMI 三层交换机 以及 C7200 路由交换机。
3,
设备型号均在命令的主机名有显示。
配置优先级标志: 如果同时指定了802.1P优先级和local-precedence,那么802.1P优先。TOS字段里包括IP precendce和DSCP,而DSCP是相当于IP precedence的扩展。所以DSCP比IP precedence优先。
H<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />3C配置:
一, S3026只支持802.1P优先级.接口视图下:priority-level [0~7] 设定优先级,同时配置 port priority replacement 设置接口优先级替换,然后经过该端口的数据流都打上此端口的优先级.
二, S3526E以上三层交换机都支持: IP优先级,802.1P优先级(COS值),DSCP优先级和本地优先级.是根据ACL结合来定义数据流.接口视图下:
[S5624P-GigabitEthernet1/0/25]traffic-priority inbound ip-group 2000 ?
cos Specify 802.1p priority
dscp Specify DSCP
ip-precedence Specify IP precedence
local-precedence Specify local precedence
rule Specify the ID of acl rule
华为的是在一条命令里完成定义要标志的报文并设置优先级。而Cisco的是通过class-map定义要标志的报文,然后在policy-map里调用再设置优先级。
Cisco配置:
C7200(config)#class-map [match-any| match-all] ewen 定义class-map
C7200(config-cmap)#match ? 好多match的选择,
access-group Access group
any Any packets
class-map Class map
cos IEEE 802.1Q/ISL class of service/user priority values
destination-address Destination address
discard-class Discard behavior identifier
dscp Match DSCP in IP(v4) and IPv6 packets
fr-de Match . Frame-relayDE bit
fr-dlci Match . fr-dlci
input-interface Select an input interface to match
ip IP specific values
mpls Multi Protocol Label Switching specific values
not Negate this match result
packet Layer 3 Packet length
precedence Match Precedence in IP(v4) and IPv6 packets
protocol Protocol
qos-group Qos-group
source-address Source address
C3550(config-cmap)#match ? 3550上选项就少多了。不过多了个vlan
access-group Access group
class-map Class map
ip IP specific values
vlan VLANs to match
C7200(config-cmap)#match ip precedence ? 匹配ip优先级
<0-7> Enter up to 4 precedence values separated by white-spaces
critical Match packets with critical precedence (5)
flash Match packets with flash precedence (3)
flash-override Match packets with flash override precedence (4)
immediate Match packets with immediate precedence (2)
internet Match packets with internetwork control precedence (6)
network Match packets with network control precedence (7)
priority Match packets with priority precedence (1)
routine Match packets with routine precedence (0)
marking也就这么一个match命令了,就相当于是个super ACL,用来定义感兴趣的报文。以便后面的policy-map引用。较常用的是使用IP优先级和ACL定义。
C3550(config)#policy-map qos
C3550(config-pmap)#class ewen 调用class-map
C3550(config-pmap-c)#police 80000 8000 exceed-action drop 利用令牌桶算法进行限速CIR
C3550(config-pmap-c)#set ? 对class-map定义的报文设置优先级。
cos Set IEEE 802.1Q/ISL class of service/user priority
dscp Set DSCP in IP(v4) and IPv6 packets
ip Set IP specific values
precedence Set precedence in IP(v4) and IPv6 packets
而路由器里则有较多的选项:
C7200(config-pmap-c)#?
QoS policy-map class configuration commands:
bandwidth Bandwidth 定义保留的带宽
compression Activate Compression
drop Drop all packets
exit Exit from QoS class action configuration mode
no Negate or set default values of a command
police Police 利用令牌桶算法进行限速
priority Strict Scheduling Priority for this Class优先级保留的带宽以及突发流量
queue-limit Queue Max Threshold for Tail Drop队列的最大包个数
random-detect Enable Random Early Detection as drop policy启用WRED
service-policy Configure QoS Service Policy
set Set QoS values 定义class-map报文的优先级
shape Traffic Shaping 定义CIR,Bc,Bc以及流量×××
配置bandwidth和priority命令的话,就是启用了CBWFQ,两个命令只能启用一个。当第二个取用的话,系统会提示:Must remove priority configuration from this class first.或者Must deconfigure bandwidth before issuing this command in this class
然后在接口上应用
C7200(config-if)#service-policy input qos
Class-map是个匹配模块,policy-map是个执行模块。一个policy-map可以调用多个class-map而完成对多种不同流量进行优先级设置和带宽保留等作用。
Case 1
把来自192.168.10.0/24 的出站telnet 流量的IP优先级设置为5,其他的出站流量的IP优先级设置为1:
access-list 133 permit tcp 192.168.10.0 0.0.0.255 any eq telnet
(ACL133定义特定流量)
class-map match-all telnet
(telnet是class map的名称,而不是什么协议噢)
match access-group 133 (调用ACL133)
policy-map qos (qos是policy map的名称)
class telnet (policy调用名字叫做telnet的class map)
set ip precedence 5 (把优先级修改成5)
class class-default (class-default指的就是其他的数据)
set ip precedence 1 (优先级次修改为1)
interface Serial1
ip address 10.0.0.1 255.255.255.252
service-policy output qos (在接口上执行)
这就是一个简单的分类标记工作,实际工程中可能会命令会多一点,复杂一点,但是道理都是一样的。
附加知识
关于class-map嵌套:有两点理由在创建class map的时候去调用一个已有的class map:
1、管理方便,在已有的基础上增加一个修改进行平滑的过度。
2、允许用户在同一个class map里分别使用匹配所有(match-all)和匹配任何(match-any)。
比如4个匹配标准:A、B、C和D。现在想让class map 匹配A,或匹配B,或同时匹配C和D,
流量监管
简单说就是对特定的数据流进行流量控制.使之更能适应分配资源.
![](https://i-blog.csdnimg.cn/blog_migrate/99ef0adf7a51eb11851ec9fd23d02a38.jpeg)
原理是: 特定数据流,会进入令牌桶.这个桶的流量是配置一个数值来限制.按规定速度向桶中丢令牌,当桶里满了后,不再增加.当数据流需要令牌桶处理的时候,如果桶里有足够的令牌也就是流量值,就直接发送,桶里流量相应减少.当少于发送的流量时,数据流会按照配置的执行动作处理.
配置:
一 , S3026不支持流量监管.
二, S3026FM/FS和S3526是结合ACL来定义数据流,但不能定义方向.也不支持突发量
三, S3026E和S3526E也是结合ACL来定义数据流,只能定义in的方向.也能支持突发的action.
[S5624P-GigabitEthernet1/0/25]traffic-limit inbound ip-group 2000 5000 exceed ?
drop Drop the packets
remark-dscp Specify DSCP
端口限速
LR(line rate) 也是用令牌桶来进行流量处理.当桶里令牌数不够时,会认为端口拥塞,就会放进QOS队列进行拥塞管理.因为用了令牌桶.所以流量控制更为合理和有弹性.
LR是对物理接口上发送的总报文速率限制.工作在二层.对所有报文都能限制.而CAR是工作在IP层,对IP报文进行限制.如果不经过三层处理的报文就不起作用.所以,LR比CAR控制精度更高.记住:只对out方向报文有效
配制非常简单:
[S5624P-GigabitEthernet1/0/25]line-rate outbound ?
INTEGER<64-1000000> Target rate(Kbps). It must be a multiple of 64 in this
port.
三
拥塞管理
这才是QOS的精华所在哦。当接收端口速度大于发送端口速度时,拥塞就会发生.拥塞管理采用队列技术,在网络拥塞时通过报文缓存和调度策略,使报文能按规定发送出去。队列技术不只能进行拥塞管理,还能对不同数据流提供差别服务.
一,先进先出队列(First In First Out Queuing,FIFO)
Internet默认使用的队列技术,对报文不进行分类.在报文进入接口的速度大于报文出接口的速度的情况下,按照报文到达接口的先后顺序进入队列,发送的时候也是一样。在不使用其他队列技术时,除了小于2.048Mbps的串行接口以外的所有接口,默认都使用FIFO
C7200#sh int f0/0
FastEthernet0/0 is administratively down, line protocol is down
Hardware is DEC21140, address is ca00.02ec.0000 (bia ca00.02ec.0000)
MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
reliability 252/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Half-duplex, 100Mb/s, 100BaseTX/FX
ARP type: ARPA, ARP Timeout 04:00:00
Last input never, output 00:42:30, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: fifo
Output queue: 0/40 (size/max)
二, 加权公平队列(Weighed Fair Queuing,WFQ)
对报文按流进行分类(对IP网络来说,流是指相同源,目的IP地址,源,目的端口,协议号,IP优先级的报文属于同一个流),出站按照IP优先级高低分配带宽,优先级高的占用高.
WFQ是带宽低于2.048Mbps串行接口默认使用的队列技术.(锐捷路由器使用交互式配置PPPOE默认也是)所以没什么好说的.
不足之处:不支持加密的接口,不支持隧道.精确度不如CBWFQ等高.
配置很简单:
C7200(config-if)#fair-queue
三, 优先级队列(Priority Queuing, PQ)
把报文优先级分类.然后归类到四个优先级:high , medium, normal ,low
当网络拥塞时,会按照定义的优先级从高到低发送.当优先级高的队列发送完毕才到下一个优先级队列.如果高优先级队列一直持续发送,那么低优先级的就永远不能发送,造成饿死了.
配置:
1,创建优先级列表
C7200(config)#priority-list 1 ?
default Set priority queue for unspecified datagrams
interface Establish priorities for packets from a named interface 匹配进口
protocol priority queueing by protocol 匹配协议
queue-limit Set queue limits for priority queues 定义队列个数
2,定义队列匹配条件
C7200(config)#priority-list 1 protocol ?
arp IP ARP
bridge Bridging
bstun Block Serial Tunnel
cdp Cisco Discovery Protocol
compressedtcp Compressed TCP
dlsw Data Link Switching (Direct encapsulation .ly)
ip IP
ipv6 IPV6
llc2 llc2
pad PAD links
pppoe PPP over Ethernet
qllc qllc protocol
rsrb Remote Source-Route Bridging
snapshot Snapshot routing support
stun Serial Tunnel
C7200(config)#priority-list 1 protocol ip high ?
fragments Prioritize fragmented IP packets
gt Prioritize packets greater than a specified size大于多少字节的包(包括帧的封装头)
list To specify an access list
lt Prioritize packets less than a specified size 小于多少字节的包(包括帧的封装头)
tcp Prioritize TCP packets 'to' or 'from' the specified port
udp Prioritize UDP packets 'to' or 'from' the specified port
<cr>可以通过ACL或TCP/UDP端口号来定义不同报文的优先级.
3,定义队列中报文个数.默认就是20 40 60 80,可以修改.
C7200(config)#priority-list 1 queue-limit 20 40 60 80
4,应用在接口上
C7200(config-if)#priority-group 1
四,自定义队列(Custom Queuing , CQ)
转载于:https://blog.51cto.com/infotech/123826