
简介IEEE 802.1Qcr-2020标准原文PDF面向TSN协议研究者、网络工程师及工业通信开发者系统规定了局域网与城域网桥接网络中的异步流量整形机制。该文件是IEEE 802.1Q-2018的第34项修订整合了CP、CC、CY、CX等多版更新内容定义了桥接设备与端点执行异步流量整形的程序、管理对象和配置接口涵盖流量整形算法、优先级队列调度、时隙分配、流量监管、带宽预留和故障恢复等关键机制。通过研读该标准可深入理解TSN确定性通信的实现路径掌握异步流量整形在带宽约束下平滑传输、避免拥塞与丢包的技术细节。资源包仅含1个PDF文件大小2.8MB为IEEE官方发布的完整英文原版含标准书号与版权信息适合作为技术查阅、方案设计与学术引用的权威依据。已有697人学习下载适用于工业自动化、车载网络、航空航天等需要低延迟高可靠传输场景的开发研究者。 先交代一下背景。前阵子项目里接到一个任务给一条工业现场总线做流量调度改造要把传感器数据流、控制报文和视频流混跑在同一台交换机上还要保证控制报文不被视频突发挤掉。翻了一轮资料最后锁定了 IEEE 802.1Qcr-2020也就是常说的异步流量整形Asynchronous Traffic ShapingATS标准。啃完文档、跑完demo之后我的判断是如果你正在评估TSN时间敏感网络方案又不想被全局时钟同步的部署难度劝退这份标准值得认真读一读。这篇就把我对 802.1Qcr 的理解整理成一份可落地的笔记内容包括它解决什么问题、核心机制是什么、和 802.1Qbv/Qch 怎么配合、在真实设备上怎么调参验证以及我踩过的几个坑。适合网络工程师、工业以太网方案选型人员、嵌入式音视频传输方向的同学参考。1. 802.1Qcr 在TSN家族里的定位以及为什么我最后选了它1.1 先搞清楚它是谁IEEE 802.1Qcr-2020 是 IEEE 802.1 工作组为时间敏感网络TSN发布的一项修订标准全称很长核心词是 Asynchronous Traffic Shaping中文一般翻译为异步流量整形。它属于 802.1Q 网桥与虚拟局域网标准体系的补充协议2020年正式发布。放在TSN工具集里看会更直观802.1Qbv 是时间感知整形器TAS靠门控列表在固定时隙里开关队列需要全网络时钟同步802.1Qch 是循环排队与转发CQF同样依赖一个全局同步的周期时钟把流量按周期批量转发。802.1Qcr 则走了另一条路不要求全网时间同步而是通过给每个流或每个聚合类计算一个“最早可发送时间”把突发流量平滑成均匀输出从而限制排队延迟的上界。简单说Qbv/Qch 是“大家按同一张时刻表行动”Qcr 是“我不关心你几点钟只要你别一次性把我塞爆”。1.2 为什么需要这个标准它到底解决了什么现实痛点行业里谈到TSN必提Qbv但Qbv对部署的要求非常高所有桥、所有终端都要跑gPTP做时间同步精度通常要求在亚微秒级一旦某个节点的时钟漂移超标整条链路的时延保证就会崩掉。这个门槛在工厂车间、车载骨干网这类环境下尤其让人头疼因为不是所有终端都支持精密时钟协议也不是所有现场网络都允许改造成全同步架构。802.1Qcr 的出现正好补上了这块空缺。它可以让一部分网络节点不参与时间同步也能给关键流提供有界时延。实际项目中我把控制类报文划入高优先级ATS类把视频流划入低优先级ATS类即便视频流量突发到端口线速控制报文的时延抖动也始终控制在一个稳定范围内。这点与CQF不同CQF需要精确周期窗口保证时延下界ATS则通过每跳整形将时延上界控制在“突发量/速率”决定的范围内。用通俗的话说Qbv是把路口信号灯按秒表控制ATS是给每辆车装了一个限速器不让任何一辆车突然堵住后面所有车。从这个角度看802.1Qcr 特别适合三类场景工厂现场级网络改造终端设备老旧没法全部支持gPTP车载/机载骨干网节点移动、温度变化导致时钟同步抖动大音视频专业传输需要低抖动但不想承担全同步的运维成本。1.3 读标准之前需要准备的背景知识如果之前完全没接触过TSN直接啃802.1Qcr原文会有点吃力。建议先弄明白几个前置概念优先级与流量类别Priority/TC的映射、信用值整形器Credit-Based Shaper、令牌桶和漏桶的基本思想以及带宽预留协议如RSVP或MSRP的工作方式。ATS本质上是把带宽预留和整形结合得更紧如果对这几个概念不熟后面看参数会找不到方向。我当时是先看了802.1Qbv的门控机制做对比再回头读802.1Qcr整个理解速度快了很多。因为ATS的很多术语是从Qbv体系借用过来的比如“队列”“流量类别”“内部子层服务”先有全局概念再啃细节才不会陷在术语里出不来。2. 核心机制异步流量整形到底在整什么2.1 ATS的工作流程拆解先给一个整体框架。ATS在每台桥交换机上做的事情可以拆成四步流识别Stream Identification把入端口收到的帧根据目的MAC、VLAN ID、优先级等字段分到对应流或者聚合成一个整形类Path Segment。计算合格时间Eligibility Time这是ATS的核心动作。每收到一帧整形器会计算这个帧“最早什么时候可以发出去”依据是流的带宽预留参数和上一帧的发送状态。排队等待帧进入队列但并不是先进先出而是按照合格时间排序。时间没到的帧即便是队列头也不能发送。用于发送一旦本地时间达到合格时间帧就可以出队通过出端口发到下一跳。这里最关键的是第2步。计算合格时间时会用到两类参数一类是流的带宽参数预留速率、最大突发大小另一类是整形器内部状态上一帧实际发送时间、累计补偿值。我通常把这一步理解成一个带“时间戳约束”的令牌桶令牌不只是控制平均速率还决定了帧最早能露头的时间点。只要参数设置合理聚合流的输出就会非常平滑突发被削平排队时延被限制在预定义范围内。2.2 标准里的三个核心参数以及我的理解802.1Qcr 标准文本里定义了多个参数但对实际调优帮助最大的就三个Committed Burst SizeCBS承诺突发大小允许流在正常速率基础上瞬时多发的字节数。这个值决定了你愿意给这个流多少突发缓冲。设得太小视频帧的瞬时码率会被削出包丢失设得太大整形效果弱排队延迟上界变高。Committed Information RateCIR承诺信息速率流长期占用的平均带宽。它决定了流的“预算”上限相当于给这个流发了一张长期饭票饭票总额就是CIR。本地误差补偿Local Budget/EID Compensation每个整形器节点会根据实际发送情况调整下一次合格时间补偿本节点队列处理带来的误差。这是异步操作能成立的关键也是与简单令牌桶最大的区别。这三个参数配合使用本质上是在做一个两难权衡突发给得越多时延上界越大给得越少对burst性业务的容忍度越低。实际配置时我会先用抓包工具测出现场业务的真实burst特征比如视频I帧的峰值码率再反推CBS而不是拍脑袋填一个数。2.3 它和802.1Qbv、802.1Qch的实质性差异为了快速向同事说明ATS的价值我画过一张对比表这里直接复用核心部分维度802.1QbvTAS802.1QchCQF802.1QcrATS时钟同步必须亚微秒级必须周期边界精确不需要全局同步转发规则门控列表按时间开/关队列固定周期内收、下一个周期发帧级别计算合格时间按时间排序发送时延上界取决于门控周期与路径取决于周期数2-3跳取决于突发量与速率实现复杂度高门控表配置繁琐中周期同步也要做相对低只需本地时钟适用场景确定性极高、节点可控的闭环控制环形/链形拓扑周期统一升级改造、跨厂商异构网络这套对比给我的直接结论是如果你的网络已经具备了完整的gPTP同步能力Qbv当然是最强的确定性方案但如果像我们项目一样要兼容大量只支持标准以太网的终端设备Qcr几乎是唯一能在“不改终端、只换交换机”的前提下给出时延确定性承诺的方案。2.4 为什么异步也能保证时延上界最初我也有一个疑问既然大家都不看同一个钟ATS凭什么保证端到端时延有上界啃完标准后我找到了答案它把“时延上界”的保障从时间同步换成了速率整形。每台ATS交换机都给每个流预留了带宽和突发配额帧进入队列后必须在合格时间之后才能被发送所以任意时刻某个高优先级队列的长度不会超过“CIR允许的突发量”。只要每一跳都做同样的事情整条路径的排队时延上界就等于每一跳的突发排队时间总和。这个上界与全局时钟无关只与每一跳设置的最大突发有关。所以只要把CBS/CIR设对端到端时延是可以算出来的。3. 从标准到设备我在Linux环境下的配置与验证过程3.1 最小验证拓扑我现在建议这样搭如果只是想搞懂ATS的行为特征不必马上去买TSN交换机。我建议用具备Qdisc整形能力的Linux主机搭建虚拟拓扑三台Linux主机一台当桥开启桥接另外两台分别当发送端和接收端。发送端用tc工具在网卡上挂一个基于速率的整形器往桥的设备发不同优先级的UDP流。桥设备用Linux的traffic control配合HTB或taprio在工作机制上近似模拟合格时间排序的效果。接收端用tcpdump抓包统计不同流的时延、抖动、丢包率。当然Linux的普通Qdisc不完全等同于802.1Qcr的硬件整形器但用来验证“带宽预留突发限制”对抖动的影响已经足够了。如果手头有支持TSN的芯片比如某些工业交换芯片再在芯片环境里重复同一套验证效果会更接近标准行为。3.2 参数计算示例1Gbps端口下给视频流预留100Mbps假设端口速率是1Gbps我们要给一路视频流做预留预留带宽CIR100Mbps测试发现视频I帧最大突发约150KB。为了不让I帧被削出丢包CBS至少不能小于这个突发值考虑到桥的转发处理还会引入一些瞬时排队我给CBS留了20%余量即180KB。然后计算这个流在桥上的排队时延上界队列中的最大数据量 CBS 180KB 1,474,560 bits发送速率 CIR 100Mbps最大排队时间 1,474,560 / 100,000,000 ≈ 14.7毫秒。如果这14.7毫秒对业务来说太长就需要减小CBS如果减小又影响I帧完整传输那说明100Mbps预留本身不够要调大CIR。这种计算方式在设备调试时非常管用先算后配能少走很多弯路。3.3 真实实验中的配置顺序与检查项我在验证环境里的操作顺序大概是这样的发送端不打流先确认桥上的PCP优先级映射正确确保控制报文走的是我们要整形的那个队列。发送端用iperf或自研脚本打背景流量把端口压力拉起来。开启桥设备上的整形器设置CIR/CBS参数。用tcpdump或Wireshark在出口侧抓包统计关键流的时延与抖动。反复调整CBS观察时延曲线变化找到业务可接受的平衡点。此外强烈建议在看板上做一个队列占用监控。如果队列长度经常顶满说明CBS设小了或者CIR相比实际流速太小如果队列长期为空说明参数设得过大时延上界会有不必要的提升可以适度收紧。3.4 硬件环境下实现ATS需要注意的差异软件验证只是第一步落地时大多还是得靠ASIC交换芯片来实现ATS。硬件实现的普遍做法是把帧的合格时间计算放在入端口完成在出端口用带时间戳的队列调度器排队。这种情况下几个细节直接决定成败时间戳粒度合格时间计算需要纳秒级或至少百纳秒级的时间戳如果芯片的时间戳精度太粗整形效果会退化。队列深度ATS要让高优先级流平滑发送队列物理深度必须大于CBS否则瞬时突发来了会直接丢帧。更新频率很多商用芯片的调度器不是逐帧更新的而是按块batch更新这会引入额外延迟。我遇到过块大小设置过大导致抖动超标的问题后来调小批处理粒度才解决。4. 落地过程中的常见坑以及排查经验4.1 流识别规则没统一整形器形同虚设第一个坑来自流识别。ATS的整形对象是“流”而流要靠帧头字段来区分。我们一开始用VLAN PCP做分类结果上游设备把视频流和控制报文的PCP都设成了5导致两者被并进同一个整形类。控制报文被视频突发拖累时延飙升。后面在桥的入口处改成了按目的MACVLAN ID联合识别才把两类流量剥离开。这个问题的排查思路很简单先在桥上加一个ACL或者镜像规则确认每个流实际匹配到的分类类别是什么而不是只看预期。4.2 把CBS设得过大时延上界被拉高而不自知刚开始做调优时我为了减少丢包把视频流的CBS设到了300KB。丢包确实降下来了但控制报文的端到端时延从平均值2ms涨到了20ms因为同一类里排队的视频数据太多把发道路径占满了。后来想明白CBS不是越大越好它本质上是用时延换突发容忍度。要根据业务对时延的敏感度反推CBS上限再配合CIR一起调。如果你遇到类似情况建议把CBS先从测试到的真实最大突发值开始然后以50ms为单位逐步往下压同时持续观测业务时延。找到丢包率可接受、时延又不过高的拐点即可。4.3 抓包时间戳精度不够算出来的抖动全是假的用普通网卡在接收端抓包时间戳精度往往只有微秒级甚至更低。对于ATS这种动辄要求几十微秒抖动的场景这种精度没办法区分整形前后的差别。我们最初用软时间戳算抖动数据跳得像心电图完全没法用。正确的做法用支持硬件时间戳的网卡例如Intel I210/I211或专用的TSN网卡抓包确保抓包软件读取的是网卡硬件时间戳而不是内核软件时间戳。这一步差别巨大直接影响抖动数据的可信度。4.4 优先级映射与队列映射不一致导致白忙一场桥设备内部通常有8个队列但并非所有厂家默认把PCP 3映射到队列3。我们曾经配置了半天结果发现控制报文的流量一直没走ATS队列而是走了普通尽力而为队列——因为交换芯片的默认PCP-TO-TC映射和我们预期的不一样。后来在芯片的SDK里把映射表统一改成PCP值等于队列号才彻底解决。排查这类问题有个快速方法把其他队列全部关闭只留ATS队列然后同时打不同类型流量如果只有预期流量能过说明映射对了。4.5 与现有QoS体系并存时的生态位如果网络里已经有基于优先级和DSCP的QoS策略再上ATS容易造成规则冲突。我现在的处理原则是ATS只负责关键流量类的整形其他流量继续走原有QoS对于同一个队列优先满足ATS参数其他非ATS流靠信任模式而不是额外标记。这样可以最大限度减少对现有业务的改造量也方便后期故障定位。5. 场景选型以及我对ATS落地前景的一点判断5.1 什么场景下用ATS最划算根据这段时间的实践观察ATS最适合的场景有一个共同特征网络里只有部分节点对确定性时延有硬性要求且整个网络很难在短期内做成全同步架构。比如工厂里在老旧以太网上新增一条机器人控制流控制流必须低抖动其他流量可以尽力而为车载骨干网里传感器、控制、音视频混跑但部分ECU不支持精确时间同步专业音视频直播多路视频流同传要求互不干扰又不想上一套完整的TSN同步基础设施。这些场景下ATS的性价比极高不需要改终端不需要全同步只要在关键路径上换几台支持ATS的桥就能给关键流提供确定的时延上界。5.2 对最终用户选型的三点建议如果你现在正在评估支持ATS的设备我建议重点关注三件事看芯片支持的流数量上限。有些入门级交换芯片只能做32条流的ATS整形对于大流量场景可能不够。看CBS/CIR的粒度。有的芯片粒度是64Kbit做小带宽预留时精度很差。看配置接口是否开放。有的设备商只在CLI里暴露了CIR没暴露CBS这样很难做精细调参。建议选那些能通过SDK或API直接操作整行器参数的产品。我个人的判断是随着工业现场网改造和车载以太网升级的需求越来越强ATS不会被Qbv取代反而会以“低成本确定性组网”的定位走出一条自己的路。当然前提是厂商文档和芯片能力能够跟上标准的复杂度让这份标准真正从PDF变成可用的产品特性。本文还有配套的精品资源点击获取