关于IEEE 802.1

EEE 802.1是IEEE制定的局域网/城域网标准体系中的顶层框架规范,负责定义网络体系结构、管理机制及高层协议交互规则(如VLAN、生成树协议等),而非具体物理层技术。

其编号“802”源于1980年2月(February 1980)成立的IEEE 802委员会,而“.1”表示这是该委员会发布的首个核心标准系列,用于统筹后续所有802.x子标准的协同工作。

以太网

以太网的传输策略是尽力而为(Best effort),TSN的传输目标是实现有界低延迟。

TSN传输选择与整形器

传输选择(Transmission Selection)是整形器(Shaper)的前置决策模块,整形器是传输选择的执行约束条件——TS选出的帧必须通过整形器的时隙验证才能实际发送。

TSN传输选择机制

SP:strict priority,严格优先级调度。

TSN三种整形器

  • 基于信用的整形器CBS:相当于流量限制器,限制流量可以保证不堵车,可以实现交替流量通行,总流量不超过线路总带宽。问题是依赖于统计,时间确定性不是很强。
  • 时间感知整形器(TAS,也就是门控):强依赖全局时间同步,适用于周期流。相当于定时的红绿灯,交替通行。可以更准确控制通行时间,但是缺点是周期性强,对于紧急流量,达不到最快传输,需要进一步优化。缺点,周期开关通路,如果打开时只有很少的流量或者没有流量经过,那么会浪费一定的带宽。相当于应急车道,重在预留。
  • 异步流量整形器:创新在于抛弃全局时钟调度,转而采用基于流紧急度的动态调度,适用于处理突发流,如紧急制动,通常为了提高实时性,配合帧抢占使用。相当于交警为消防车/急救车开路。

这几种机制,不是单选,而是多选,配合使用,应对所有场景。

TSN工作流

三个步骤:
1.入口控制:Linux内核通过内核的流量控制子系统,进行流量分类,帧识别,按优先级映射到网卡队列。
2.传输选择(按优先级):选择下一个需要发送的数据。
3.出口控制:使用整形器判断能否立即发出。

Talker & Listener

  • 在TSN(时间敏感网络)中,Talker 和 Listener 是一对核心角色,可以理解为数据的生产者和消费者。

VLAN TAG

  • VLAN Tag 是一个 4 字节的标签,贴在以太网帧里,告诉交换机“我是哪个 VLAN 的,优先级是多少”。其中 PCP 字段就是 TSN 时间感知整形用来决定“走哪个门”的关键信息。
  • 不带 VLAN Tag的帧叫Untagged 帧
  • 标准 802.1Q VLAN Tag 插入在源 MAC 地址和以太网类型/长度字段之间。

什么是VLAN

  • 默认一个交换机内的广播,所有节点都能收到。为了精细化管理,减少资源消耗,使用VLAN来划分逻辑子网。VLAN 就是用一台物理交换机,逻辑上变出多台独立的虚拟交换机,让不同部门的网络互不干扰,更安全、更高效。核心是交换机要支持VLAN,否则无法实现。
  • VLAN 默认靠交换机端口区分(Access 链路),只有在需要跨越交换机或需要让接收端识别 VLAN 时(Trunk 链路),才需要显式打上 VLAN Tag。
  • TSN 需要 VLAN Tag,不是因为 TSN 依赖 VLAN 的“网络隔离”功能,而是因为它需要 VLAN Tag 里的一个关键字段:PCP(优先级)。

Qbv

  • TSN 的时间感知整形(802.1Qbv)(TAS)本质上是抢占式的时间片分配。TSN 的时间片是按“预约”分配的。你预约了时间片却不用,别人不能用,数据只能等下一轮。所以“准时开门”很重要,“门里有货”同样重要。系统-网卡同步,就是为了保证“门里有货”。
  • 在标准的 802.1Qbv 中,高优先级数据如果在时间片结束时还没发完,它不会被打断,而是会继续发送,导致侵占低优先级的时间片。反过来,低优先级的数据如果还没发完,也会一直发,此时高优先级的数据就会阻塞。这是Qbv的缺陷。解决办法是引入Qbu。
  • Qbv要求,TSN 网卡之间需要通过gPTP协议进行时间同步,其目的是让所有网卡能够精确、准时地协作。它确保了各网卡拥有完全相同的全局基准时间。在此基础之上,再通过为每块网卡配置独立的门控开关周期,就能保证它们的门控操作在全局时间轴上准时执行、互不冲突。
  • 时间同步有主从之分,主同步给从。
  • 网卡与系统之间也需要进行时间同步,保证业务能够控制数据发送时机。

gPTP时间同步

协议学习

● PTP(Precision Time Protocol),对应 IEEE 1588-2019 标准,建议直接跳过,看gPTP。

● gPTP:(generalized Precision Time Protocol),基于PTP修改特化的版本,适用于TSN。对应IEEE 802.1AS 标准。

● gPTP基于L2组播,由网卡硬件完成,时间精度更高(硬件时间戳)。gPTP(IEEE 802.1AS)直接在数据链路层(L2)的以太网帧中传输,不进行任何IP层(L3)封装。其报文通过 MAC层原生传输,使用 特定的组播MAC地址(如 01:80:C2:00:00:0E)和 以太类型(EtherType)0x88F7 标识,跳过IP协议栈,因此路由器(L3设备)会直接丢弃此类报文,天然无法跨子网传播。

● peer to peer delay,点对点延迟,能确定这个参数,就可以完成时间同步

● 工作流程:Sync+Pdelay
Sync:发的是绝对时间。
pdelay_req(一般是Slave发),带的是相对时间,用来算误差足够。
pdelay_resp(一般是Master发),带的是相对时间,用来算误差足够。
pdealy_resp_follow_up(一般是Master发),带的是相对时间,用来算误差足够。

