ISO/IEC 29341-8-19 QoS 丢弃器服务

UPnP QoS 架构 — 数据包丢弃与主动队列管理

QoS 丢弃器服务概述

ISO/IEC 29341-8-19 标准定义的 QoS 丢弃器服务为 UPnP QoS 架构 v3 提供了一种基于 QoS 策略选择性丢弃网络数据包的标准化机制。数据包丢弃是一种基础的拥塞管理技术——当网络设备的缓冲区已满或流量流超过其分配带宽时,丢弃器根据配置的丢弃策略丢弃数据包。该服务实现了尾部丢弃和主动队列管理(AQM)丢弃策略。

智能数据包丢弃对于在拥塞期间维护网络稳定性至关重要。配置良好的丢弃器确保低优先级流量在高优先级流量之前被丢弃,从而保持 VoIP、视频会议和实时控制系统等关键应用的性能。

丢弃策略与配置

该服务暴露了用于按流量类别配置丢弃策略的动作。每个丢弃策略指定了数据包应被丢弃的条件,包括缓冲区占用阈值、丢弃概率曲线以及是使用尾部丢弃还是随机早期检测。

策略参数 类型 描述
TrafficClassID string 丢弃策略应用的流量类别
DropAlgorithm string TailDrop | RED | WRED(加权 RED)
MinThreshold ui4 开始丢弃前的最小队列占用(RED/WRED)
MaxThreshold ui4 最大队列占用——超过此阈值丢弃所有数据包
DropProbability float MaxThreshold 处的最大丢弃概率(0.0 到 1.0)
对于实时流量类别(VoIP、视频),使用带有预留最小缓冲区的尾部丢弃而非 RED。实时编解码器处理缓冲区满丢弃的效果好于 RED 引入的随机丢包,后者可能降低编解码器纠错效率。

工程设计要点

实现 QoS 丢弃器服务需要与设备的排队子系统深度集成。丢弃器必须位于出口队列的尾部,在分类和标记之后。在基于 Linux 的系统中,这自然地映射到 qdisc(排队规则)层,其中通过 ‘red’ 和 ‘pfifo_fast’ 调度器原生支持 RED 和尾部丢弃。

一个关键的设计决策是 AQM 参数的选择。RED 算法的 min_threshold、max_threshold 和 max_drop_probability 必须根据具体的链路速度和流量模式进行调整。标准建议从 RFC 7567(主动队列管理建议)中的参数开始,并根据观察到的性能进行调整。

将 RED 阈值设置得过于激进(例如,min_threshold 小于一个往返时延的数据包量)即使在轻度拥塞期间也可能导致不必要的数据包丢弃,从而导致 TCP 全局同步和吞吐量崩溃。始终将 min_threshold 设置为至少链路的带宽延迟积。

加权 RED(WRED)在 UPnP QoS 环境中特别有价值,因为它允许共享同一物理队列的不同流量类别具有不同的丢弃概率。例如,BestEffort 流量可以配置比 AssuredForwarding 流量更低的丢弃阈值,确保重要流在拥塞期间被优先保留。

切勿在不监控其有效性的情况下配置 QoS 丢弃器。如果阈值设置得过于激进,配置不当的丢弃器可能静默地摧毁通过队列的所有流量。始终实施队列占用监控,并为任何非 BestEffort 流量类别上超过 5% 的持续丢弃率设置告警。

常见问题

问:尾部丢弃和 RED 有什么区别?

尾部丢弃是最简单的丢弃策略——当队列满时,新到达的数据包被丢弃直到有空间可用。RED(随机早期检测)在队列完全满之前主动丢弃数据包,丢弃概率随队列占用增加而增加。RED 通过随机化丢弃而非丢弃整个突发来防止 TCP 全局同步。

问:QoS 丢弃器服务可以禁用吗?

可以。将丢弃策略设置为空或禁用状态可有效禁用该流量类别的主动丢弃。在这种情况下,设备的默认缓冲区管理适用——通常是队列完全满时的尾部丢弃。

问:丢弃器如何与 QoS 分类器和标记器交互?

典型的处理流水线是:分类器 → 标记器 → 丢弃器 → 队列。分类器识别流量类别,标记器设置数据包的优先级标记,丢弃器根据流量类别和当前队列占用应用丢弃决策,存活的数据包被排队等待传输。

问:BestEffort 流量是否有推荐的丢弃概率?

RFC 7567 建议 RED 配置的 BestEffort 队列的最大丢弃概率为 0.1(10%)。这为 TCP 发送方提供有效的拥塞信号,而不会导致过多的重传。对于高级流量类别,建议使用较低的最大丢弃概率(例如 0.02 到 0.05)。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注