本文转自:http://blog.csdn.net/fw0124/article/details/5837839
服务模型
通常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业务分类
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的业务帧也允许进入网络,但是不承诺这部分报文的服务质量,报文的延迟、抖动可能很大,甚至会被大量丢弃。这些业务帧属于"轮廓外"或者和带宽轮廓"不一致的"业务帧。
但事实上上述算法只是一套理论上的执行过程,实际的网络设备或许无法完全按照上述过程执行,所以只要设备能够使执行结果和上述算法的结果近似即可。这样我们可以用两个简单的公式来实现类似的效果,即在任何时间段 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值共享未用的输出链路带宽。