先根据pdelay算链路延迟,再根据Sync时间戳和本地时间戳差值减去链路延迟,就能得到Slave和Master的绝对时间偏移。

● 哪个是Master哪个是Slave?Master是时钟质量最优的设备(由优先级、等级、精度自动选举产生),Slave是主动同步它的设备,角色动态确定、非固定配置。

● gPTP(IEEE 802.1AS)直接在数据链路层(L2)的以太网帧中传输,不进行任何IP层(L3)封装。其报文通过 MAC层原生传输,使用 特定的组播MAC地址(如 01:80:C2:00:00:0E)和 以太类型(EtherType)0x88F7 标识,跳过IP协议栈,因此路由器(L3设备)会直接丢弃此类报文,天然无法跨子网传播

● gPTP规定一个局域网里只能有一个master,其他全部是slave。

● gPTP直连是最简单拓扑(无需交换机),但若通过交换机,必须使用支持gPTP/TSN的特殊交换机。普通交换机无法满足纳秒级同步需求,会导致同步失败或精度大幅下降。

● gPTP 不计算端到端延迟,而是仅测量相邻设备间的单向链路延迟(如节点A↔交换机、交换机↔节点B)。终端节点通过累加所有相邻链路的延迟值,间接获得到主时钟的总延迟,避免普通交换机引入的随机抖动。

● 普通交换机无法支持gPTP:缺失P2P延迟测量能力;gPTP要求报文在L2 MAC层处理,普通交换机通常在L3转发PTP报文;需要硬件时间戳。

● 所有时间戳必须由硬件生成(软件打戳抖动 >1μs,无法满足gPTP的纳秒级要求)。

● 交换机叫Switch,延迟测量发起方叫 Initiator,响应方叫Responder。

● gPTP计算延迟的公式是:

d = [(t4 - t1) - (t3 - t2)] / 2

之所以除以2,是因为gPTP假设来回链路对称。gPTP强制限定TSN场景(如车载网络),确保对称性成立,即符合“双向时延一致,没有时延差”的假设。若链路不对称,gPTP会直接失效(标准要求网络设计时规避此问题)。

相关工具

linuxptp工具,包含:
● ptp4l:实现IEEE 1588 PTP协议,通过交换Sync/Follow_Up/Delay_Req等报文,将本地PHC(PTP Hardware Clock)与网络主时钟(Grandmaster)同步。
● phc2sys:网卡硬件时钟同步到系统时钟。支持双向同步:既可将系统时钟同步到PHC(-c CLOCK_REALTIME),也可将PHC同步到系统时钟(-s /dev/ptp0)

Qbu

帧抢占Qbu解决了Qbv中高优先级数据被低优先级数据阻塞问题。

时间侵占问题

如果一个数据包很大,导致超出了门控开门时间,侵占了其他门控的时间。这会破坏理想时间表,但 TSN 通过“保护带”来预防、“帧抢占”来阻断、“监管”来约束、“重配置”来恢复,把侵占限制在可控范围内,避免“全乱套”。但你的直觉是对的——TSN 不是万能保险,它的确定性依赖于所有节点的守规矩。

关于保护带

保护带是 TSN 为了“确定性”而支付的“带宽税”——无论路况好坏,应急车道永远空着。

实际系统中,晶振漂移、温度变化、电压波动都会导致微小的时间误差。没有保护带,这些误差累积起来会直接导致时间片 A 的帧侵占时间片 B,造成冲突。

工程实践:保护带通常设置为 最大帧长度的发送时间 + 安全余量。比如 1Gbps 下,最大帧 1500 字节需要约 12us,保护带通常设 15-20us。

门控会一直发,直到同优先级的数据队列发送完吗

门打开期间,只要队列有数据且发得完,硬件就会一直发直到队列清空。发不完的留在队列里,等下一个周期。

当前优先级时间还没完,高优先级队列有数据来了,会怎么样

门控是“路权”,抢占是“插队权”。没有路权,插队权无效;有路权但被低优先级堵住时,抢占才起作用。

Jitter

Jitter是指网络数据传输时间的抖动。不是每个包从发送到接收花费的时间都一样,它们之间的时间差就是抖动。对于一些应用,稳定的延迟比低延迟更重要。Jitter = 延迟的变化量。延迟可以接受,但抖动大会让实时应用(语音、视频、工业控制)出问题。TSN 的目标就是把抖动降到接近零。

TSN风险

TSN不是“无限容量的高速公路”,而是按预约通行的高铁系统——
网络划座(资源预留) + 乘客对号入座(流量守约) = 准点到达(时延有界)任一环节违约,确定性即刻瓦解。用户流量必须严格按约定速率和模式发送,否则调度机制(如时间门控)将因资源冲突失效,确定性保障即刻崩塌。

FRER(帧复制与消除)

  • 即多发选收
  • 802.1CB标准,简称cb
  • FRER和Qbv都需要帧识别,首先识别是不是TSN的流量,另外

编程相关

TSN的MAC数据帧优先级存在哪里

IEEE 802.1Q 标准下,L2数据链路层的数据包中,有4个字节的VLAN标签。TSN中的数据帧优先级就在第16位、第17位、第18位,也就是第三个字节的前三个bit。

TSN帧识别

TSN帧识别的核心依据是目的MAC、源MAC、VLAN_ID及IP五元组等多维特征,通过匹配生成唯一stream_handle。

配置TSN时,必须显式定义流识别规则(如指定关键流量的MAC/IP特征),否则交换机无法对时间敏感流实施确定性调度。

Linux中可以通过 tc 命令进行配置流和识别流。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