qos

相关协议
1) 802.1Q Virtual Bridged Local Area Networks
2) MEF5 Traffic Management
3) MEF10.2 Ethernet Services Attributes
4) RFC2697 srTCM - Single Rate Three Color Marker
5) RFC2698  trTCM - Two Rate Three Color Marker


服务模型
通常QoS提供以下三种服务模型(服务模型,是指一组端到端的QoS功能):
1)Best-Effort service(尽力而为服务模型)
2)Integrated service(综合服务模型,简称IntServ)
3)Differentiated service(区分服务模型,简称DiffServ)

Best-Effort服务模型,网络尽最大的可能性来发送报文。但对时延、可靠性等性能不提供任何保证。
Best-Effort服务是现在Internet的缺省服务模型,它适用于绝大多数网络应用,如FTP、E-Mail等,它通过FIFO队列来实现。

IntServ服务模型,在发送报文前,需要向网络申请特定的服务。
这个请求是通过信令RSVP(Resource Reservation Protocol)来完成的。

DiffServ服务模型,网络不需要为每个流维护状态,它根据每个报文的差分服务类,来提供特定的服务。


QoS技术包括流分类、流量监管、流量整形、接口限速、拥塞管理、拥塞避免等。
流分类:采用一定的规则识别符合某类特征的报文,它是对网络业务进行区分服务的前提和基础。
流量监管:对进入或流出设备的特定流量进行监管。当流量超出设定值时,可以采取限制或惩罚措施,以保护网络资源不受损害。可以作用在接口入方向和出方向。
流量整形:一种主动调整流的输出速率的流量控制措施,用来使流量适配下游设备可供给的网络资源,避免不必要的报文丢弃和延迟,通常作用在接口出方向。
拥塞管理:就是当拥塞发生时如何制定一个资源的调度策略,以决定报文转发的处理次序,通常作用在接口出方向。
拥塞避免:监督网络资源的使用情况,当发现拥塞有加剧的趋势时采取主动丢弃报文的策略,通过调整队列长度来解除网络的过载,通常作用在接口出方向。

QoS策略包含了三个要素:类、流行为、策略。
用户可以通过QoS策略将指定的类和流行为绑定起来,灵活地进行QoS配置。
用户可以通过命令定义一系列的规则来对报文进行分类。同时用户可以指定规则之间的关系:and或者or。
流行为用来定义针对报文所做的QoS动作。用户可以通过命令在一个流行为中定义多个动作。
策略用来将指定的类和流行为绑定起来,对分类后的报文执行流行为中定义的动作。用户可以在一个策略中定义多个类与流行为的绑定关系。

1. 流分类(Traffic Classification)
流分类策略除可以包括IP报文的IP优先级或DSCP值、802.1Q的VLAN Priority Code Point (PCP)值等带内信令,还可以包括输入接口、源IP地址、目的IP地址、MAC地址、IP协议或应用程序的端口号等。

(1) 基于IP 优先级的业务分类
IPv4报文在IP报文头的ToS(Type of Service)域中定义了8种IP业务类型。

(2) 基于DSCP(Differentiated Services Codepoint) 的业务分类
DiffServ模型定义了64种业务类型。

(3) 以太网QoS业务分类( COS )
802.1Q VLAN Tag的PCP字段(3Bit)定义了以下8种Traffic types。
=======================================================
Traffic Types      Acronym Priority 协议举例      业务特征
Network Control    NC    7    BGP, PIM, SNMP  网络维护与管理报文的可靠传输,要求低丢包率
InternetWork Control IC    6    STP, OSPF, RIP   大型网络中区分于普通流量的网络协议控制报文
Voice          VO    5     SIP, MGCP     适用于语音业务,一般要求时延小于10 ms
Video          VI    4      RTP        适用于视频业务,一般要求时延小于 100 ms
Critical Applications   CA    3     NFS, SMB, RPC   适用于要求确保最小带宽的业务
Excellent Effort     EE    2     SQL         用于一般的信息组织向最重要的客户发送信息
Best Effort       BE    0(default) HTTP, IM, X11    缺省业务类型,只要求"尽力而为"的服务质量
Background      BK    1      FTP, SMTP     适用于不影响用户或关键应用的批量传输业务
=======================================================

关于Traffic Type 和Priority的默认对应关系,注意由于缺省的发送Priority是0,缺省的Traffic Type是Best Effort,所以Best Effort的Priority为0。(The default priority used for transmission by end stations is 0. Changing this default would result in confusion and likely in interoperability problems. At the same time, the default traffic type is definitely Best Effort. 0 is thus used both for default priority and for Best Effort, and Background is associated with a priority value of 1. This means that the value 1 effectively communicates a lower priority than 0.)

802.1Q推荐的Traffic Type到队列的映射关系的映射关系定义。
Number of queues / Traffic types
1  {Best Effort, Background, ..., Network Control}
2  {Best Effort, Background, Excellent effort, Critical Applications}
   {Voice, Video, Internetwork Control, Network Control}
3  {Best Effort, Background, Excellent effort, Critical Applications}
   {Voice, Video}
   {Network Control, Internetwork Control}
