1.2 端到端QoS服务模式
QoS服务模式(Service Model)用于描述端到端QoS的能力,在如何使应用程序发送数据和网络以什么方式转发数据上,不同模式之间是不同的。有以下3种服务模式可供选择。
1.2.1 尽力而为服务模式
尽力而为服务模型(Best-Effort Service Model)是最简单的服务模型。其实,IP网络从其诞生那天就是提供这种服务的,只是那时还没有QoS的概念罢了。使用网络的应用程序可以在它认为必须的时候随时发出任意数量的数据,而且不需要事先获得批准,也不需要通知网络。网络尽最大的可能性来发送报文,但对时延、可靠性等性能不提供任何保证,而网络设备也不区分数据,没有大小、优先之说,哪个数据先到就先为哪个数据服务。尽力而为服务是现在Internet的默认服务模型,它适用于绝大多数网络应用场合,如FTP、E-Mail等。
Cisco IOS实现这种服务的方法是FIFO队列(先进先出队列)。
随着IP网络的广泛应用,网络上的应用也越来越多,不同的应用对带宽、延迟、抖动和丢包率等的要求是不同的,因此,当网络不出现拥塞时各种应用都能正常使用,但如果出现拥塞,那些对服务质量要求高的应用势必会受到影响,尽力而为的服务模式显然不能满足这种情况下的要求,这就要求网络必须能够为应用提供服务质量。例如,当某用户发送大量数据时,如果没有QoS机制,在其后的其他用户的少量数据也必须等待。如果采用了QoS机制,网络设备可以把后面的少量数据先于前面的大量数据发送出去,从而可避免少量数据等待时间过长。
1.2.2 集成服务模式
集成服务模式(Integrated Service Model)是一种多服务模式(Multiple Service Model),即它可以满足多种QoS需求。它的主要特征是应用程序在发送报文前,需要使用特定的信令向网络设备申请特定的服务。应用程序把自己要发送的数据简要状态(profile)通知给网络,描述数据状态的参数包括带宽、时延等。应用程序收到网络的确认信息才开始发送数据,即网络已经为这个应用程序的数据保留了网络资源。应用程序发出的数据也应控制在流量参数描述的范围以内。
网络收到应用程序的资源请求后,执行许可控制(Admission control)检查,即基于应用程序的资源申请和网络可用的资源情况,判断是否为应用程序分配资源。一旦网络为应用程序分配了网络资源,只要应用程序的流量在参数描述的范围内,网络将承诺满足应用程序的QoS需求。
网络按照5个参数划分数据流(data flow):源地址、源端口号、目标地址、目标端口号和传输层协议,为每个数据流维护一个状态,并基于这个状态执行报文的分类、流量监管和智能排队来实现对应用程序的QoS承诺。
IntServ模式依赖资源预留协议(Resource Reservation Protocol, RSVP)为每一个数据流请求并保留网络资源。RSVP是第一个标准QoS信令协议,不是一个路由协议。它按照路由协议规定的数据流的路径为报文申请预留资源,在路由发生变化后,它会按照新路由进行调整,并在新的路径上申请预留资源。RSVP只在网络节点之间传递QoS请求,它本身不完成QoS的实现,而是通过其他技术来完成QoS要求的实现。
RSVP可以完成2 种服务类型请求(假设在从源到目的路径上的所有网络设备都支持RSVP):一种是严格保证服务,用于严格保证延迟和带宽的端到端业务;另一种是可控负载服务,用于在轻负载或中度负载的网络上提供比尽力而为更好的或低延迟的服务。
IOS使用智能队列机制实现可控负载的QoS服务。与RSVP联合,能够提供保证速率服务(为应用程序保留需要的带宽)和控制流量服务(即便在拥塞时也能保证低延迟和高流量)。
IntServ的缺点如下所示。
● 在数据包所经由的路径上的所有设备,包括PC,都必须具备识别和发送RSVP信令的能力。
● 沿途每台设备上预留的资源是“软预留”,需要定期刷新,如果刷新数据包中途丢失,则有可能造成预留的资源因没有及时刷新而超时。而且当流量变化时需要重新请求预留资源。
● 维持“软预留”状态、许可控制需要内存空间,数据流越多,需要的内存空间越大,从而增加了网络接点的复杂性。
● 沿途每一台路由器需要为每一个流维护一个状态信息,当成千上万的流通过网络核心时,网络的扩展性就成了问题。
1.2.3 区分服务模式
1998年底时,IETF的“DiffServ工作组”提交了2份文档,即RFC2474和RFC2475,这2份文档奠定了区分服务模式(Differentiated Service Model)的基础。在文档里,工作组说“很明显,需要一种相对简单的、粗略的、能为互联网上的数据提供有区别服务类别的方法,支持各种应用程序和特定业务的要求”,这表明了工作组的工作目标。有区分的服务对互联网协议(IP)的增强在于它扩展了服务区别能力,因为它不需要每一跳设备都发送和处理RSVP信令,也不需要维护流状态。这种服务既可以是端到端的,也可以是作用域内的(Intra-domain)。
区分服务模式的基本构成如下所示。
● 在网络边界设置IP报文头中的某些比特(IPv4的TOS字段和IPv6的Traffic Class字段),即标记(marking)数据。边界可以是自治系统边界、管理边界或者是主机。
● 网络内的节点使用这些比特决定如何转发数据包。
● 在网络边界调整(conditioning)被标记的数据包使其与服务或规则所要求的一致。
它的构成也体现了它的工作原理,即每个服务的要求和规则是根据管理策略设置的,网络节点使用分类器根据标记比特选择数据包,与缓冲区管理和数据包调度机制一起对不同的数据包采取不同的处理行为。
1.2.4 DS与PHB
RFC2474主要包含2个部分:定义IP报文头字段,称之为DS(Differentiated Service)字段;定义每跳行为(Per-hop Behaviors,PHB),即如何处置数据包。
DS字段与IPv4报文头中的ToS字段或IPv6报文头中的Traffic Class字段相同,其中6比特用做区分服务代码点(Differentiated Service Codepoint, DSCP),最后2 比特当前不用(Currently Unused, CU),如图1-1所示。
图1-1 DS字段的定义
网络中的节点会根据DSCP选择PHB。
PHB定义了网络节点如何处置数据包的指导性建议,如默认PHB的DSCP值应该为0;可以使用各种队列;既可以单独使用PHB,也可以组合多个PHB一起使用。
PHB是DS节点应用于特定DS行为集合的外部可见转发行为的描述。称具有相同DSCP值的数据为一个行为集合(Behavior Aggregates,BA)。“转发行为”在这里是一个概括性的概念,具体来说,它包括队列、调度、流量整治与整形等。保留链路的某些带宽就是一个最简单的PHB例子。