当网络出现拥塞的时候,一般会有延迟、延迟抖动或丢包的现象出现,那么解决这种现象的最好办法就是提高网络的带宽,那么,如果在无法提高网络带宽的话,就只能通过合理的利用网络带宽。在网络发生拥塞时,根据业务的性质和需要使用QoS技术合理的分配现有带宽,降低网络拥塞的影响。

QoS服务模型一共分为三种:

1、best-Effort service服务模型:它是一种单一的服务模型,也是最简单的服务模型,应用程序可以在任何时候发送任意数量的报文。网络尽最大可能发送这些报文,但是对于延时、可靠性不做保证,它是在互联网中默认的服务模型,其遵循先进先出的转发规则。

2、IntServ服务模型:IntServ服务模型在使用网络资源时,需要提前申请,申请的过程是通过RSVP(资源预留协议)完成的,应用程序会通过RSVP将需要的时延、带宽、丢包率等性能通知其他节点,这些节点收到资源预留请求后,会根据用户的合法性、资源使用情况来决定是否预留资源。

这个服务模型的扩展性很差,实施比较困难,并且RSVP存在一定缺陷,所以限制了它的广发应用。

3、Diffserv服务模型:它可以满足不同的QoS需求,与IntServ不同,它不需要预留资源,网络不需要为每个端到端的流量进行维护。Diffserv服务模型可以使用不同的方法来指定报文的QoS,如报文的优先级、MAC地址、源IP地址、目的IP地址等,网络可以通过这些信息来提供特定的服务(报文分类、流量整 形等)。

接下来,对Diffserv服务模型进行详细的解释。

QoS的操作模型:

QoS涉及四大组件:分类和标记、整 形和监管、拥塞避免和拥塞管理。QoS操作模型如下所示:

服务访问质量(QOS)

首先,数据进入设备进行流分类,根据流量的重要程度划分不同的类别,并打上不同的标记。然后使用GTS或CAR技术进行整 形和监管,并根据策略对违规的报文进行操作,限制流量的速率。随后通过WRED技术随机丢弃相对不重要的报文避免网络拥塞,最后通过拥塞管理的队列技术将报文放入不同的队列。队列达到最大长度后,后到达的报文将被丢弃,通过队列的出队调度技术转发报文。

可以通过下面这个实际的案例更加通俗的理解QoS对数据流的处理:

服务访问质量(QOS)

我们来把QoS操作模型拆分开来一步步了解:

1、分类和标记:

QoS是一个整体的框架,不局限于一台设备,整个网络中设备相互配合,最终达到流量优化的目的。QoS的核心就是保证重要的流量有限通过网络设备。默认情况下,网络设备对任何流量都一视同仁,为了可以让任何设备都可以识别重要的流量,在网络的边界,也就是任何进入网络的流量都应该根据重要程度被分类,并打上不同的标记,后续设备基于这些标记来标识哪些流量是相对重要的。

①、分类:流分类是进行区别服务的基础,流分类可以使用报文的优先级来识别不同优先级特征的流量;

流分类一般通过ACL区分不同的流量,尤其是扩展ACL,基本上可以定义大部分流量。如下命令定义了网络中所有的FTP流量:

R1(config)#access-list 101 permit tcp any any eq 21

②、标记:在QoS技术的Diffserv服务模型中,对于IP报文中的DS字段使用DSCP(差异化服务编码点)作为QoS优先级描述,如下所示:

服务访问质量(QOS)

DS字段一共八位,在Diffserv中使用DS的前六位,即DS0~DS5定义了0~63共64个优先级。
QoS也可以使用DS字段中的IP优先级,使用DS的前三位IP。优先级共八个等级,其中0表示正常流量,尽力转发。
默认情况下,如果不做设置,正常数据的优先级都是0,而像RIP、OSPF报文,默认优先级是6,优先级越高越优先发送;

在配置时,首先定义匹配类,然后定义流量控制策略,最后在端口实施策略。

1)定义匹配类

R1(config)#class-map abc
R1(config-cmap)#match access-group 101              #101为上面创建的扩展ACL编号

除了配置ACL外,还可以配置端口、VLAN、源或目的MAC地址等信息,配置命令如下:

R1(config-cmap)#match input-interface f0/0            #匹配 F0/0端口进入的流量。
R1(config-cmap)#match any                                     #匹配任意流量