4   {Best Effort, Background}
   {Critical Applications, Excellent effort}
   {Voice, Video}
   {Network Control, Internetwork Control}
5   {Best Effort, Background}
   {Critical Applications, Excellent effort}
   {Voice, Video}
   {Internetwork Control}
   {Network Control}
6   {Background}
   {Best Effort}
   {Critical Applications, Excellent effort}
   {Voice, Video}
   {Internetwork Control}
   {Network Control}
7   {Background}
   {Best Effort}
   {Excellent effort}
   {Critical Applications}
   {Voice, Video}
   {Internetwork Control}
   {Network Control}
8   {Background}
   {Best Effort}
   {Excellent effort}
   {Critical Applications}
   {Video}
   {Voice}
   {Internetwork Control}
   {Network Control}

2.流量监管(Traffic Policing)
约定访问速率(Committed Access Rate: CAR)
采用令牌桶(Token Bucket)对流量的规格进行评估。
令牌桶可以看作是一个存放一定数量令牌的容器。系统按设定的速度向桶中放置令牌,当桶中令牌满时,多出的令牌溢出,桶中令牌不再增加。
每到达一个报文就进行一次评估。每次评估,如果桶中有足够的令牌可供使用,则说明流量控制在允许的范围内,此时要从桶中取走与报文转发权限相当的令牌数量;否则说明已经耗费太多令牌,流量超标了。

 

MEF 制定了Bandwidth Profile parameters <CIR, CBS, EIR, EBS, CF, CM>.
1)Committed Information Rate(CIR),承诺信息速率,单位bits/秒,正常情况下业务的平均速率,>=0。
2)Committed Burst Size(CBS) ,承诺突发长度,单位bytes,正常情况下业务的突发报文大小,当CIR大于0时CBS必须大于或等于业务中最大报文长度(MTU)。
3)Excess Information Rate(EIR) ,扩展信息速率,单位bits/秒,业务可以占用的扩展带宽,>=0。
4)Excess Burst Size(EBS) ,扩展突发长度,单位bytes,占用扩展带宽的业务的突发报文大小,当EIR大于0时EBS必须大于或等于业务中最大报文长度。
5)Coupling Flag(CF) ,耦合标志,一个bool型参数,取值为0或1。
6)Color Mode(CM) ,颜色识别模式,只有两个取值,color-blind或者color-aware。

每个从UNI进入的业务报文都会依照带宽限制的执行准则根据一定的带宽限制算法被判断、标记不同的服务级别:绿色、黄色或者红色。
CIR是业务帧根据业务性能进行传递的平均速率,CIR必须大于等于0。把和CIR一致的业务帧标记为绿色。平均速率超过CIR的业务帧与CIR不一致,可以把它们标记为黄色(如果EIR非0),也可以丢弃(如果EIR等于O)。CIR为0意味着业务供应商没有提供带宽或者没有为传递用户业务帧提供性能保证。这就是通常所说的"尽力而为"业务,此时所有的业务帧都被标记为黄色。非O的CIR可以定义为小于或者等于UNI(User Network Interface)速率。如果在UNI上应用多个带宽轮廓,那么每个带宽轮廓的CIR值的总和必须小于或者等于UNI速率。
CBS是和CIR一致的业务帧的最大字节数。CBS的值和应用的类型或者业务支持的的流量有关系。例如,对于一个支持具有突发性的基于TCP的数据应用来讲,CBS会远远大于支持速率比较恒定的基于用户数据报协议(UDP)的应用的业务,例如VoIP。
EIR定义了大于等于CIR的可以进入供应商网络的业务帧。注意这些业务帧和CIR不一致因此它会没有任何性能保证地进行传递。EBS是指和EIR一致的业务帧最大的字节数。和EIR一致的业务帧被标记为黄色。平均速率大于EIR的业务帧属于和EIR不一致的业务帧被标记为红色,会被丢弃。
从用户的角度,带宽轮廓定义了在UNI允许进入供应商网络的满足"承诺信息速率(CIR)"以及"超额信息速率(EIR)"的以太网业务帧。允许没有超过"承诺"信息速率的业务帧进入供应商网络并且根据业务性能指标进行传递,需要承诺保证这部分报文的服务质量,例如时延、丢失率以及可用性等。这些业务帧属于"轮廓内"或者和带宽轮廓"一致的"业务帧。到达时高于CIR但是没有超出EIR的业务帧也允许进入网络,但是不承诺这部分报文的服务质量,报文的延迟、抖动可能很大,甚至会被大量丢弃。这些业务帧属于"轮廓外"或者和带宽轮廓"不一致的"业务帧。

MEF规定的Bandwidth Profile 算法如下:

