区分服务

区分服务（Differentiated services，或简写：DiffServ）是一种计算机网络架构，它指定了一种现在IP网络上对网络流量进行分类、提供服务质量（QoS）管理的机制。例如可以用于为语音或流媒体等关键网络流量提供低延迟转发，同时为普通网页流量或文件传输等非关键服务提供尽力而为的转发。
DiffServ在IPv6包头使用6比特位长的区分服务字段（DS字段）配合区分服务代码（differentiated services code point，DSCP）来进行数据包分类，而IPv4标头中DS字段与ECN（Explicit Congestion Notification）字段合并取代了原有的TOS（Type of service）字段。
背景.
现代数据网络承载着许多不同类型的服务，包括语言流、视频流、音乐流媒体、网页、电子邮件等。许多允许这些服务共存的提议性QoS机制，既复杂又无法扩展，以满足公共互联网的需求。1998年12月，IETF将IPv4标头的TOS字段和IP优先级（IP precedence）字段合并为新的DS字段，之后还拆分了低6比特位给ECN使用，DS只使用高6比特位。在IPv6标头中，DS功能占用流量分类字段（Traffic Class）的高6比特位。在DS字段中，8个类选择器值向后兼容以前IPv4的IP优先级字段。
如今，DiffServ机制已在很大程度上取到了TOS和其他第3层QoS机制，例如（IntServ），成为现时路由器提供QoS的主要架构。
流量管理机制.
区分服务是一种粗粒度、基于类别的流量管理机制；相比之下，综合服务是细粒度，基于流的机制。区分服务依靠一些机制对数据包进行分类并将其标记为属于特定类别。支持区分服务的路由器会实施（PHB），该行为定义了与某类流量相关数据包转发属性，可以定义不同的PHB提供低丢失或低延迟服务等。
不同于其他基于特定网络流的网络流量控制，区分服务基于数据包的分类，将每个数据包放入到有限数量的流量类别中，然后网络上的每个路由器都配置了根据其类别来区分流量，根据类别的不同进行不同的流量转发管理，从而确保优先处理网络上优先级较高的流量。区分服务的前提是，边缘路由器可以在网络边缘执行数据包分类和监管等复杂功能；由于核心路由器不需要执行分类和监管，因此其功能可以保持简单，只需要根据数据包的标记，使用调度策略和队列管理策略组合，对数据包转发应用PHB特性。
一组实施管理通用定义的区分服务策略的路由器，成为一个区分服务域（DiffServ domain）。
虽然区分服务确实推荐了一组标准化的流量类别，但区分服务架构未包含对哪些类型的流量应优先处理的预定判断。区分服务仅提供了一个允许分类和差异化处理的框架。下面提到的标准流量类别有助于简化不同网络和不同供应商设备之间的互操作性。
分类与标记.
进入区分服务域的网络流量会被分类和调节，流量分类器会检查传入数据包的许多不同参数来决定，例如源地址、目标地址或流量类型，给各个数据包分配特定的流量类别。流量分类器可以遵守收到的数据包中的任何区分服务标记，也可以忽略或者覆盖掉。为了严格控制给定类别中的流量类别，网络运营商可以选择不遵守进入区分服务域入口处的标记。每个类别中的流量可能会受到进一步的调节，方法是将流量置于速率限制器、流量监管器或整形器下。
每跳行为由IP标头的DS、ECN字段确定，其中DSCP值占据6个比特位。理论上，有64个可用的DSCP值，网络最多可以划分64个不同的流量类别。区分服务的RFC建议但不要求使用某些编码，这给网络营运商在定义流量类别方面提供了极大的灵活性。然后，在实践上，大多数网络使用以下通常定义的每跳行为：
默认转发.
默认转发（DF）是唯一必需的行为。本质上，任何不满足任何其他已定义类别要求的流量都会使用DF。通常，DF 具有尽力而为的转发特性。DF的建议DSCP值为0。
加急转发.
IETF在 RFC 3246 定义了加急转发（EF）行为，EF具有低延迟、低丢失、低抖动的特点，这些特点适合于语音、视频和其他实时通信。EF流量通常会被赋予高于所有其他流量类的优先级队列。由于EF流量过载会导致排队延迟并影响类别内的抖动和延迟容差，因此可以对EF流量应用准入控制、流量监管和其他机制。EF的建议DSCP值为46（）。
呼-{}-叫准入.
IETF在 RFC 5865 定义了呼-{}-叫准入（Voice Admit，VA）行为。VA和EF具有类似的特征，但网络还会使用（CAC）来控制接纳流量。VA的建议DSCP值为44（）。
保证转发.
IETF 在 RFC 2597 和 RFC 3260 中定义了保证转发（AF）行为。只要流量不超过某个订阅速率，保证转发允许运营商提供转发交付保证。如果发生拥塞，超过订阅速率的流量面临更高的丢弃概率。
AF行为定义了四个单独的AF类，同一类中的所有流量具有相同的优先级，然后每个类再分为高、中、低三个优先级（优先级越高，则越最先丢弃）。类与优先级组合出由AF11到AF43共12个独立的DSCP值，如下表。
不同类别的流量之间定义了一些优先级和比例公平性度量。如果类别之间发生拥塞，则较高类别的流量将获得优先权。与使用严格的优先级排队相比，更可能使用更平衡的队列服务算法，例如或。如果某个类别内发生拥塞，则首先丢弃具有较高丢弃优先级的数据包。为了防止与相关的问题，通常使用更复杂的丢弃选择算法，例如。
类选择器.
在区分服务出现之前，IPv4网络已经使用IPv4标头中的TOS字段的IP优先级字段来标记优先级流量，但TOS字段、IP优先度并未得到广泛使用。IETF最终同意将TOS字段（8比特位）重新用作区分服务的DS字段，之后进一步拆分为DS部分和ECN部分，为了和使用IP优先级的网络设备保持向后兼容性，区分服务定义了类选择器行为。
类选择器的代码点采用二进制式“XXX000”，前三位为IP优先度位，每个IP优先级值可都可以映射到区分服务的类别中，优先度为0则映射到CS0，优先度为1则映射到CS1，如此类推。如果从使用IP优先级标记的数据包进入到区分服务域感知路由器，区分服务域的路由器仍然可以将编码理解为类选择器代码点，来处理流量分类。
RFC 4594 中给出了使用类选择器代码点的具体建议。
配置指引.
RFC 4594 针对代码点的使用和配置提供了详细而具体的建议。其他RFC（例如： RFC 8622 ）也更新了这些建议。
设计注意事项.
在区分服务下，所有流量的监管和分类都在区分服务域之间的边界完成的，这意味着互联网的核心中，路由器不会受到流量转发收付或者执行协议的复杂性的阻碍。也就是说，与综合服务（IntServ）相比，区分服务不需要提前设置或者预留，也不需要为每个流进行耗时的端对端协商。
各个路由器如何处理DS字段的细节是特定于配置的，因此很难预测端到端的转发行为。如果数据包到达目的地之前需要跨越多个区分服务域的话，情况会变得更加复杂。从商业角度来看，这意味着不可能向最终用户出售不同流量等级的端到端连接，因为一个网络提供商提供的高优先级转发在另一个网络提供商并不对应同样的服务级别。区分服务或者任何基于IP的QoS标记都不能确保服务质量或者指定的服务级别协议。通过标记数据包，发送者表明它希望将这个数据包视为特定服务，但这并不保证一定会发生这种情况。转发路径上的所有网络服务提供商及其路由器都应确保其策略能以适当的方式处理数据包。
带宽代理.
区分服务框架下，是以一种了解组织优先级和策略，并根据这些策略分配带宽的代理。为了实现跨不同域的端对端资源分配，管理域的带宽代理管必须与其相邻的对等体进行通信，从而允许根据纯双边协议构建端对端的连接服务。