3、TSN协议族全景:802.1Qat(流预留)、802.1Qci(流过滤)、802.1CB(冗余管理)
各位工程师朋友,咱们接着聊TSN。上一节我们把TSN的时钟同步和调度机制讲透了,这一节我打算把另外三个核心协议一口气说完——流预留(Qat)、流过滤(Qci)和冗余管理(CB)。
这三个家伙,说白了就是TSN的「交通警察+保险专员」。Qat负责给数据流提前「占车道」,Qci负责在路口「查违章」,CB则是在车辆翻车时「自动切换备胎」。嗯,咱们一个一个来拆。
3.1 802.1Qat:流预留协议(SRP)
先问大家一个问题:你开车上高速,最怕什么?堵车对吧?车载网络也一样。如果摄像头、雷达、激光雷达一股脑往总线上发数据,关键的控制指令可能被堵在半路。
802.1Qat 就是来解决这个问题的。它允许网络中的某个节点(比如摄像头)提前向交换机「申请」带宽和延迟保障。交换机收到申请后,会沿着路径逐跳检查资源是否够用。够用就预留,不够用就拒绝。
我个人习惯把Qat比作「酒店预订系统」。你想啊,你出差前先订好房间,到了直接入住,不用临时找房。数据流也一样——先声明「我要发100Mbps,延迟要求2ms以内」,交换机说「行,这间房给你留着」,后面其他流就不能抢了。
- Talker(说话者):发送端,发起流预留请求
- Listener(收听者):接收端,确认接收该流
- MSRP(多流预留协议):负责在网桥间传递预留消息
- 预留方向:从Talker到Listener,逐跳协商
我在项目中遇到过一个问题:某款ADAS域控同时发4路摄像头数据,每路要求预留500Mbps带宽。结果交换机死活只给预留3路,第4路一直报错。查了半天,发现是交换机的内部带宽池被其他非TSN流量占了一部分。嗯,这里要注意——Qat只保证预留后的带宽,但预留前的「总池子」你得自己算清楚。
3.2 802.1Qci:流过滤与监管
好,Qat把车道占好了,但万一有「不守规矩」的节点怎么办?比如某个传感器突然抽风,疯狂发包,把预留的带宽全冲垮了。这时候就需要 802.1Qci 上场了。
Qci,全称是「Per-Stream Filtering and Policing」,翻译过来就是「每条流单独过滤和监管」。它部署在交换机的入口端口,像一个安检员——每个数据包进来,先检查它属于哪条流,然后看这条流有没有超速、有没有违规。
你想想看,如果没有Qci,一条恶意流或者故障流就能把整个网络搞瘫痪。这在功能安全要求极高的车载环境里,是绝对不能接受的。
- 过滤(Filter):根据流ID(Stream ID)判断是否允许通过
- 监管(Police):用令牌桶算法检查流量是否超过预留带宽
- 动作(Action):对违规包执行「丢弃、打标记、重定向」等操作
我记得有一次,客户反馈说某个雷达数据偶尔会延迟几十毫秒。我们用抓包工具一看,发现是雷达模块的软件bug,导致它在某个工况下突然发了大量重复包。交换机上的Qci直接把这些包标记为「黄色」(低优先级),结果它们被后面的调度器排到了队尾。嗯,这就是Qci的功劳——它把「坏孩子」揪出来,不让它影响「好孩子」。
3.3 802.1CB:冗余管理(FRER)
最后这个协议,我个人觉得是TSN里最「硬核」的一个——802.1CB,全称Frame Replication and Elimination for Reliability,简称FRER。
说白了,它就是给关键数据流做「双保险」。发送端把每个数据包复制一份,走两条不同的物理路径发送。接收端收到后,只保留第一个到达的包,把重复的丢掉。这样,即使一条路径断了或者出了严重丢包,另一条路径还能把数据送到。
你可能会问:这不就是传统的冗余通信吗?没错,但802.1CB的精髓在于——它是在TSN框架下做的,能和Qat、Qci、Qbv等协议无缝配合。而且它只对特定的关键流做冗余,不影响普通流。
| 术语 | 含义 |
|---|---|
| FRER(冗余) | 帧复制与消除机制 |
| Sequence Number | 每个数据包携带的序列号,用于去重 |
| Redundancy Tag(R-Tag) | 在以太网帧头中插入的冗余标签 |
| Elimination | 接收端根据序列号丢弃重复包 |
我在做自动驾驶域控制器项目时,对802.1CB感触特别深。当时要求转向和制动指令的丢包率必须低于10^-10,单条链路根本做不到。后来我们给这两条关键控制流配置了CB冗余,走两条独立的物理链路——一条走交换机A,一条走交换机B。实测下来,即使其中一条链路被电磁干扰打掉50%的包,另一条链路依然能保证100%的送达率。
3.4 三个协议的协同关系
好了,三个协议都讲完了。但我想强调一点——它们不是孤立的,而是一个整体。
Qat负责「承诺」:这条流需要多少资源,我给你预留好。
Qci负责「监督」:预留的资源你有没有超用?超了我管你。
CB负责「兜底」:万一链路出问题了,我还有备份路径。
你想想看,一个完整的TSN网络,如果没有Qat,带宽可能被抢;没有Qci,故障流可能扩散;没有CB,关键数据可能丢包。三者缺一不可。
- 对非关键流(如OTA升级、日志上传):只用Qat预留,不用CB
- 对关键控制流(如转向、制动、加速):Qat + Qci + CB 全上
- 对传感器数据流(如摄像头、雷达):Qat + Qci,CB可选
最后说一句,这三个协议在IEEE 802.1标准里都有详细的规范文档,但实际落地时,不同芯片厂商的实现细节差异很大。我建议你在选型时,一定要拿到芯片的TSN功能清单,逐条核对——支持Qat不代表支持所有Qat特性,支持CB不代表支持序列号扩展。嗯,这些坑,我替你们踩过了。