但事实上上述算法只是一套理论上的执行过程,实际的网络设备或许无法完全按照上述过程执行,所以只要设备能够使执行结果和上述算法的结果近似即可。这样我们可以用两个简单的公式来实现类似的效果,即在任何时间段 ti 到 tj 内:
进入UNI的绿色报文数量不超过WG,其中WG≥Bc(ti)+CIR×(tj-ti);
进入UNI的黄色报文数量不超过WY,其中WY≥Be(ti)+EIR×(tj-ti);
针对黄色报文的带宽限制方式有两种,CF标志位的作用就是确定该UNI使用哪一种。具体来说,当CF位被置0的情况下,黄色报文的长期平均进入速率只要不超过EIR即可;当CF被置1的情况下,黄色报文的长期平均进入速率被限制在CIR+EIR减去绿色报文的进入速率。不管采用那种方式,黄色报文的突发速率总不超过EBS。(The Coupling Flag CF is set to either 0 or 1. The choice of the value for CF has the effect of con-trolling the volume of the Service Frames that are declared Yellow. When CF is set to 0, the long term average bit rate of Service Frames that are declared Yellow is bounded by EIR. When CF is set to 1, the long term average bit rate of Service Frames that are declared Yellow is bounded by CIR + EIR depending on volume of the offered Service Frames that are declared Green. In both cases the burst size of the Service Frames that are declared Yellow is bounded by EBS.)
简单来讲,CF置1等同于C桶溢出的令牌可以加到E桶。



RFC 2697 srTCM 单速率三色标记指定3个参数:承诺信息速率CIR 、承诺突发尺寸CBS 和超额突发尺寸EBS。
为方便,将两个令牌桶称为C桶和E桶,用Tc和Te表示桶中的令牌数量,Tc和Te初始化等于CBS和EBS。
Tc和Te在每秒钟内更新CIR次,更新时遵循以下规则:
如果Tc < CBS,则Tc增加1,否则
如果Te < EBS,则Te增加1,否则
Tc和Te都不增加
色盲模式下,在对到达报文(假设报文大小为B)进行评估时,遵循以下规则:
如果Tc-B >= 0,则报文被标记为绿色,且Tc降低B,否则
如果Te-B >= 0,则报文被标记为黄色,且Te降低B,否则
报文被标记为红色且Tc和Te都不降低。
非色盲模式下,在对到达报文(假设报文大小为B)进行评估时,遵循以下规则:
如果报文已被标记为绿色且Tc-B >= 0,则报文被标记为绿色,且Tc降低B,否则
如果报文已被标记为绿色或黄色且Te-B >= 0,则报文被标记为黄色,且Te降低B,否则报文被标记为红色且Tc和Te都不降低。

RFC 2698  trTCM算法 双速率三色标记指定4个参数:承诺信息速率CIR 、峰值信息速率PIR、承诺突发尺寸CBS 和峰值突发尺寸PBS。
trTCM算法中两个令牌桶的填充令牌的速率不同,分别为承诺的平均速率CIR(Committed Information Rate)和峰值速率PIR(Peak Information Rate)。
为方便将这两个令牌桶称为C桶和P桶,这两个桶的尺寸分别为承诺突发尺寸CBS(Committed Burst Size)和峰值突发尺寸PBS(Peak Burst Size)。
用Tc和Tp表示桶中的令牌数量,Tc和Tp初始化等于CBS和PBS。Tc和Tp在每秒钟内分别更新CIR和PIR次,每次更新增加一个令牌(除非桶满)。
在色盲模式下,在对到达报文(假设报文大小为B)进行评估时,遵循以下规则:
如果Tp-B < 0,则报文被标记为红色,否则
如果Tc-B < 0,则报文被标记为黄色,且Tp降低B,否则
报文被标记为绿色且Tc和Tp都降低B。
在非色盲模式下,在对到达报文(假设报文大小为B)进行评估时,遵循以下规则:
如果报文已被标记为红色或者Tp-B < 0,则报文被标记为红色,否则
如果报文已被标记为黄色或者Tc-B < 0,则报文被标记为黄色,且Tp降低B,否则
报文被标记为绿色且Tc和Tp都降低B。

3. 流量整形(TS: Traffic Shaping)
通用流量整形(Generic Traffic Shaping: GTS)
GTS与CAR一样,均采用了令牌桶技术来控制流量。GTS与CAR的主要区别在于:利用CAR进行报文流量控制时,对不符合流量特性的报文进行丢弃;而GTS对于不符合流量特性的报文则是进行缓冲,减少了由突发流量造成的报文的丢弃。流量整形与流量监管的另一区别是,整形可能会增加延迟,而监管几乎不引入额外的延迟。

整形的目的是减少突发流量(Shaping is a procedure to reduce the burstiness of traffic. A shaper is de-fined by a set of parameters. Those parameters should be chosen to ensure that the delay introduced by shaping function is bounded within the acceptable limits and that the traffic dropped at the shaper is kept to a minimum.)
MEF规定了2种算法。A shaper could be a single rate or a double rate shaper.
1)Single Rate Shaper
A single rate shaper could consist of three parameters CIR, CBS*, and CBS, in which:
CIR = the shaping rate of Green packets (average output rate of the shaper),
CBS = the shaping burst of Green packets (maximum output burst of the shaper)
CBS* = the accepted burst of Green packets (maximum buffer size for Green packets)
CBS* >= CBS, which means the shaper accepts larger burst at its input and generates smaller bursts at its output.

2)Double Rate Shaper

