深度来源笔记:IEEE 802.1Qav 时间敏感流转发与排队增强
来源信息
- 标题:Virtual Bridged Local Area Networks Amendment 12: Forwarding and Queuing Enhancements for Time-Sensitive Streams
- 标准号:IEEE Std 802.1Qav-2009
- 发布时间:2010-01-05
- 原始文件:
raw/802.1Qav.md - 学习定位:TSN/AVB 中基于信用的出队整形机制
- 关联概念:概念_信用整形与SR类、概念_VLAN感知桥与转发数据库
这篇资料解决什么问题
802.1Qav 解决的是“实时音视频或其它时间敏感流如何在普通二层桥接网络中获得更可预测的时延和更平滑的发送行为”的问题。它不是重新定义桥,而是在 802.1Q 的 VLAN-aware Bridge、priority、traffic class 和 egress queue 基础上增加 forwarding and queuing enhancements。
它的核心机制是 credit-based shaper。直观地说,一个 SR class 队列不是只靠严格优先级抢占发送,而是维护一个 credit 值:等待时积累信用,发送时消耗信用。只有在信用条件允许时,队列才能继续发。这样可以让预约流获得带宽,同时限制突发,避免它把其它流量长期挤出去。
阅读前需要知道什么
802.1Q 的队列和优先级模型
802.1Q 已经定义了 priority、traffic class、outbound queue。802.1Qav 不是从零开始,而是在这些输出队列上指定新的 transmission selection algorithm。
SRP 与 SR class
SRP 是 Stream Reservation Protocol。SR class 表示可以为时间敏感流预约带宽的 traffic class。802.1Qav 的信用整形要与 reservation 结果配合,不能孤立理解。
整形不是入口监管
标准明确指出 credit-based shaper 在 outbound queues 上工作,不负责 ingress metering 或 policing。也就是说它主要控制“怎么发出去”,不是控制“谁能进来”。
原文结构地图
Amendment 性质
802.1Qav 是对 IEEE 802.1Q 的修订。原文大量使用 change/delete/insert 的编辑指令,因此读起来不像独立标准。学习时应把它看成对 802.1Q 桥接文本的增量补丁。
Clause 1:Overview / Scope 插入文本
这里说明目标:让桥为时间敏感、低丢包、实时 AV 流提供性能保证。它引入 SRP domain、priority regeneration、traffic class mapping 和 credit-based shaper。
Clause 3:Definitions
定义 AV traffic、latency、SR class、SRP domain boundary port、SRP domain core port、time-sensitive stream 等概念。
Clause 5:Conformance
规定 VLAN-aware Bridge 和 end station 如果声称支持该功能,需要支持至少两个 traffic classes,其中一个可作为 SR class,并支持 credit-based shaper。
Clause 6:Support of the MAC service
增加 SRP Domain status parameters 和 priority regeneration override。重点是边界端口如何避免非预约流量伪装成预约优先级。
Clause 8:Forwarding Process
修改 802.1Q 的 queuing 和 transmission selection 部分,引入 strict priority 与 credit-based shaper 两种选择算法。
Clause 12:Management
增加用于 time-sensitive streams forwarding and queuing 的管理实体。
Clause 34:Forwarding and queuing for time-sensitive streams
说明时间敏感流的 priority-to-traffic-class mapping,尤其是 SR class A/B 的推荐优先级映射。
Annex L:Credit-based shaper 算法
这是最重要的学习部分。它解释 credit 如何变化,如何确定 hiCredit、loCredit、worst-case latency、buffering requirement,以及 fan-in/permanent delay。
核心概念表
| 概念 | 学习时的直觉 | 在 802.1Qav 中的作用 |
|---|---|---|
| AV traffic | 对时延、抖动、丢包敏感的音视频流量 | 标准最初的主要目标业务 |
| Time-sensitive stream | 要求有界时延的数据流 | 被整形和预约的对象 |
| SR class | 可预约带宽的 traffic class | 把时间敏感流放入专门队列 |
| SRP domain | 支持相同 SR 类预约规则的一段网络 | 决定边界和优先级重映射 |
| Boundary port | SRP 域边界端口 | 防止外部流量扰乱预约流 |
| Credit | 队列发送资格的状态量 | 控制什么时候能发、发多少 |
| idleSlope | 信用增长速率 | 对应预约带宽份额 |
| sendSlope | 信用下降速率 | 发送时消耗信用 |
| hiCredit | 信用高水位 | 限制等待后可形成的突发 |
| loCredit | 信用低水位 | 表示发送后信用可能降到的下界 |
| Strict priority | 严格优先级调度 | 默认传输选择算法 |
| Credit-based shaper | 信用整形算法 | Qav 引入的核心传输选择算法 |
机制拆解
1. 把时间敏感流映射到 SR class
802.1Qav 首先需要把某类时间敏感流放进 SR class。SR class 是一个 traffic class,它有对应优先级,也有可预约带宽。常见模型中会有 SR class A 和 SR class B,A 更高优先级,B 次之。
2. 在 SRP 域边界做优先级保护
如果外部流量带着 SR class 使用的 PCP 值进入 SRP 域,它可能伪装成预约流。Qav 通过 boundary port priority regeneration override 把边界处的相关优先级重映射到较低优先级,从而保护域内已预约流。
3. 在出口队列执行信用整形
credit-based shaper 工作在出端口队列。队列有帧等待但不能立即发送时,credit 按 idleSlope 增长;队列发送帧时,credit 按 sendSlope 下降。credit 为负时,队列通常需要等信用回到允许范围。
4. 限制突发,同时保留带宽保证
如果一个 SR 队列在等待期间被低优先级帧阻塞,它会积累信用。等阻塞结束后,它可能连续发送多个帧以“追上”预约带宽。但 hiCredit 限制了这种突发规模,sendSlope/loCredit 则让队列发完后暂停恢复。
5. 分析最坏时延和缓存需求
Annex L 不只是解释算法,还试图分析最坏情况下一个 SR class 帧会等多久,需要多少 buffer。这部分引入 interference delay、fan-in delay、permanent delay 等因素。
关键流程 / 数据路径 / 控制路径
数据路径
flowchart TD A["Frame arrives at bridge"] --> B["Priority regeneration"] B --> C["Traffic class mapping"] C --> D["SR class queue"] D --> E["Credit-based shaper"] E --> F["Transmission selection"] F --> G["Egress port transmit"]
priority / traffic class / SR class 的完整路径
Qav 的数据路径不要理解成“帧直接标记为 SR class A/B”。更准确的链条是:
frame priority / PCP
-> priority regeneration
-> traffic class mapping
-> traffic class queue
-> transmission selection algorithm
-> egress transmitVLAN-tagged frame 的 PCP 字段提供 received priority;untagged frame 也可能通过端口默认规则获得内部 priority。Bridge 可以先执行 priority regeneration,尤其是在 SRP domain boundary port 上,外部进入且携带 SR class priority 的非预约流量会被重映射到较低 priority,避免伪装成预约流。
随后,出端口通过 traffic class table 把 priority 映射到具体 traffic class queue。SR class 不是 priority 本身,而是“被赋予可预约时间敏感流语义,并使用 credit-based shaper 的 traffic class”。例如常见默认关系是:
priority 3 -> SR class A 对应的高编号 traffic class queue
priority 2 -> SR class B 对应的次高编号 traffic class queueTSpec 与 class measurement interval
SRP/MSRP 的 Talker declaration 会携带 TSpec,用 MaxFrameSize 和 MaxIntervalFrames 描述 Stream 的最大流量规格。MaxIntervalFrames 的时间基准来自 class measurement interval:
SR class A -> 125 us
SR class B -> 250 usFQTSS/SRP 用这些值计算:
maxFrameRate = MaxIntervalFrames / classMeasurementInterval
actualBandwidth = (perFrameOverhead + MaxFrameSize) * maxFrameRate这个计算结果用于判断路径能否接纳 Stream,并进一步决定端口上 SR class queue 的 operIdleSlope。因此,TSpec 属于 SRP/MSRP 的控制平面信息,class measurement interval 属于 Qav/FQTSS 对 SR class 的时间基准,credit-based shaper 则是出端口队列实际执行的发送选择算法。
控制路径
SRP 和管理配置决定哪些 SR class 存在、每类可预约多少带宽、边界端口在哪里、优先级如何重映射、traffic class table 如何配置、每个队列使用 strict priority 还是 credit-based shaper。
章节级拆解
Clause 1 Scope 插入文本
这一段把 Qav 的目标说清楚:为时间敏感、低丢包、实时 AV 数据流提供有界时延和时延变化的性能保证。它同时强调 VLAN tag 中的 priority value 被用于把 AV 流和非 AV 流分到不同队列。
学习重点:Qav 的入口是 priority 和 traffic class,而不是新建一套帧格式。
Clause 3 Definitions
这里的关键术语是 AV traffic、latency、SR class、SRP domain boundary port、SRP domain core port、time-sensitive stream。读这些定义时要注意:SR class 是 traffic class,而不是协议报文;SRP domain 是由端口、站点和 LAN 构成的能力范围。
Clause 5 Conformance
Bridge 至少要支持两个 traffic classes,其中一个使用 strict priority,另一个作为 SR class 并支持 credit-based shaper。可选支持多个 SR classes,最多可到七个。
学习重点:Qav 不是要求所有队列都用信用整形,而是把它作为 SR class 的 transmission selection algorithm。
Clause 6.6.4 SRP Domain status parameters
这里定义 SRP domain 的条件:参与站点支持信用整形、支持 SRP、对同一 SR class 使用一致优先级。每个端口可以被判断为 boundary port、core port 或不属于该 SRP domain。
学习重点:域边界决定了哪些流量被视为可信的预约流量。
Clause 6.9.4 Regenerating priority
这里解释 priority regeneration table 和 SRP domain boundary override。边界端口会把外部进入的 SR class 优先级重映射,避免未预约流量进入域内后获得预约类待遇。
学习重点:优先级不仅用于排队,也用于保护预约域边界。
Clause 8.6.8 Transmission selection
Qav 在这里引入 credit-based shaper 作为可选 transmission selection algorithm,并保留 strict priority 作为默认。每个 traffic class 的队列可以配置使用哪种算法。
学习重点:credit-based shaper 是“选哪个队列发”的规则,不是端到端协议。
Clause 34 Priority mapping
这里给出 SR classes A/B 与 priority/traffic class 的推荐映射。它体现了 SR class 要在现有 802.1Q priority 体系中获得队列位置。
Annex L Credit-based shaper
Annex L 是精读重点。它解释 credit 如何上升和下降,hiCredit/loCredit 如何限制突发,最坏时延如何受干扰帧、fan-in、永久缓存占用影响。
信用整形算法的直觉模型
credit 可以看成“这个队列被允许补发的额度”。
- 队列有帧等待但暂时发不了时,credit 增长。
- 队列正在发送时,credit 下降。
- credit 太低时,队列不能继续发送。
- credit 太高时,会被 hiCredit 截住,防止无限攒信用后爆发。
这个机制让 SR class 可以在平均意义上获得预约带宽,又不会用严格优先级无限压制低优先级流量。
关键定义的定位
- AV traffic:Definitions。
- SR class:Definitions。
- SRP domain boundary/core port:Definitions 与 Clause 6.6.4。
- Priority regeneration:Clause 6.9.4。
- Queuing frames:Clause 8.6.6。
- Transmission selection:Clause 8.6.8。
- Credit-based shaper:Clause 8.6.8.2 与 Annex L。
- Worst-case latency:Annex L.3。
- Buffering requirement:Annex L.3.2。
术语之间的依赖关系
flowchart TD A["SRP reservation"] --> B["SR class"] B --> C["Priority value"] C --> D["Traffic class"] D --> E["Outbound queue"] E --> F["Credit-based shaper"] F --> G["Bounded latency analysis"] F --> H["Buffer requirement analysis"]
与其它来源的关系
- 来源_IEEE_802.1Q-2005_虚拟桥接局域网_deep_dive 提供 priority、traffic class、bridge port 和 forwarding process 基础。
- 来源_IEEE_802.1CB_可靠性帧复制与消除_deep_dive 关注可靠性复制,与 Qav 的排队整形互补。
- 概念_信用整形与SR类 是本来源的核心概念页。
易混点
信用整形不是严格优先级
严格优先级是高优先级有帧就先发。信用整形则允许 SR class 优先,但要受 credit 限制,因此能控制平均带宽和突发。
Qav 不做入口 policing
标准强调机制在 outbound queues 上工作。入口处超量流量、恶意流量或错误流量仍需要其它机制处理。
SR class 不是 VLAN
VLAN 负责二层逻辑隔离;SR class 是 traffic class,用于时间敏感流排队和预约。它们可以通过 VLAN tag 中的 priority 字段发生联系。
hiCredit 不是越大越好
hiCredit 过大意味着队列可形成更大突发,可能增加下游缓存和时延压力。它是带宽、干扰、帧大小和端口速率共同作用的结果。
有界时延依赖配置前提
如果 SRP reservation、priority mapping、idleSlope、buffer 都配置不当,单有 credit-based shaper 并不能保证实际网络表现。
读这篇标准时的推荐顺序
- 先读 Scope 插入文本,理解 Qav 的目标。
- 读 Definitions,掌握 AV traffic、SR class、SRP domain。
- 读 Clause 5,知道设备需要支持什么。
- 读 Clause 6.6.4 和 6.9.4,理解 SRP 域和边界优先级重映射。
- 读 Clause 8.6.6 / 8.6.8,理解队列和 transmission selection。
- 读 Clause 34,理解 priority-to-traffic-class mapping。
- 精读 Annex L,理解 credit、最坏时延和缓存需求。
我还没完全理解的问题
- Annex L 的最坏时延公式在现代 TSN 工具链中如何被自动化计算。
- SR class A/B 的默认优先级在不同工业以太网 profile 中是否会被重新约定。
- credit-based shaper 与 Qbv 时间感知调度共存时,队列选择优先级如何组织。
- 边界端口 priority remapping 在实际交换机配置界面中通常对应哪些命令或对象。
已拆出的概念页
- 概念_802.1Qav_SR_class
- 概念_802.1Qav_credit_based_shaper
- 概念_802.1Qav_idleSlope与sendSlope
- 概念_802.1Qav_hiCredit与loCredit
- 概念_802.1Qav_SRP域边界
- 概念_TSpec
- 概念_class_measurement_interval
- 概念_Priority的使用管理
- 概念_Priority与Traffic_Class