第一部分 Qos的定义
拥塞产生的原因:
- 以太网络速度不匹配:当速度不同的网络设备进行通信的时候,就可能导致网络的拥塞。例如,吉比特以太网上的服务器将数据发送给10M以太网上的服务器的时候,由于交换机的缓冲空间限制,可能导致10M以太网上的服务器出战接口发生拥塞。
- 多对一交换:当采用多对一的方式聚集交换机时,就可能导致网络的拥塞。例如,多台接入层交换机连接到同一台分布层交换机的时候,这些接入层交换机的交换矩阵的的带宽总和通常超过了分布层交换机的交换机矩阵的能力
- 聚集:当多台以太网设备通过一台以太网连接进行通信或与单台网络设备/服务器通信的时候,就可能导致网络的拥塞
- 异常行为:网络设备的硬件/软件故障可能导致广播风暴或其它类型的网络风暴,进而使多个接口发生拥塞。软件故障包括计算机蠕虫和病毒,导致数据包风暴,进而拥塞企业或ISP的网络。
以上情况下都有可能会导致数据包在传输的过程中丢失或延迟。拥塞不是唯一影响网络可用性和稳定性的因素,即使在有足够带宽的多层交换网络中,也存在延迟
(Delay)、抖动(Jitter)和丢包(packet less),对于一些对延迟很敏感的应用(如语音)就需要有服务质量保障(Qos)。
Qos
的定义
Qos可从多个不同途径来定义,将所有这些定以结合在一起将会得到所有定义中最好的一个。从技术角度而言,
Qos是网络中管理数据流的可用带宽、延迟、抖动以及分组丢弃的技术集合。所有的Qos机制的目的就是影响这4个特征中的至少一个,某些情况下甚至是全部。
1
.可用的带宽
带宽本身的定义是在特定的网络介质或者协议中额定的吞吐量。带宽的本身缺乏的吞吐量,当多个流量在一个受限的带宽上传送的过程时,就会产生对带宽的竞争来抢占发送自己的数据。
带宽的使用
最大的带宽:从主机到服务器所经过的所有链路带宽中最小的带宽值
如:(10M、256K、512K、100M)中最小的带宽256K,作为最大的带宽
可用的带宽:最大的带宽/流量的个数
当服务器发送一个大文件(如视频),为了保证文件的流畅型就必须保证一个大的可用的带宽来支持。
如何保证可用的带宽?
- 增加链路的带宽(不现实)
- 对数据帧进行压缩(compress)来增大链路的带宽,但也会增加一个延迟时间。堆栈(stacker)和预测(predidctor)是IOS软件提供的压缩方法。Payload压缩是端对端的压缩
- 对第3层包进行头部压缩,可以将数据包变小,tcp和rtp(real-time transport protocol)的头部压缩方式,是逐跳压缩
- Qos处理,比如WFQ、CBWFQ、LLQ
2
.延迟(Delay)
延迟是数据包到达目标所需要的时间,在
Qos中延迟有几个方面:
- 处理延迟(processing delay)是指从设备接收到数据帧,将其放入到输出端口的输出队列,到该帧由输出端口转发出去的时间间隔
- 串行延迟(serialization delay)是指实际传输一个分组或数据帧所需的时间,将封装在数据帧中的数据包中的比特放到物理介质上所需的时间
- 排队延迟(queuing delay)是指数据包在接口的输出队列等待的时间
- 传播延迟(propagation delay)是指数据包通过物理介质的一端到其他一端的所需要的时间
只有排队延迟可通过使用cisco IOS中的Qos来进行控制;其它类型的延迟不受
Qos的直接影响。
端对端延迟(end-to-end delay)是指分组从源端口发送到达目的端口所有处理延迟、串行延迟、排队延迟的总和。
3
.抖动(Jitter)
抖动是指分组间到达和离开时的差异,也就是不同分组之间在延迟上的偏差。数据包在网络中传输经过每一跳设备时,这个设备可能设置了自己的处理延迟和排队延迟,这样就造成了抖动。所有终端和
cisco 设备都使用抖动缓冲区来消除数据包(包含数据、语音和视频)在到达时间上的差别。然而,抖动缓冲区只能补偿数据包的细微延迟差异。如果后续数据包得到达时间超过了特定阀值,将导致抖动缓冲区欠载(undeerrun)。当抖动缓冲区为空的时候,缓冲区中没有可供处理的数据包。例如,当用户使用音频应用收听网上广播的时候,如果发生了抖动缓冲区欠载的情况,音频应用将停止播放音乐,直到其他数据包进入抖动缓冲区为止。相反,如果大量数据包以过快的速度到达,那么就可能填满抖动缓冲区,进而无法处理后续的数据包。这被称为缓冲区超载(overrun)。在这种情况下,音频应用将跳过部分音频文件:音频播放器始终有需要播放的数据包,但漏掉音频流中的一些数据包。
4
.数据包丢失(Packet loss)
丢包(
packet loss)指数据包沿转发路径转发的途中所产生的数据包丢失。导致数据包丢失的原因很多,比如缓冲器拥塞、线路出错等。
导致丢包的一种常见原因是输出队列中填满了等待传输的数据包,没有更多的空间来存储入站数据包,这种情况被称为输出队列已满。在这种情况下,对数据包进行排队的网络设备别无选择,只能丢弃数据包。
解决方法:
- 更新链路
- 提高带宽
- 采用一些Qos,比如早期检测的Qos(wrd),在发生尾丢弃出现之前早期监测并提供机制。
Qos
的作用
Qos能够通过
cisco网络设备的支持,使用以下的组件或特性,能够解决延迟、抖动、带宽和丢包等问题
- 通过对通信流进行标记和分类,能够使得网络设备区分不同的通信流
- 通过流量调节(策略),能够使得通信流适应特定的行为和吞吐量
- 将超过特定阀值的通信流标记为优先级(策略)
- 当通信流速率达到特定阀值的时候,丢弃数据包(拥塞避免)
- 通过对数据包进行调度,输出队列中先传输优先级别高的数据包,然后再传输优先级别低的数据包(拥塞管理)
- 通过对输出队列进行管理,避免等待传输的低优先级数据包独占缓冲空间(拥塞管理)
通过启用
Qos,将能够:
- 预测端到端数据包传输、I/O操作、数据操作、事务处理等的响应时间
- 正确地管理和判断对抖动敏感的应用(例如音频和视频应用)的能力
- 对延迟敏感的应用(例如VoIP)进行流处理
- 控制用塞发生时的丢包率
- 在整个网络中配置通信流的优先级
- 支持需要专用带宽的应用或网络需求
- 监控和避免网络拥塞
- 限制异常行为并维护网络稳定性(在发生恶意攻击的情况下)
具体事例:
在发生拥塞的一个接口没有采用任何Qos的流量发送的情况:因为缺省状态下,接口都是先进先出(FIFO)的策略对待接口上等待的流量,结果最紧急的报文按照先进先出的原则而在最后出队。
当采用了Qos机制,在报文发送时,按照优先级总是在所有优先级较高的队列中的报文,发送完毕后再发送低优先级队列中的报文。这样在每次发送报文时总是将优先级高的报文先发出去。保证了属于较高优先级队列的报文有较低的时延报文的丢失率和时延。这两个性能指标在网络拥塞时也可以有一定的保障。将紧急的报文优先级提高,使得其能够最先被发送出去。
Qos的执行
1. 鉴别流量和它的需求:了解网络确定现行传输流量的不同类型,并且确定针对不同类型的网络流量对Qos的需求,那些是语音流量,那些是关键的数据流量,那些是尽力而为的数据流量
2. 将不同类型的流量根据对Qos的不同需求进行分类
3. 针对流量的不同分类,定义响应的策略来保障
第二部分 Qos服务模型
网络应用是端到端的通讯结构
,比如两个不同网络的主机进行通讯,中间可能跨越各种 router 和核心switch,那么想整体的实现所谓的QOS,就必须全局考虑,QOS的服务模型的概念就是采用通过什么模式全局实现服务质量保证,一共分成三种。
- Best-Effort service 尽力而为服务模型
- Integrated service 综合服务模型 简称Intserv
- Differentiated service 区分服务模型 简称Diffserv
1
.尽力而为的服务模式
Best-Effort 是一个单一的服务模型
,也是最简单的服务模型,应用程序可以在任何时候,发出任意数量的报文,而且不需要事先获得批准,也不需要通知网络,对 Best-Effort 服务,网络尽最大的可能性来发送报文,但对时延、可靠性等性能不提供任何保证,Best-Effort服务是现在Internet的缺省服务模型,它适用于绝大多数网络应用,如 FTP、 E-Mail 等。其实 best-effort 并非是什么 QOS,就是互联网的简单数据传输方式而已,有什么传什么,阻塞也就阻塞了,丢弃也就丢弃了。
2
.集成服务模式(Intserv)
集成服务模型
,它可以满足多种 QoS 需求。这种服务模型在发送报文前,需要向网络申请特定的服务。应用程序首先通知网络它自己的流量参数和需要的特定服务质量请求:包括带宽、时延等。应用程序一般在收到网络的确认信息,即确认网络已经为这个应用程序的报文预留了资源后,才开始发送报文,同时应用程序发出的报文应该控制在流量参数描述的范围以内。
比如某个视频工作站希望与距离自己有若干网络跳数的多媒体服务器交流,为了确保这个多媒体流量具有可接受的质量,这个对话需要300Kbit/s的带宽,需要100ms的延迟;
另一个对话是IP电话用户handset1与距离自己比较远的handset2通话,为了保证这个语音流量的质量,需要保障500Kbit/s,需要50ms的延迟。
在
IntServ服务模型中,负责传送QoS请求的信令是RSVP(Resource Reservation Protocol)资源预留协议,它通知路由器应用程序的QoS 需求。RSVP 是在应用程序开始发送报文之前来为该应用申请网络资源的。 Intserv实际上是一种对服务的预定机制,通过申请来获取相应得服务,这里面主要依靠的就是RSVP资源预留协议。
IntSev模式下,需要在沿路上的路由器或者交换机作如下的几个工作:网络在收到应用程序的资源请求后
,执行资源分配检查 Admission control 即基于应用程序的资源申请和网络现有的资源情况,判断是否为应用程序分配资源,一旦网络确认为应用程序的报文分配了资源,则只要应用程序的报文控制在流量参数描述的范围内,网络将承诺满足应用程序的 QoS 需求。而网络将为每个流(flow)由两端的 IP 地址、端口号、协议号确定、维护一个状态,并基于这个状态执行报文的分类、流量监管、policing、排队及其调度来实现对应用程序的承诺。
RSVP
:
RSVP是第一个标准的
QoS信令协议,它用来动态地建立端到端的QoS,它允许应用程序动态地申请网络带宽等。它是IP协议,IP的ID是46,tcp和UDP端口是3455。RSVP协议不是一个路由协议,相反,它按照路由协议规定的报文流的路径为报文申请预留资源,在路由发生变化后,它会按照新路由进行调整,并在新的路径上申请预留资源。RSVP 只是在网络节点之间传递 QoS 请求,它本身不完成这些QoS 的要求实现,而是通过其他技术来完成这些要求的实现。(RSVP只是一种用来预定的协议)
RSVP 的处理是接收方发出资源请求
,按照报文发送的反向路径发送资源请求,所以它可以满足非常大的多播组,多播组的成员也可以动态变化,RSVP 协议是针对多播设计的,单播可以看作是多播的一个特例。
由于 RSVP 在 Internet 上还没有得到广泛的推广,在主机不支持 RSVP 的情况下,我们可以通过配置 RSVP 代理,即代替不支持 RSVP 的主机发送 RSVP 报文来获得这种服务,对报文流路径上不支持 RSVP的路由器,它只需要简单的转发RSVP报文所以对RSVP协议不会有太大影响,但这些节点不会对报文提供所要求的QoS 。(这是RSVP 的一个缺点)
具体事例:
IP电话1要与IP电话2进行语音的数据传递,IP电话1发送一个路径消息给接收方IP电话2,这个消息还收集了中间节点的Qos能力的信息,当接收方IP电话2收到这个消息后开始处理这个消息,产生一个预留(reservation)请求,要求带宽为20Kbps、200ms的延迟,预留请求再逆向传输给发送方,以确保真正的预留资源的请求,当发送方收到该预留请求后,开始按照预留的要求分配相应的网络资源发送数据。
RSVP 信令在网络节点之间传送资源请求
,而网络节点在收到这些请求后,需要为这些请求分配资源,这就是资源预留。网络节点比较资源请求和网络现有的资源,确定是否接受请求,在资源不够的情况下,这个请求可以被拒绝,可以对每个资源请求设置不同的优先级。这样,优先级较高的资源请求可以在网络资源不够的情况下,抢占较低优先级的预留资源,来优先满足高优先级的资源请求。
资源预留判断是否接受资源请求,并承诺对接受了的资源请求提供请求的服务,但资源预留本身不实现承诺的服务,需要通过队列等其他技术来实现。
Intserv 有它的好处,但是也有严重缺点,首先就是 RSVP 协议数据太多,而且不断刷新,并且这种给单一数据流的路径进行带宽预留的解决思路在浩瀚的Internet上实现简直是不可能的,而且RSVP的部署,厂商之间设备的互联,业务管理方面等存在着种种问题,所以这么模型在 1994 年推出之后就没有获得任何规模的商业应用。
3
.DiffServ区分服务模式
DiffServ 是一个多服务模型
,它可以满足不同的 QoS 需求,与 IntServ 不同,它不需要使用 RSVP即应用程序在发出报文前,不需要通知路由器为其预留资源,对 DiffServ 服务模型,网络不需要为每个流维护状态 ,它根据每个报文指定的QoS 来提供特定的服务,可以用不同的方法来指定报文的 QoS,如IP报文的优先级位(IP Precedence) ,报文的源地址和目的地址等,网络通过这些信息来进行报文的分类、流量整形、流量监管和队列调度。
DiffSev是一个有多个组件组成的复杂的体系结构。每个组件在网络中都具有不同的作用,因此每个组件的操作都是不同的。
DiffSev体系结构的主要组件完成以下任务:
- 分组分类(Packet Classification):针对第2层或第3层信息简单进行分类,它可以区分不同类型分组的机制。一个简单的分组分类机制的例子是,对照寻找特定源IP地址和目的IP地址分组的访问列表进行匹配。分组分类也可以更加复杂,比如检查分组以区分其目的类型是URL还是MIME类型。在Cisco路由器中一种可用的复杂分组分类的机制是基于网络的应用识别(Network-Based Application Recongnition,NBAR)。NBAR可以适应前面所列出的第4层到第7层各层的特性。NBAR也能够进行有状态分组的检查,很明显地增加了潜在功能。无论一种特定机制的实际分类能力如何,分组分类典型的实现应尽可能靠近数据流的源端,而且通常与分组标记一同使用。
- 分组标记(Packet Marking):是一种允许网络设备根据分组类型进行不同标记的功能,所以在未来的网络设备中,它们更容易被区分。当分组在第一跳的路由器中分类后,标记就完成了,所有后继的路由器仅仅察看标记,就知道如何处理该分组。分组标记通过与分组分类一起尽可能在靠近源端出完成。DiffSe模型如此的原因是,复合的分组分类和分组标记都推荐仅在第一跳的具有第3层能力的设备中实现。然后在整个网络中分组都携带此标记,这样网络核心的责任就限制在简单地分组分类(可以基于在网络边界所实现的标记值),以及将这些分组交换到相应的出口端。
- 拥塞管理(Congestion Management):有许多子组件(比如FIFO、PQ等),但拥塞管理基本的功能是将各种类型的数据流隔离(依据第一跳中的复合分类,抑或依据非边缘设备的分组标记),保护每一类数据流不受其他类的影响,然后分配各类数据流访问各种网络资源的优先级。通常拥塞管理主要关心的是对传输分组的重排。会影响每个类所获得的总带宽,也会影响器延迟和抖动特征。由于队列长度的限制,一个特定类型的数据流分组的延迟会影响该类型数据流的分组丢失。换句话说,如果一个特定类型数据流的延迟时间很长,而且队列已满,那么这类分组的后面部分将被丢弃。Cisco路由器的拥塞管理是一种出口功能,还包括如CBWFQ和LLQ机制。在实时环境中,拥塞管理通常在所有的网络层(访问、分布、核心层)中采用,但并没有严格的规则指明在网络中那个部分必须使用拥塞管理。
- 拥塞避免(Congestion Avoidance):专门设计用于丢弃分组,以达到避免拥塞的目的。拥塞避免的概念是基于TCP操作的。简单的例子,一个人问了另一个人一个问题,但没有得到回答,经过了一段合理的时间后,发问方会假设对方没有听到这个问题,他会再次发问。TCP操作基本相似,当TCP数据流发送后,发送方期待接收方发送一个ACK确认消息来确定对方已收到该数据包。如果在一定时间内,发送方未收到此ACK,它假设接收方为收到这些传输。这样发送方将减少其TCP窗口的大小(实际上是减少发送速率),并再次发送未收到ACK的数据包,注意到所有者都是在发送方未真正从接收方处获悉并未接收到数据包发生的。Cisco设备中拥塞避免是通过加权早期随机监测(Weighted Random Early Detection,WRED)来实现的,拥塞避免是一个监视队列深度,并随机丢弃各种数据流的分组的进程。随机丢弃各种数据流的分组,要避免两件事:第一,防止队列完全装满,如果允许全部装满,尾部丢弃(tail drop)将会发生。尾部丢弃并不是一个好的方法,因为同一个数据流的大量分组被丢弃后,将导致TCP多次减少其窗口的大小,因此造成链路利用率很低;第二,可以在决定标记的进程中增加一个功能,以决定那些分组可以被随机的丢弃。
- 流量调节(Traffic Conditioning):流量调节包括两个组件,一是监控组件,监控组件负责流量监控,也就是说,数据流通过监控组件的速率超过限定速率时丢弃分组。Cisco中所实现的监控组件的粒子是允许访问速率(Committed Access Rate,CAR)监控和基于类的监控。监控的目的是调节极限流量,实际应用中监控的例子是限制通过特定接口的FTP流量总量为1Mbit/s。超过这个限定的数据流将会被丢弃。TCP会重传被丢弃的分组,而UDP不会;第二是整形组件,负责对流量的整形,在cisco设备中,有多种格式:通用流量整形(Generic Traffic Shaping,GTS)、帧中继流量整形(Frame Relay Traffic Shaping,FRTC)和基于类的流量整形等等。整形的目的是限制分组的速率,它将那些通过整形组件的超出限定速率的分组放在缓冲区中,稍后再发送这些分组。这样经过一段时间后发送速率可以平滑低过渡到给定的速率,这一点和监控组件的操作正好相反,在监控组件中,超过限定速率的流量将被丢弃。监控组件和整形组件各有利弊。
第三部分 DiffSev服务
第四部分 Qos的执行方法
1
.Qos组件
对于
Cisco IOS软件的设备,其排队机制包含下列主要的组件:分类、标记、流量调节、拥塞管理和拥塞避免。
对于入站的数据包的DSCP、Cos、IP优先级、端口配置或ACL配置和映射表进行分类,定义内部DSCP值。当数据帧穿过并离开出口的过程中,流量控制决定是否要丢弃数据包或降低其优先级,确定出站标记和策略来决定数据帧应该加入那个传输的队列(可能会修改内部的DSCP值)。数据帧进入到传输队列时,拥塞避免决定在队列的填满程度达到指定的值或完全填满时丢弃数据包,拥塞管理决定设备何时传输队列中的数据包。
通过
3个步骤来配置所有的方法:
步骤1:类映射配置,通过命令class-map来配置
在MQC中配置任何Qos方法的第一个步骤是配置类映射。简单地说,类映射定义了希望路有器映射那个数据流。这是允许路由器对不同数据流类型区别处理的基本步骤。
为了区分数据流,可能映射数据流的一个特征或多个特征。例如,需要区分10.1.1.0和10.1.2.0的数据流,源端IP地址是唯一需要配置的特征。然而,如果有多个来自10.1.1.1的数据流需要区分,同时需要区分来自10.1.1.2的多个数据流,你可能需要多个原则,比如TCP或UDP端口等来对数据流分类。
类映射的配置:
* 映射名称
* 一系列match命令
* 有两个选项来创建类映射match-any和match-all,默认为匹配所有
配置:
class-map 名称 [match-any|many-all]
many-any:是一个逻辑或(or)操作。在此操作中只要有一个匹配条件和分组所属的特定类匹配
many-all:是一个逻辑与(and)操作,在操作中必须所有的匹配条件和分组所属的特定类匹配。
步骤2:策略映射配置,通过命令policy-map来管理
类映射的功能仅仅是在类映射中根据给定的特征来识别数据流,而数据流的实际处理是由策略映射来定义,针对类映射应用不同的Qos特性。
策略映射配置:
* 映射名称
* 应用某个类映射,并应用相应的策略
* 一个策略映射中可以匹配256种不同的类映射
* 多个策略映射可以嵌套
配置:
policy-map 名称
class 类映射
步骤3:应用服务策略到接口上,通过命令service-policy来应用
即使你配置了类映射和策略映射,但没有在接口上应用这个策略映射,这些策略是没有任何作用的。
配置:
service-policy [input|output] 策略映射名称
input:策略映射在通过该接口进入路由器的数据流实现
output:策略映射在通过该接口离开路由器的数据流实现。在特定接口实现策略映射输入或输出依赖在策略映射中使用何种Qos方法。有些行为仅仅在输出策略中使用。
第五部分 分组分类和标记
1
. 分类是能够以特定优先级或预定的参数来区分帧或数据包。路由器或交换机根据分类指定的内部
DSCP值进行Qos数据包处理,包括策略和调度。分类的依据:
- 第1层:物理接口、子接口、PVI、端口
- 第2层:MAC地址、802.Q/p的Cos位、vlan标志、MPLS EXP、ATM的信元丢失优先(CLP)、帧中继的可丢弃位
- 第3层:IP优先级、DSCP值、源/目标IP地址
- 第4层:TCP/UDP端口号
- 第7层:应用程序特征、URL
分类方法:
- 按接口的信任模式
- 按接口的手工分类(使用DSCP、IP优先级或COS值)
- 按数据包(基于ACL访问列表)
- NBAR,基于网络的应用识别
Qos策略的首要任务是识别需要进行分类的通信。在所有
CISCO路由器和交换机上,如果只启用Qos,而没有做其他Qos配置,则所有通信流都被归为默认类别。入站帧的默认DSCP值为0。
2
. 第3层(packet)分类和标记
IP
优先权
TOS 整个字段一共
8 位,下图中是 ip precedence 的标识方法,使用前三位,也就是 P0、P1、P2 一共三位,共 8个 bit 位,也就是 8 个优先级,分别是0-7,其中 6 和7一般保留,常用的0-5,下面部分介绍的是 IP 优先级的含义,提供这个表格的意义在于 进行更改数据包优先级等配置时,
我们既可以使用数字,也可以使用名称。紧跟的3个有效的位分别定义了延迟、吞吐量和可靠性,但由于多种原因并没有广泛被接受。
位数 IP优先级
000 0 routine(优先级0)
001 1 priority(优先级1)
010 2 immediate(优先级2)
011 3 flash(优选级3)
100 4 flash-overrid(优先级4)
101 5 critical(优先级5)
110 6 internat(优先级6)
111 7 network(优先级7)
DSCP
值
IP优先权只使用了
TOS子段的前3位,后3位很少使用,DSCP值使用了TOS的前6位进行标记,这样用作分组标记的位数就从8位增加到64位,而且消除了“浪费的”位。
PHB 类别 丢弃概率 DSCP值
default 00 000000 0
AF 类别1 AF1x AF11(丢弃概率低) LOW 00 001010 10
AF12(丢弃概率中) MEDIUM 00 001100 12
AF13(丢弃概率高) HIGH 00 001110 14
AF 类别2:AF2x AF21(丢弃概率低) LOW 00 010010 18
AF22(丢弃概率中) MEDIUM 00 010100 20
AF23(丢弃概率高) HIGH 00 010110 22
AF 类别3:AF3x AF31(丢弃概率低) LOW 00 011010 26
AF32(丢弃概率中) MEDIUM 00 011100 28
AF33(丢弃概率高) HIGH 00 011110 30
AF 类别4:AF4x AF41(丢弃概率低) LOW 00 100010 34
AF42(丢弃概率中) MEDIUM 00 100100 36
AF43(丢弃概率高) HIGH 00 100110 38
EF 00 101110 46
48-55
56
分类是没有范围限制的,也就是说我们可以对数据进行灵活的分类,比如说把某一个源
ip 到目的 ip 的流量优先级进行更改 IP 优先级或者 DSCP 的操作。也可以定义去更改某一个特定的流量(扩展控制列表)的优先级。
通常于网络边界处对报文进行分类时,同时标记IP优先级或 DSCP。这样,在网络的内部就可以简单的使用 IP 优先级或 DSCP 作为分类的标准,而队列技术如 WFQ 等 CBWFQ 就可以使用这个优先级来对报文进行不同的处理。
什么是标识,实际上就是通过更改这些优先级字段将这些数据分出种类来,即便是上面的图标中有所谓的什么 0-7 优先级,好似 7 要比 0 就会优先级大一些,但是一定要清楚这只 是区分,执行的策略要靠后面的队列机制来解决,实际上之所以这样定义优先级我认为只是为了制定一个共同遵守的类别优先标准,没有实际的意义,真正的操作是在配置上针对于不同优先级采用的措施例如在队列里面使用什么标识的数据包属于什么队列等等。
3.
第2层(frame)的分类和标记
第
2层标记帧的方法是根据帧(frame)的特征来区分,那些帧当它们沿交换的基础设施移动时应当接受该特征。然而,在第2层唯一的标记帧的方法是在ISL或802.1Q的头部。
正常的以太网 frame中是不存在标记的,但是ISL和 dot1q的 frame 中有三个 bit 定义服务级别,一共有6个服务级别可以使用。
802.1Q/p中用户优先级字段称为服务类别COS,不同类型的通信流被赋予不同的COS值:
值 优先级
7 保留Reserved
6 保留Reserved
5 语音传输Voice Bearer
4 视频会议Video Conferencing
3 呼叫信令Call Signaling
2 高优先级数据High Priority Data
1 中优先级数据Medium Priority Data
0 尽力而为的数据Best Effort Data
4
.第2层和第3层的映射
当帧
/分组从第2层环境传到第3层环境时,ISL和802.1Q头部被丢弃。为了保持端对端的Qos,将第2层Cos值映射到第3层Tos值能力很有必要。当帧/分组从路由的网络返回到交换网络时,ISL或802.1Q的头部将再次使用携带第2层Cos标记。当网络中包含不具备第3层能力的第2层设备时,这点尤为重要,因为他们可能理解Cos标记,但不理解Tos标记。而且,为保持端对端Qos,必须利用第3层标记在这些下行分组中标记第2层的Cos值。
默认的
Cos到DSCP的映射
Cos 0 1 2 3 4 5 6 7
DSCP 0-7 8-15 16-23 24-31 32-39 40-47 48-55 56
默认
IP优先权和DSCP的映射
IP优先 0 1 2 3 4 5 6 7
DSCP 0 8 16 24 32 40 48 56
IP优先权到
DSCP映射是可以配置的,2950和3550系列交换机都支持用户配置的Cos到DSCP的映射。通过配置命令:
mls qos map cos-dscp
mls qos map ip-prec-dscp
案例:
switch(config)#mls qos map cos-dscp 0 8 16 30 30 46 50 50
switch#show mls qos map cos-dscp
cos-dscp map :
cos: 0 1 2 3 4 5 6 7
-----------------------------------------
dscp: 0 8 16 30 30 46 50 50
5.
可信任边界
可信任边界是所有支持
Qos分类的交换机支持的一种分类配置的选项。交换端口和接口的可信任状态定义了如何对入口分组进行分类、标记和随后的调度。对于仅仅依靠cos值保证Qos的交换机而言,被设置为不可信任的端口将任何cos值重新分类为0或一个静态配置的cos值。分组的cos值到达不可信任的端口时,被假设为不能验证,而且交换机系统管理员认为该值没有必要,根据不同的平台,不可信任端口可能被配置为根据802.1Q标记或访问列表对任何入口帧重新分类或标记IP优先权、DSCP或cos值。信任配置指定信任数据包中原有的分类。例如,当交换机配置为信任DSCP的时候,如果它接收到DSCP值为46的数据包后,那么它接受原来的DSCP值,并将其内部DSCP值设置为46。尽管有入站分类配置,但交换机仍然可以通过策略和出站标记灯方法修改出站帧的DSCP和COS值。
可信任入站帧的DSCP、IP优先级或COS值。在信任COS或IP优先级的时候,交换机将入站数据包的COS或IP优先权映射到一个内部DSCP值。
交换机相连的工作站发送802.1q标记的帧给交换机,该帧的Cos值为5。如果该端口被配置为不可信任,交换机设置一个与帧相联的内部DSCP值为0。帧被发送前交换机并不真正修改帧的Cos值。所有不可信任的端口默认设置内部DSCP值为0。然而,内部DSCP值的替换由不同的平台来配置。如果交换机端口被配置为可信任COS,此COS值在入口处并不改变,COS值为5对应为DSCP值为40。
假设可信任端口接收的入口分组的IP优先权、DSCP或COS值是有效的,不可信任端口认为,接收到的入口帧的IP优先权、DSCP或COS值被认为无效的。
配置:
1)信任COS配置
a) 进入全局模式 configure terminal
b) 进入接口模式 interface 接口
c) 配置信任cos mls qos trust cos
d) 指定接口默认的cos值(可选)mls qos cos value 默认的CoS值是0
e) 配置无标记帧或标记帧的替换 mls qos cos override //override表示在mls qos cos 值命令中覆盖标记帧的cos值。
接口获取接口入站数据包的CoS值,若数据包没有CoS标记,则使用接口默认CoS值,并按照CoS-to-DSCP表,转换到DSCP
案例:
switch(config)#interface f0/10
switch(config-if)#mls qos trust cos
switch#show mls qos interface f0/10
----------------------------------------------
FastEthernet0/10
trust state: trust cos
trust mode: trust cos
COS override: dis
default COS: 0
DSCP Mutation Map: Default DSCP Mutation Map
Trust device: none
Switch(config)#interface f0/10
Switch(config-if)#mls qos cos 5
Switch(config-if)#mls qos cos override //将取消信任cos,并以default COS代替
Switch#show mls qos interface f0/10
--------------------------------------------------
FastEthernet0/10
trust state: not trusted
trust mode: not trusted
COS override: ena
default COS: 5
DSCP Mutation Map: Default DSCP Mutation Map
Trust device: none
2
)可信任DSCP
可信任
DSCP直接将入口分组的DSCP值映射到内部DSCP值。可信任DSCP是直接与实现分类和在入口标记的交换机连接的推荐信任配置。由于分类和标记在内部连接交换机端口的入口发生,只有可信任DSCP允许当前交换机实现最初的入口分类和连接交换机的标记。可信任DSCP也是与CISCO IP电话连接的借口的可选配置。CISCO IP电话标记具有DSCP和COS值的帧,CISCO IP电话的可信任帧是一种常用的应用。
a) 进入全局模式 configure terminal
b) 进入接口模式 interface 接口
c) 配置信任dscp mls qos trust dscp
接口获取接口入站数据包的DSCP值
对于有CoS标记的非IP数据包,则接受数据包的CoS值并按照CoS-to-DSCP表,转换到DSCP
对于没有CoS标记的非IP数据包,则使用接口默认的Cos值并按照CoS-to-DSCP表,转换到DSCP
案例:
switch(config)#mls qos
switch(config)#interface f0/10
switch(config-if)#mls qos trust dscp
switch#show mls qos interface f0/10
sw2#show mls qos int f0/10
FastEthernet0/10
trust state: trust dscp
trust mode: trust dscp
COS override: dis
default COS: 0
DSCP Mutation Map: Default DSCP Mutation Map
Trust device: none
3
)可信任IP优先权
可信任
IP优先权是只能在交换机3550系列交换机中可用的特性。可信任IP优先权利用IP优先权映射表来将入口分组的IP优先权值映射到一个内部的DSCP值。
a) 进入全局模式 configure terminal
b) 进入接口模式 interface 接口
c) 配置IP优先权 mls qos trust ip-precedence
接口获取接口入站数据包的IP优先级值,并按照IP-precedence-to-DSCP表,转换到DSCP
对于有CoS标记的非IP数据包,则接受数据包的CoS值并按照CoS-to-DSCP表,转换到DSCP
对于没有CoS标记的非IP数据包,则使用接口默认的Cos值并按照CoS-to-DSCP表,转换到DSCP
案例:
sw2#conf t
sw2(config)#interface f0/10
sw2(config-if)#mls qos trust ip-precedence
sw2#show mls qos int f0/10
FastEthernet0/10
trust state: trust ip-precedence
trust mode: trust ip-precedence
COS override: dis
default COS: 0
DSCP Mutation Map: Default DSCP Mutation Map
Trust device: none
6
.流量分类和标记
数据报标记就是修改
IP优先级或者DSCP,但是由于IP优先级和DSCP都是占用TOS字段,后者相当于前者的扩展,所以不能同时设置这两种值,如果同时设置了这两个值,那么只有IP DSCP 的值生效。
分类技术:
1) access-list分类:可以根据协议、源地址、目标地址、源端口、目标地址等来对流量分类
配置命令:扩展访问控制列表
access-list 序号 [dynamic 动态名称 [timeout minutes]] {deny | permit} 协议 源地址 源地址反掩码 目标地址 目标地址反掩码 [precedence 优先权] [tos tos值] [log | log-input] [time-range 时间名称] [fragments]
配合调用:CAR、队列技术、route-map、class-map
2) route-map基于路由的分类:可以根据流量的来源和包的大小分类
配置命令:route-map 名称 [permit | deny] [序列号]
分类:在路由图配置模式下
(config-route-map)# match length min max 匹配数据包的长度大小
(config-route-map)# match ip address 访控列表 匹配访问控制列表的数据
配合调用:PBR(基于路由的策略)
3) class map类映射
配置:
A) class-map match-all|match-any
名称
match-all:是一个逻辑与操作,在此操作中必须所有的匹配条件和分组所属的特定类匹配
match-any:是一个逻辑或操作,在此操作中只要一个匹配条件和分组所属的特定类匹配
默认为match-all,配置其他类映射参数前必须选择两个选项之一。
B)
定义匹配语句
match 匹配选项
匹配选项:
- access-group:允许对一个访问控制列表ACL配置
- any:允许对所有分组进行映射。
- Class-map:可以嵌套class map
- Cos:允许对802.1Q或ISL,头部的第2层COS值的匹配
Match cos 0-7级别
- Destination-address:允许对目的端MAC地址匹配
Match destination-address mac mac地址
- Dscp:允许对dscp值匹配
Match dscp dscp值
<0-63> Differentiated services codepoint value
af11 Match packets with AF11 dscp (001010)
af12 Match packets with AF12 dscp (001100)
af13 Match packets with AF13 dscp (001110)
af21 Match packets with AF21 dscp (010010)
af22 Match packets with AF22 dscp (010100)
af23 Match packets with AF23 dscp (010110)
af31 Match packets with AF31 dscp (011010)
af32 Match packets with AF32 dscp (011100)
af33 Match packets with AF33 dscp (011110)
af41 Match packets with AF41 dscp (100010)
af42 Match packets with AF42 dscp (100100)
af43 Match packets with AF43 dscp (100110)
cs1 Match packets with CS1(precedence 1) dscp (001000)
cs2 Match packets with CS2(precedence 2) dscp (010000)
cs3 Match packets with CS3(precedence 3) dscp (011000)
cs4 Match packets with CS4(precedence 4) dscp (100000)
cs5 Match packets with CS5(precedence 5) dscp (101000)
cs6 Match packets with CS6(precedence 6) dscp (110000)
cs7 Match packets with CS7(precedence 7) dscp (111000)
default Match packets with default dscp (000000)
ef Match packets with EF dscp (101110)
- Fr-de:允许对设置了帧中继可丢弃指示符(DE)位分组的匹配
- Fr-dlci:允许对设置帧中继dlci号匹配
- Input-interface:允许根据分组进入路有器的接口对分组匹配。这一点在多个远程站点通过帧中继与端点路由器连接的环境中很有用。在这种情况下,若能提供具有子接口的点对点帧中继的配置,那么来自给定远程站点的所有数据流就可以根据数据流到达时的子接口来匹配。
- Ip:允许基于IP优先权、DSCP和RTP端口号来匹配
Match ip ip优先权|dscp|rtp
- Mpls:允许根据多协议标签交换mpls实验位对分组进行匹配
- Not:除了匹配内容之外的分组
- Packet:对数据包进行匹配
Match packet length min 最小值 max 最大值
- Port-type:对端口的类型进行匹配,路由接口还是交换接口
Match port-type routed|switched
- Precedence:允许对优先权对分组进行匹配
Match precedence 值
<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)
- Protocol:允许与预先定义的特定协议进行匹配。基于网络的应用识别(NBAR)识以中心的分类技术,它可根据静态和动态分配的短口号对大量应用进行识别。
- Qos-group:允许对分组按照器qos-group标记进行匹配。
- Source-address:源端IP地址的匹配
- Vlan:vlan号(交换机)
案例:
r1(config)#access-list 101 permit tcp any any eq www
r1(config)#access-list 102 permit tcp any any eq ftp
r1(config)#access-list 103 permit ip host 10.1.1.1 any
r1(config)#access-list 104 permit ip host 10.1.1.2 any
r1(config)#class-map HTTP //match-all为默认配置
r1(config-cmap)#match access-group 101
r1(config-cmap)#match access-group 103
r1(config)#class-map FTP //match-all为默认配置
r1(config-cmap)#match access-group 102
r1(config-cmap)#match access-group 104
----------------------------------------------------------------
r1#show class-map
Class Map match-all HTTP (id 1)
Match access-group 101
Match access-group 103
Class Map match-all FTP (id 2)
Match access-group 102
Match access-group 104
Class Map match-any class-default (id 0)
Match any
------------------------------------------------------------------------
Class-default:无论何时建立了其他什么类,该命令自动建立,是对所有不属于任何类的数据流给出一个匹配
C)
流量策略映射:
配置:
Policy-map 名称
进入config-pmap配置模式
- Class:指定你希望配置的策略的类名称
- Description:描述性语句
- rename:重命名策略
可进行策略配置的内容:
- bandwidth:允许对CBWFQ配置,指定数据流的最小带宽保证。
*<8-2000000>:kbit/s
*占总带宽的百分比
*remaining:剩余带宽的百分比
- drop:丢弃该类数据流
- fair-queue:实现在此类中基于流的加权公平队列
- police:允许对监控器配置,也称为速率限制。当在类中使用中,police命令被称基于类的监控
* <8000-2000000000>:bit/s Bits per second
* cir:承诺速率
- priority:指定该类为LLQ类,该类应该获得严格的调度优先权以获得最小的延迟、抖动和分组丢失。也规范了此类的带宽总量
<8-2000000>:kbit/s
percent:占总带宽百分比
- queue-limit:指定在此队列分组可获得的最大号码
<1-4096>:包数
- random-detect:利用WRED来实现拥塞避免。默认的,IP优先权用来进行加权判断,但该命令的额外选项允许WRED算法参考DSCP。此命令也提供了一个选项用来在此类中实现显示地拥塞通知(ECN)
* discard-class:设置被丢弃类
* discard-class-based:使能基于丢弃类的WRED丢弃的策略
* dscp:dscp值
* dscp-based:使能基于dscp类的丢弃策略
* ecn:ecn显示地拥塞通知值
* exponential-weighting-constant:指数加权因子
* prec-based:使能基于优选权类的WRED策略
* precedence:优先权值
* <cr>
- service-policy:允许对层分级策略(在策略内套策略)的配置,他可以用来实现可能在一个策略中完成的功能。例如,一条T1链路通过最高层策略整形为512k,然后在第2层策略内利用CBWFQ/LLQ将这个512k平分。最高策略有时称为父亲策略,第2层策略有时称为孩子策略。
- shape:允许对基于类的整形进行配置,基于类的整形功能是在每个类机和中使用普通的流量整形方法。在这种情况下,只有在此类中的数据流将被整形。而基于接口的整形不同,它对于整个接口的所有数据流进行整形
* adaptive:Enable Traffic Shaping adaptation to BECN
* average:配置令牌桶值: CIR (bps) [Bc (bits) [Be (bits)]],send out Bc only per interval
* fecn-adapt:Enable Traffic Shaping reflection of FECN as BECN
* fr-voice-adapt:Enable rate adjustment depending on voice presence
* max-buffers:Set Maximum Buffer Limit
* peak:configure token bucket: CIR (bps) [Bc (bits) [Be (bits)]], send out Bc+Be per interval
- set:允许对分组标记。通过使用set命令可以标记多个字段,包括IP优先权、IP DSCP、MPLS实验位,第2层cos、atm的信元丢弃优先权和Qos组
* atm-clp:设置ATM的CLP位到1
* cos:设置IEEE 802.1Q/ISL的cos优先级
* discard-class:设置Discard
* dscp:设置ipv4和ipv6的DSCP值
* fr-de:设置帧中继的DE位为1
* ip:设置IP值
* mpls:设置MPLS的values
* precedence:设置优先权
* qos-group:设置QoS Group
案例:
router(config)#access 101 permit tcp host 192.168.1.1 any eq 80
router(config)#access 102 permit tcp host 192.168.1.1 any eq 21
router(config)#access 103 permit tcp any any eq 80
router(config)#access 104 permit tcp any any eq 21
router(config)#class-map A_HTTP
router(config-cmap)#match access-group 101
router(config)#class-map A_FTP
router(config-cmap)#match acess-group 102
router(config)#class-map B_HTTP
router(config-cmap)#match acess-group 103
router(config)#class-map B_FTP
router(config-cmap)#match acess-group 104
router(config)#policy-map A_policy
router(config-pmap)#class A_HTTP
router(config-pmap-c)#bandwidth 128
router(config-pmap)#class A_FTP
router(config-pmap-c)#bandwidth 128
router(config-pmap)#class B_HTTP
router(config-pmap-c)#bandwidth 64
router(config-pmap)#class B_FTP
router(config-pmap-c)#bandwidth 32
router#show policy-map
----------------------------------------------------------
Policy Map A_policy
Class A_HTTP
bandwidth 128 (kbps) Max Threshold 64 (packets)
Class A_FTP
bandwidth 128 (kbps) Max Threshold 64 (packets)
Class B_HTTP
bandwidth 64 (kbps) Max Threshold 64 (packets)
Class B_FTP
bandwidth 32 (kbps) Max Threshold 64 (packets)
Class class-default
D
)应用策略到接口
配置:
service-policy 名称 input|output
案例:
CCIE-LAB
题目要求:Allocate 10Mbps in the Fastethernet 0/0 interface on RackYYR6 for traffic coming from Backbone 2, Your solution should apply to all possible traffic from Backbone 2(CBWFQ)
配置:
R6
ip cef
class-map match-all fromBB2
match input-interface f0/1.1
policy-map CBWFQ
class fromBB2
bandwidth 10000
interface f0/0
service-policy output CBWFQ
案例:CCIE-LAB
题目要求:在R1 上作配置,使从VLAN_A 的user 进入的www traffic 的 ip pre 为3,其他所有traffic 是ip pre 1。要求不能使用CAR和PBR。
VLAN_A VLAN 11 YY.YY.15.0/24
配置:
R1
conf t
ip cef
access 101 permit tcp 1.1.15.0 0.0.0.255 any eq 80
class-map YY
match access-group 101
policy-map YY
class yy
set ip precedence 3
class class-default
set ip precedence 1
interface f0/0
service-policy input YY
案例:CCIE-LAB
题目要求:On R6 从vlanC来的路由分类Class1:match cs5 size200-1500 Class2:match cs5 size=500
第一个class要求:当dscp为cs5及包的大小在200-1000之间时,ip precedence为immediate;第二个class要求:当dscp为某值且包的大小为500时,ip precedence为priority
VLAN C是VLAN 56 连接R6的E0口 yy.yy.56.0/24,这里要注意匹配的顺序,因为500在200-1500范围内,所以要注意区分
配置:
R6
config term
ip cef
access 10 permit 1.1.56.0 0.0.0.255 //区分从vlan c来的数据
class-map SIZE500 //针对dscp和包大小分类
match access-group 10
match dscp cs5
match packet length min 200 max 1500
class-map SIZE1500 //针对dscp和包大小分类
match access-group 10
match dscp cs5
match packet length min 500 max 500
policy-map CCIE //制定相应的策略
class SIZE500 //注意要先匹配包大小为500的
set ip precedence 1
class SIZE1500
set ip precedence 2
interface e0
service-policy input CCIE //应用到接口
show policy-map interface e0 //查看和验证配置结果