A double rate shaper could consist of parameters CIR, CBS*, CBS, EIR, EBS*, and EBS, in which, CIR, CBS*, and CBS are as defined above, and EIR, EBS*, and EBS are:
EIR = the shaping rate of Yellow packets (average output rate of the shaper),
EBS = the shaping burst of Yellow packets (maximum output burst of the shaper)
EBS* = the accepted burst of Yellow packets (maximum buffer size for Yellow packets)
EBS* >= EBS, which means the shaper accepts larger burst at its input and generates smaller bursts at its output.

4. 拥塞管理-队列调度技术
网络发生拥塞时,需要使用合适的队列技术来确保关键业务优先保障。
出端口发生拥塞情况时,通过适当的队列调度机制,可以优先保证某种类型的报文的QoS参数,例如带宽、时延、抖动等。
使用队列技术,在接口有能力发送报文之前先将报文在缓存中保留下来,直到接口可以继续发送报文,还可以将报文重新排序。
FIFO(First In First Out Queuing)
队列机制中最简单的,每个接口上只有一个FIFO队列,无需流分类、调度机制,按顺序取报文,无需对报文重新排序。
FIFO关心的就是队列长度问题,如果定义了较长的队列长度,那么队列不容易填满,被丢弃的报文也就少了,但是队列长度太长了会出现时延的问题,一般情况下时延的增加会导致抖动也增加;如果定义了较短的队列,时延的问题可以得到解决,但是发生Tail Drop的报文就变多了。
Tail Drop机制就是说如果该队列如果已经满了,那么后续进入的报文被丢弃。

PQ(Priority Queuing)
在报文到达接口后,首先对报文进行分类,然后按照报文所属类别让报文进入所属队列尾部,在报文发送时,按照优先级,总是在所有优先级较高队列中报文发送完毕后,再发送低优先级队列中报文。
PQ的优缺点很明显,优点是可以保证高优先级队列的报文可以得到较大带宽、较低的时延、较小的抖动;缺点是低优先级队列的报文不能得到及时的调度,甚至得不到调度,即会出现“饿死”现象。
PQ的每个队列内部使用FIFO逻辑,报文丢弃策略采用Tail Drop机制。

RR(Round Robin)
循环队列通过循环服务避免局部队列饥饿。调度器总是顺序地移到下一个有分组要发送的队列(空队列被跳过)。
循环调度的缺点是分组时延难于改进,容易产生时延抖动。

WRR(Weighted Round Robin)
加权循环队列算法。给较高优先级的队列分配较高的权重,也就是更多的时间时间片断。

DRR(Dificit Round Robin)
差额循环队列算法,或者称作DWRR(Dificit Weighted Round Robin).
DRR和WRR类似,不过不是按照时间片,而是按照byte数来应用权重。如果有剩下的byte数,可以记录下来供下次使用。
适用于不同封包长度下,WRR算法可能造成频宽分配不准的问题。
Like weighted round robin (WRR) each queue is serviced proportionately to its weighting. However, the weighting operates at the byte or bit level. In fact, each queue can be considered to have a token bucket associated with it. The token accumulation is related to the percentage allocated to that queue. When the queue is visited by the scheduler, packets are transmitted from the queue as long as there are sufficient tokens in the bucket. When the next packet in the queue exceeds the remaining tokens in the bucket, the scheduler moves on to the next queue.
DRR算法为每个队列分配一个令牌常量QN和一个变量DN(差额)。
QN反应了该队列可以发送的长期平均字节数。
DN的初始值为零且当队列为空时复位为0。
当DRR算法服务一个新队列时,调度器复位计数器Bsent(表示本次调度循环中已经从此队列中发送的字节数)。
当下面两个条件满足时,DRR算法从队列中发送分组:
1) 队列中有分组等待发送;
2) (QN+DN)大于等于(Bsent+队列中下一个分组的长度)。
否则,该队列的差额DN+1被置为QN+DN-Bsent,调度器按顺序移到下一个队列。
QN+DN表示在服务时间间隔内队列能够发送的最大字节数,在一定程度上DN可以平滑数据流的突发。
队列通过QN可以获得长期的相对带宽分配。如果激活队列的数目小于N,则激活队列可以根据QN值共享未用的输出链路带宽。

5. 拥塞避免(Congestion Avoidance)
它可以通过监视网络资源(如队列或内存缓冲区)的使用情况,在拥塞有加剧的趋势时,主动丢弃报文,通过调整网络的流量来解除网络过载。
传统的丢包策略采用尾部丢弃(Tail-Drop)的方法。当队列的长度达到某一最大值后,所有新到来的报文都将被丢弃。这种丢弃策略会引发TCP全局同步现象:当队列同时丢弃多个TCP连接的报文时,将造成多个TCP连接同时进入拥塞避免和慢启动状态以降低并调整流量,而后又会在某个时间同时出现流量高峰,如此反复,使网络流量不停震荡。
为避免TCP全局同步现象,可使用RED(Random Early Detection,随机早期检测)或WRED(Weighted Random Early Detection,加权随机早期检测)。RED和WRED通过随机丢弃报文避免了TCP的全局同步现象,使得当某个TCP连接的报文被丢弃、开始减速发送的时候,其他的TCP连接仍然有较高的发送速度。这样,无论什么时候,总有TCP连接在进行较快的发送,提高了线路带宽的利用率。