2)、定义流量控制策略

通过policy map调用class map,然后为每一个class map 配置策略:

R1(config)#policy-map QoS                     #定义策略名称
R1(config-pmap)#class abc                     #调用class  map
R1(config-pmap-c)#set ip dscp 5             #定义优先级,范围为0~63;
也可以使用如下命令来定义优先级:
R1(config-pmap-c)#set ip precedence 7         #与dscp一样,用来定义优先级,范围为0~7。

3)、在接口上应用策略

R1(config-if)#service-policy input qos                 #service-policy为命令字,input表示入站。
可以使用output来表示出站,qos为定义的策略名称

4)、查看配置
可以使用命令show policy-map来查看配置:

R1#show policy-map
  Policy Map df
    Class abc
      set ip precedence 7

  Policy Map qos
    Class abc
      set ip precedence 0

2、整 形和监管:

经过分类和标记已经可以区分流量的优先级了,那么为了避免网络拥塞的出现,可以对流量进行控制,通过采用一定的策略控制流量的大小,以减少网络拥塞的出现。主要的流量管理技术是整 形和监管。

在对流量进行监控时一般可以设定三个参数:
1. 承诺平均速率(CIR):允许流量通过的平均速率;
2. 突发量(BC):允许突发产生流量的大小,设置的大小必须大于最大报文长度。
3. 额外突发量(Be):表示流量超出突发量后还可以转发的流量大小。

1)流量策略

对于符合规定部分的流量视为合规流量,而对于超出规定部分的流量视为违规流量。设置流量策略时,既可以设置合规流量策略,也可以设置违规流量策略。一般流量策略有以下几种:

  • 转发:对于合规流量和违规流量都可以设置策略为转发。
  • 丢弃:对于合规流量和违规流量都可以设置策略为丢弃。
  • 标记:标记报文的优先级。例如,将合规流量报文的IP优先级设定为5,而将违规流量报文的优先级设置为0.
  • 进入下一级流量策略:流量策略可以多级处理,可以将流量提交给下一级流量策略来进行控制。

2)整 形与监管

流量整 形(GTS)是一种调节输出速率的措施,流量整 形使用缓冲区使流量均匀地进行转发。流量进入设备进行分类,不需要进行整 形的流量直接通过设备转发,需要进行整 形的流量根据配置分为合规流量和违规流量。当流量速率超过设定时,设备将多余的流量缓存到GTS队列,然后按照配置的CIR,将报文均匀地转发出去,以保证网络流量平稳。

由于流量整 形使用缓存来保存违规流量,所以可以减少丢包率,避免了报文重发,但是使用缓存将导致数据转发时增加时延。流量整 形一般应用在整体流量较小,但有时出现突发流量的环境中。如下图所示:
服务访问质量(QOS)

流量整 形配置有两种配置方式,一种是基本的流量整 形配置,另一种是基于ACL的流量整 形配置。

基本的流量整 形配置如下:

R1(config)#access-list 100 permit udp any any
R1(config)#in f0/0
R1(config-if)#traffic-shape rate 8000000              #针对所有经过该接口的流量整 形。承诺平均速率为100kb/s
R1(config)#in f1/0
R1(config-if)#traffic-shape group 100 800000 800000 800000                 #针对于ACL组号为100的流量整 形。
顺序依次为CIR、Bc、Be,CIR是每秒可通过的速率,
计量单位为比特 
(1GB=1024MB,1MB=1024KB,1KB=1024B,1B(字节)=8bits(比特),
也就是说80000bits大约是100KB/s

查看网络整 形配置信息:

R1#show traffic-shape f0/0

Interface   Fa0/0
       Access Target    Byte   Sustain   Excess    Interval  Increment Adapt
VC     List   Rate      Limit  bits/int  bits/int      (ms)      (bytes)   Active
-              1000000   6250   25000     25000     25         3125      -   

查看GTS流量统计信息:


R1#show traffic-shape statistics f0/0
                  Acc. Queue Packets   Bytes     Packets   Bytes     Shaping
I/F            List    Depth                             Delayed   Delayed   Active
Fa0/0                   0          0                0                0         0    no

查看GTS队列信息:
R1#show traffic-shape queue
Traffic queued in shaping queue on FastEthernet0/0
Queueing strategy: weighted fair
Queueing Stats: 0/1000/64/0 (size/max total/threshold/drops)
Conversations 0/0/64 (active/max active/max total)
Reserved Conversations 0/0 (allocated/max allocated)
Available Bandwidth 1000 kilobits/sec

其中粗体1000标识设置的缓存器限制。

流量监管是一种流量控制措施,监管使用的三个参数分别是承诺平均速率、Bc、Be。所以监管中,Bc+Be的大小是允许突发的最大流量的大小。监管的核心技术是承诺访问速率(CAR)

Bc和Be相当于信用的积累,如果一直守信(小于规定流量),其信用值就不断增加到某个数值(Bc);如果继续守信,则信用值就会继续增加到一个规定的最大值(Bc+Be)。这时,如果出现违规现象(流量速率超过规定速率),信用就会减少,知道信用值为0,。所以Bc、Be是一个积累使用的过程,而不是始终存在的(最初时Bc和Be为满的)。

在使用CAR技术限制流量速率时,违规流量一般会被直接丢弃而不进行缓存,所以呢,CAR技术保证了数据的延时,但是增加了丢包率。CAR技术多应用于接入层,对接入用户进行流量限制。

CAR的速率图如下所示:

服务访问质量(QOS)

服务访问质量(QOS)

CIR表示速率,而Bc和Be表示大小。
一般的使用一下公式进行配置:

Bc=2XRTTXCIR/8

其中,RTT表示流量往返的时间,可以使用ping命令测试。Be流量一般等于Bc。

承诺访问速率配置:和流量整 形相同,也有两种配置方式,一种是基本的承诺访问速率配置,另一种是扩展的承诺访问速率配置。

1)、基本的承诺访问速率配置

R1(config-if)#rate-limit input 8000000 2000 4000 conform-action transmit exceed-action drop

上述命令表示进入端口的流量被限速为8000000b/s(约8MB/s),最大突发量为4000字节,符合的流量conform-action被转发transmit,超出的流量exceed-action被丢弃drop

R1(config-if)#rate-limit input 8000000 2000 4000 conform-action set-prec-transmit 5
exceed-action set-prec-transmit 0 
#其中8000000为CIR,参数范围是8000~2000000000,单位是b/s;
2000表示普通突发量,参数范围是100~512000000,单位是字节;
4000表示最大突发量,参数范围是2000~1024000000,单位是字节

上述命令表示进入端口的流量被限速为8Mb/s,最大的突发量为4000字节,符合的流量被标记IP优先级5后进行转发,超出的流量被标记IP优先级0后进行转发,IP优先级0为默认值,表示尽力转发。当网络出现拥塞时,可以根据优先级确定优先丢弃的数据。

2)、扩展的承诺访问速率配置

首先配置ACL,定义需要整 形的流量,然后再接口模式下配置如下命令进行流量整 形:


R1(config)#access-list 101 permit tcp any any 
R1(config)#in f0/0
R1(config-if)#rate-limit input access-group 101 8000000 2000 4000  
conform-action transmit exceed-action drop  

#其中8000000为CIR,参数范围是8000~2000000000,单位是b/s;
2000表示普通突发量,参数范围是100~512000000,单位是字节;
4000表示最大突发量,参数范围是2000~1024000000,单位是字节

查看CAR配置信息:

R1#show interfaces f0/0 rate-limit 
FastEthernet0/0 
  Input
    matches: access-group 101                  #匹配的ACL
      params:  8000000 bps, 4000 limit, 4000 extended limit              #配置的速率限制
      conformed 0 packets, 0 bytes; action: transmit         #符合的流量统计,动作为转发
      exceeded 0 packets, 0 bytes; action: drop                #违规的流量统计,动作为丢弃
      last packet: 4176504ms ago, current burst: 0 bytes           #当前流量突发量信息
      last cleared 00:07:24 ago, conformed 0 bps, exceeded 0 bps             #速率信息
    matches: access-group 101
      params:  8000000 bps, 4000 limit, 4000 extended limit
      conformed 0 packets, 0 bytes; action: transmit
      exceeded 0 packets, 0 bytes; action: drop
      last packet: 4176504ms ago, current burst: 0 bytes
      last cleared 00:00:44 ago, conformed 0 bps, exceeded 0 bps