摘要

  • RFC 791 将该八位组划分为优先级,以及独立的时延、吞吐量和可靠性指示位。
  • RFC 1349 将其改为四位的单一 TOS 值;RFC 2474 定义六位 DSCP,RFC 3168 则使用剩余两位表示 ECN。

字段没有换位置,契约却不断改变。RFC 791 中,前三位表示优先级,随后三位分别表示低时延、高吞吐量和高可靠性的偏好,最后两位保留。这些指示是相互制约的请求,而不是保证;规范通常建议不要同时设置三项中的两项以上。

1992 年的 RFC 1349 取消了独立开关,把四位服务部分改成一个枚举值:最小延迟、最大吞吐量、最大可靠性、最小货币成本或普通服务。主机和路由器应能正确处理未知类型,而不必理解其语义。TOS 是请求,不是承诺。

RFC 2474 随后用差分服务字段取代旧结构。高六位组成未结构化的 DSCP,用于选择逐跳行为;余下两位在差分服务处理中被列为“当前未使用”,选择逐跳行为时必须忽略。代码点与行为之间的映射可以配置,管理域也可以在边界处改写该字段。RFC 2474 明确指出它与 RFC 791 的结构不兼容;Class Selector 代码点只提供有限的历史优先级兼容。

RFC 3168 将低两位分配给 ECN。四个代码点分别是 Not-ECT、ECT(0)、ECT(1) 和 Congestion Experienced(CE)。当传输端点参与 ECN 时,主动队列管理机制可以在初始拥塞期间把 ECT 分组标记为 CE,而不是丢弃它。ECN 不保证交付,也不会消除丢包。

因此,DSCP 选择可由本地配置的处理方式,ECN 则向参与的传输反馈拥塞。八位组的物理位置保持稳定,并不意味着语义始终兼容;任何值都不能单独证明固定的时延、吞吐量、可靠性或价格。

Sources