在RED类算法中,为每个队列都设定上限和下限,对队列中的报文进行如下处理:
-当队列的长度小于下限时,不丢弃报文;
-当队列的长度超过上限时,丢弃所有到来的报文;
-当队列的长度在上限和下限之间时,开始随机丢弃到来的报文。队列越长,丢弃概率越高,但有一个最大丢弃概率。
直接采用队列的长度和上限、下限比较并进行丢弃,将会对突发性的数据流造成不公正的待遇,不利于数据流的传输。RED类算法采用平均队列长度和设置的队列上限、下限比较来确定丢弃的概率。计算队列平均长度的公式为:
平均队列长度 =(以前的平均队列长度×(1-1/(2的n次方)))+(当前队列长度×(1/(2的n
次方))),其中n可以通过命令配置。队列平均长度既反映了队列的变化趋势,又对队列长度的突发变化不敏感,避免了对突发性数据流的不公正待遇。

WRED算法在RED算法的基础上引入了优先权,考虑了高优先权报文的利益,使其被丢弃的概率相对较小。如果对于所有优先权配置相同的丢弃策略,那么WRED就变成了RED。(W-RED actually allows a set of parameters for each color and DP so that packets with different colors or DPs have different random early discarding behavior. Therefore, W-RED is sometimes called color aware random early detection.)
如果设置EIR/EBS=0,那么所有的报文标记为绿色或者红色。红色的报文在进行阻塞管理前就已经被丢弃了,所有只有绿色的报文进入阻塞管理模块进行管理。这种情况下,RED和WRED的处理结果是一样的。(If only CIR/CBS policing is supported or if EIR/EBS = 0 Mbps, all packets after policing are marked as either green or red. The packets marked as red are dropped before processed by congestion avoidance block (RED or WRED). Only green-colored packets will be processed by the congestion avoidance block (RED or WRED). Since packets have only one color (Green) or DP = 0 only, the effect of RED or W-RED is the same since parameter sets for DP = 1 and 2 or other colors in W-RED will not take effect as there is no packet with DP = 1 or 2.)


MEF
Metro Ethernet Forum(城域以太网论坛)提出了以太网的服务模型(Ethernet Services Model):

两个或者多个UNI之间的连接被叫做EVC(Ethernet Virtual Connection,虚拟以太连接)。
一个EVC可以被看作是一个二层的双向通路,每个EVC都包含若干个UNI,或者说某个UNI从属于某某EVC,当报文从一个UNI进入EVC后,它会被按需转发到这个EVC中的其他UNI上。
MEF中提到了三种EVC的服务种类,点到点EVC(Point-to-Point EVC)、多点到多点EVC(Mutlipoint-to-Multipoint EVC)和根到多点EVC(Rooted-Multipoint EVC)。


做为一条承载二层业务的通道,有一类目的MAC以01-80-C2开头的特殊报文是必须要考虑的,这些报文是二层协议控制帧,每个EVC都需要具备识别和正确处理这些控制帧的能力,而不仅仅是简简单单透传或丢弃了事。
===============================
MAC Addresses Description
01-80-C2-00-00-00 through 01-80-C2-00-00-0F Bridge Block of protocols
01-80-C2-00-00-20 through 01-80-C2-00-00-2F GARP Block of protocols
01-80-C2-00-00-10 All Bridges Protocol
===============================

EVC约定服务性能属性:延迟(FD,Frame Delay )、延迟抖动(FDV,Frame Delay Variation)和丢包率。这个约定仅仅针对被标记为绿色的报文,只需要保证在一个规定的时间长度内,绿色报文的延迟、延迟抖动和丢包率在约定的范围以内,黄色报文则不在这个约定之中,至于红色报文,它们在UNI上就已经被丢弃了,EVC中不会有这类报文。

MEF规定的端口带宽限制有三种。每种带宽限制属性也分为入方向和出方向。

QoS中的Cos值

在学习。QoS在二层分类上使用Cos值,分为0-7,8个级别。7的优先级最高,0最低。Cisco做了相关的定义。

     Cos=0------best-effort data,尽力而为的数据(不分类,全部转发)

     Cos=1------medium-priority data,中等优先级数据

     Cos=2------ high-priority data,高等优先级数据

     Cos=3------ call signaling,呼叫信号

     Cos=4------ video conferencing,视频,电话会议

     Cos=5------ voice Bearer,语音数据

     Cos=6、7------ 保留

严格的说,Cos与Tos只是QoS的一种标记机制。
QoS范围太大,涉及到入口数据流的标记和分类及速率限制,网络骨干的拥塞避免和拥塞管理,网络出口的队列调度机制等等。
Cos是二层ISL或者802.1Q数据帧的优先级标记,3个bit,范围0-7;
Tos是三层数据包的服务类型标记,也是3个bit,范围0-7,同样可当作优先级标记,另外5个实际指示Delay,Throughput,Reliability等特性的bit位一般没有使用;现在为了更好的控制数据流分类,使用DSCP(Differential Services Code Point),扩展了Tos的后三个bit,因此,范围从0-63。
在实施QoS策略时,Cos与ToS或DSCP之间通常要做映射机制。

DSCP

DSCP差分服务代码点(Differentiated Services Code Point),IETF于1998年12月发布了Diff-Serv(Differentiated Service)的QoS分类标准。它在每个数据包IP头部的服务类别TOS标识字节中,利用已使用的6比特和未使用的2比特,通过编码值来区分优先级。

简介

DSCP差分服务代码点(Differentiated Services Code Point),IETF于1998年12月发布了Diff-Serv(Differentiated Service)的QoS分类标准。它在每个数据包IP头部的服务类别TOS标识字节中,利用已使用的6比特和未使用的2比特,通过编码值来区分优先级.
DSCP 使用6个bit,DSCP的值得范围为0~63。
DSCP 是“IP 优先”和“服务类型”字段的组合。为了利用只支持“IP 优先”的旧路由器,会使用 DSCP 值,因为 DSCP 值与“IP 优先”字段兼容。
用通俗一点的语言解释,其实DSCP就是为了保证通信的QoS,在数据包IP头部的8个标识字节进行编码,来划分服务类别,区分服务的优先级。
每一个DSCP编码值都被映射到一个已定义的PHB(Per-Hop-Behavior)标识码。
通过键入DSCP值,电话、Windows客户和服务器等终端设备也可对流量进行标识。

功能

首先,要了解为什么使用DSCP,需要先认识一下IP的优先权。
RFC791中定义了TOS位的前三位为IP Precedence,这三位可划分八个优先级,即:IP优先级字段,可以应用于流分类,数值越大表示优先级越高。IP优先权有种服务可以标记,其应用类型如下:
7 预留
6 预留
5 语音
4 视频会议
3 呼叫信号
2 高优先级数据
1 中优先级数据
0 尽力服务数据
也就是说,原来的3位IP优先级字段只能划分出八种服务的优先级,这在服务种类单一,业务量少的年代,是足够使用了。但是在网络中实际部署的时候,八个优先级是远远不够用的,于是RFC 2474中又对TOS进行了新的定义,把前六位定义成了DSCP,后两位保留。
这样,DSCP值的范围就是0到63。图1为DSCP和IP优先权位示意图
图1 为DSCP和IP优先权位示意图 图1 为DSCP和IP优先权位示意图
其次,介绍一下DSCP值的表达方式。
DSCP值有两种表达方式,数字形式和关键字形式。
一种表达方式是数字形式。DSCP使用6比特,十进制区间是0~63,可以定义64个等级(优先级。)如二进制DSCP值000000=十进制DSCP值0,二进制DSCP值010010=十进制DSCP值18。
另一种关键字形式的DSCP值称为逐跳行为(PHB),目前有三类已定义的PHB,分别是尽力服务(BE或DSCP 0)、确保转发(AFxy)和加速转发(EF)。由于DSCP和IP Precedence是共存的,于是存在兼容性的问题,DSCP可读性较差,比如DSCP 43我们一眼看去并不知道对应着IP Precedence的什么取值,于是把DSCP进行进一步分类, DSCP总共分成四类:
  • 类选择器Class Selector(CS)aaa 000
  • 加速转发Expedited Forwarding(EF) 101 110
  • 确保转发Assured Forwarding(AF) aaa bb0
  • 默认Default(BE) 000 000
  • CS6和CS7默认用于协议报文。因为如果这些报文无法接收的话会引起协议中断。而且是大多数厂商硬件队列里最高优先级的报文。
  • EF用于承载语音的流量,因为语音要求低延迟,低抖动,低丢包率,是仅次于协议报文的最重要的报文。
  • AF4用来承载语音的信令流量,这里大家可能会有疑问为什么这里语音要优先于信令呢? 其实是这样的,这里的信令是电话的呼叫控制,你是可以忍受在接通的时候等待几秒钟的,但是绝对不能允许在通话的时候的中断。所以语音要优先于信令。
  • AF3可以用来承载IPTV的直播流量,直播的实时性很强需要连续性和大吞吐量的保证。
  • AF2可以用来承载VOD的流量,相对于直播VOD要求实时性不是很强,允许有时延或者缓冲。
  • AF1可以承载不是很重要的专线业务,因为专线业务相对于IPTV和VOICE来讲,IPTV和VOICE是运营商最关键的业务,需要最优先来保证。当然面向银行之类需要钻石级保证的业务来讲,可以安排为AF4甚至为EF。
  • 最不重要的业务是Internet业务,可以放在BE模型来传输。这也是我们为什么老抱怨网络不好。
    可以说,有了DSCP,就初步实现了通讯业务中的时间管理,我们日常的通讯业务才能保质保量地高效运行。

支持设备

大部分ONU/MDU/OLT设备都会支持。

四种PHB的分类

1、Default PHB (FIFO,tail drop) DSCP值为0
2、Expedited Forwarding PHB(急速转发,提供延时的保证) 主要针对于延时 PQ
  DSCP的默认为前3个bit为101,后3个bit为110
3、Assured Forwarding PHB(确保转发,提供带宽保证) 确保带宽,用于带宽保证。CBWFQ
  AF1 001 dd 0 每个AF的大类中有会分为3个小类,dd中定义的类型,dd为丢弃概率,值越大丢弃率越高。三个小类为 (AF11 01 LOW,AF12 10 Medium, AF13 11 High)
4、class-selector(ip precedence) PHB 用于和老的优先级做兼容,后3个bit都为0。
 
 

QOS的dscp值0-63怎么划分优先级?

对于CoS和DSCP,只是分类的标准,可以自己设置信任哪个。 而且CoS和DSCP之间有映射,只是标识了包的优先级的不同, 根据包的优先级选择不同的出队列,不同出队列所占的带宽资源, 拥塞时丢弃比例不同。从而实现服务质量的目标。  QoS的实现以IETF 的DiffServ 体系为基础。 DiffServ体系规定每一个传输报文将在网络中被分类到不同 的类别,分类信息被包含在了IP 报文头中,DiffServ 体系使用了IP 报文头中的TOS(Type Of Service)中的前6 个比特来携带报文的分类信息。 当然分类信息也可以被携带在链路层报文头上。一般地, 附带在报文中的分类信息有:  1 帧头的Tag Control Information 中的前3 个比特,它包含了8 个类别的优先级信息,通常称这三个比特为为User Priority bits。  2 报文头中的TOS 字段前3 个比特,称作IP precedence value;或者携带在IP 报文头中的TOS 字段前6 个比特,称作Differentiated Services Code Point (DSCP) value。  在遵循DiffServ 体系的网络中, 各交换机和路由器对包含同样分类信息的报文采取同样的传输服务策 略,对包含不同分类信息的报文采取不同的传输服务策略。 报文的分类信息可以被网络上的主机、交换机、 路由器或者其它网络设备赋予。 可以基于不同的应用策略或者基于报文内容的不同为报文赋予类别信 息。 识别报文的内容以便为报文赋予类别信息的做法往往需要消耗网络设 备的大量处理资源,为了减少骨干网络的处理开销, 一般这种赋予类别信息的方式都使用在网络边界。  交换机或路由器根据报文所携带的类别信息, 可以为各种交通流提供不同的传输优先级, 或者为某种交通流预留带宽, 或者适当的丢弃一些重要性较低的报文、 或者采取其他一些操作等等。 这些独立设备的这种行为在DiffServ 体系中被称作每跳行为(per-hop behavior)。 如果网络上的所有设备提供了一致的每跳行为, 那么对于DiffServ 体系来说,这个网络就可以构成end-to-end QoS solution。  下面几个段落将详细介绍本交换机所提供的以DiffServ 体系为基础的QoS 模型。  QoS入口端动作包括Classifying、Policing 和Marking。  Classifying: 确保将网络交通流划分成以DSCP值来标识的各个数据流。 随后交换机将根据DSCP值来对各个数据流实施不同的QoS策略 。有关分类的更详细介绍,请参阅Classifying章节。  Policing:用于约束某个流的所占用的传输带宽, 根据配置的Policer来决定流中的哪些部分超出了所限制的传 输带宽,并将结果传递给下一阶段的Marking动作。 有关Policing的更详细介绍, 请参阅Policing章节。  Marking: 决定怎样处理数据流中在Policing动作中超限的部分。 可能的处理动作有丢弃超限部分和用另外的DSCP值标记超限部分 。有关Marking的更详细介绍,请参阅Marking章节。  QoS出口端动作包括Queueing和Scheduling: Queueing: 根据数据流的每一个报文所附带的DSCP值来确定将报文送往端口 的哪个输出队列,有关Queueing的更详细介绍, 请参阅Queueing章节。 Scheduling: 确定以什么样的方式处理被送到端口各个输出队列中的报文有关Sc heduling的更详细介绍,请参阅Scheduling 章节。下面的段落将详细介绍QoS模型的各个阶段的动作。  Classifying  Classifying 即为分类, 其过程是根据信任策略或者根据分析每个报文的内容来确定将这些报 文归类到以DSCP 值来表示的各个数据流中, 因此分类动作的核心任务是确定输入报文的DSCP 值。分类发生在端口接收输入报文阶段, 当某个端口关联了一个表示QoS 策略的policy-map 后,分类就在该端口上生效,它起作用于所有从该端口输入的报文。  对于一般非IP 报文,交换机将根据以下准则来归类报文:  1 1. 如果报文本身不包含QoS 信息,即报文的第二层报文头中不包含User Priority bits, 那么可以根据报文输入端口的缺省CoS值来获得报文的QoS信息 。端口的缺省CoS值和报文的UserPriority bits 一样,取值范围为0~7。取得报文的CoS 值之后,再根据交换机上配置的CoS-to-DSCP map 来将CoS 转化为DSCP 值。  2. 如果报文本身包含QoS 信息,报文的第二层报文头中包含User Priority bits,那么可以直接从报文中获得CoS 值,然后再根据交换机上配置的CoS-to-DSCP map 来将CoS 转化为DSCP值。  注意以上两种归类准则只有当端口的QoS 信任模式打开的时候才起作用。打开端口的QoS 的信任模式意味着不通过分析报文的内容, 而直接从报文中或报文的输入端口上获得报文QoS信息, 从而得到DSCP 值。  2 3. 如果端口关联的policy-map 中使用了基于mac access-list extended 的ACLs 归类,那么在该端口上,将通过提取报文的源MAC 地址、目的MAC 地址以及Ethertype 域来匹配关联的ACLs,以确定报文的DSCP 值。要注意的是,如果端口关联了某个policy-map, 但又没有为其设置相应的DSCP 值,则交换机将按照缺省行为为符合这种归类的报文分配优先级: 即根据报文第二层报文头中包含的优先级信息或端口的缺省优先级。  注意上面三种归类准则可能会同时作用于一个端口上。 在这种情况下,上面三种归类准则按3、2、1 的优先级起作用。即,先根据ACLs 归类,在归类失败的情况下,才有可能选择归类准则2、1, 在这个时候,如果端口的QoS 信任模式打开,则根据准则2 和1 直接从报文中或者从端口上获得QoS 信息;如果端口的QoS 信任模式关闭,那么那些归类失败的报文将被赋予DSCP 的缺省值0。  对于IP 报文,可以将根据以下准则来归类报文:  1 1. 直接从IP 报文的TOS 字段中提取出DSCP 值。IETF规定IP 报文的TOS 字段的前6 个比特作为DSCP 值,它的取值范围为0~63,和交换机内部使用的DSCP 值一一对应。  2. 按照非IP 报文处理,按照上面介绍的非IP 报文归类准则1、2来确定报文的DSCP 值。  注意以上几种归类准则只有当端口的QoS 信任模式打开的时候才起作用。打开端口的QoS 的信任模式意味着不通过分析IP 报文的内容,而直接从IP 报文的TOS 字段中或报文的输入端口上获得QoS 信息,从而得到DSCP 值。  2 3. 如果端口关联的policy-map 中使用了基于ip access-list (extended)的ACLs 归类,那么该在该端口上,将通过提取报文的源IP 地址、目的IP 地址、Protocol字段、以及第四层TCP/UDP 端口字段来匹配相关联的ACLs,以确定报文的DSCP 值。要注意的是,如果端口关联了某个policy-map, 但又没有为其设置相应的DSCP 值,则交换机将按照缺省行为为符合这种归类的报文分配优先级: 即根据报文第二层报文头中包含的优先级信息或端口的缺省优先级。  和非IP 报文归类准则一样,以上几种归类准则可以同时作用于一个端口上。 在这种情况下,上面的归类准则按照3、2、1的优先级起作用。 即先根据ACLs 归类,在归类失败的情况下,才有可能选择归类准则2、1; 在这个时候,如果端口选择QoS 信任模式Trust IP-precedence,那么准则1 起作用;如果端口选择QoS 信任模式Trust CoS,那么准则2 起作用。  有关上面提到的CoS-to-DSCP map、IP-precedence-to-DSCP map映射表的详细描述情常见随后描述。  Policing  Policing 动作发生在数据流分类完成后, 它用于约束被分类的数据流所占用的传输带宽。 Policing动作检查被归类的数据流中的每一个报文, 如果该报文超出了作用于该数据流的Policer 所允许的限制带宽,那么该报文将会被做会被作特殊处理, 它或者要被丢弃,或者要被赋予另外的DSCP 值。  在QoS 处理流程中,Policing 动作是可选的。如果没有Policing 动作,那么被分类的数据流中的报文的DSCP 值将会不作任何修改,报文也不会在送往Marking 动作之前被丢弃。  Marking  经过Classifying 和Policing 动作处理之后,为了确保被分类报文报文对应DSCP 值的能够传递给网络上的下一跳设备,需要通过Marking 动作将为报文写入QoS 信息,可以使用Trust 方式直接保留报文中QoS 信息,例如,选择Trust Cos 从而保留802.1Q 报文头的Tag Control Information 中的CoS 信息;默认情况下,Marking 总是用报文对应的DSCP 值转化成QoS 信息,然后写入到报文CoS字段(对于非IP 报文)、DSCP字段或者IP-precedence 字段(对于IP 报文)中。  Queueing  Queueing 动作负责将数据流中报文送往端口的哪个输出队列中, 送往端口的不同输出队列的报文将获得不同等级和性质的传输服务策 略。  每一个端口上都拥有8 个输出队列,通过交换机上配置的DSCP-to-CoS Map 和Cos-to-Queue Map 两张映射表来将报文的DSCP 值转化成输出队列号,以便确定报文应该被送往的输出队列。  Scheduling  Scheduling 动作时QoS 流程的最后一个环节。当报文被送到端口的不同输出队列上之后, 交换机将采用WRR 或者SP 轮转算法发送8 个队列中的报文。  可以通过设置轮转算法的权重值来配置各个输出队列在输出报文的时 候所占用的传输带宽。
原文地址:https://www.cnblogs.com/welhzh/p/5962712.html