2. TSN基础与标准体系
时间敏感网络(Time-Sensitive Networking, TSN)并非单一标准,而是由IEEE 802.1任务组制定的一系列子标准所构成的协议族。其核心目标是在标准以太网基础上,提供确定性的数据传输能力,包括有界时延、低抖动、零拥塞丢包以及时钟同步。对于FPGA实现TSN交换机而言,理解这些标准对数据通路(Data Path)的硬性要求,是进行架构设计、资源评估和时序收敛的前提。本章将逐一剖析四个最核心的标准——802.1AS(时钟同步)、802.1Qbv(时间感知整形)、802.1Qbu/802.3br(帧抢占)和802.1Qci(流过滤与监管),并重点阐述它们如何约束FPGA内部的MAC、队列管理、调度器及查找表模块。
2.1 IEEE 802.1AS:时间同步基石及其对数据通路的硬性约束
核心原理:IEEE 802.1AS(,generalized Precision Time Protocol)是TSN的“心跳”。它基于PTP(IEEE 1588)进行精简和扩展,在二层网络中通过BMCA(最佳主时钟算法)选出主时钟,并在所有桥接节点间传递同步报文(Sync、Follow_Up、Pdelay_Req等)。与普通PTP不同,802.1AS要求每个桥接设备(即TSN交换机)必须作为透明时钟(Transparent Clock),计算并修正报文在交换机内部的驻留时间(Residence Time),从而消除排队和转发延迟带来的同步误差。
对FPGA数据通路的要求:FPGA实现802.1AS时,数据通路必须在MAC层与PHY层之间的接口处(如GMII/RGMII/XGMII)插入硬件时间戳单元。这意味着时间戳的捕获点必须位于所有FIFO和排队逻辑之前,以确保同步精度不受内部调度影响。具体而言,FPGA内部需要维护一个高精度的时间计数器(通常为64位,纳秒或亚纳秒分辨率),并在每个端口的MAC接收/发送路径上,对特定报文(如Pdelay_Req)的帧起始定界符(SFD)位置打上时间戳。该时间戳随后被送入CPU或软核处理器进行驻留时间计算和修正域更新。
| 数据通路位置 | FPGA实现要求 | 典型参数/性能指标 |
|---|---|---|
| MAC接收路径 | 在SFD处捕获时间戳,与报文并行送入解析模块 | 时间戳分辨率:8ns(125MHz时钟)或4ns(250MHz时钟) |
| MAC发送路径 | 在发送前插入修正域,更新驻留时间 | 驻留时间计算误差:<50ns |
| 时间计数器 | 全局唯一,所有端口共享,支持频率补偿 | 频率漂移补偿精度:±0.001ppm |
2.2 IEEE 802.1Qbv:时间感知整形器(TAS)与门控调度
核心原理:802.1Qbv定义了时间感知整形器(Time-Aware Shaper),其核心机制是门控列表(Gate Control List, GCL)。每个端口维护8个优先级队列,每个队列对应一个门(Gate)。GCL以固定周期(Cycle Time)循环执行,每个周期内包含若干时隙(Time Slot),每个时隙指定哪些门打开、哪些门关闭。通过精确控制门的开关时刻,可以确保高优先级的时间敏感流量(如控制报文)在特定时隙独占链路,从而消除低优先级流量带来的干扰。
对FPGA数据通路的要求:FPGA实现TAS时,数据通路的核心是门控调度器模块。该模块需要:
- GCL存储与解析:使用RAM存储GCL条目(每个条目包含门状态、时隙长度),由硬件定时器触发读取。GCL长度通常为几十到几百个条目,需支持运行时更新(由CPU配置)。
- 队列选择逻辑:在每个时隙开始时,根据GCL的门状态,从对应队列中取出帧发送。若多个门同时打开,需定义优先级策略(通常高优先级队列优先)。
- 发送保护带(Guard Band):为防止低优先级帧跨越时隙边界,需在时隙切换前插入保护带。FPGA实现时,需在发送路径上监测当前帧的剩余长度,若不足以在时隙结束前完成发送,则暂停发送(或提前截断,但802.1Qbv不允许截断,只能等待下一周期)。
2.3 IEEE 802.1Qbu / 802.3br:帧抢占机制与MAC集成
核心原理:帧抢占(Frame Preemption)允许高优先级帧打断正在传输的低优先级帧,从而将最大阻塞时间从最大帧长(1518字节)降低到最小碎片长度(64字节)。802.1Qbu定义了MAC层的服务接口,而802.3br则定义了物理层的实现细节。该机制将MAC分为两个子MAC:可抢占MAC(pMAC)和快速MAC(eMAC)。eMAC用于传输时间敏感帧,pMAC用于传输普通帧。当eMAC有帧要发送时,pMAC的当前帧被暂停(在帧边界处截断),待eMAC发送完毕后,pMAC再发送剩余部分(称为“碎片”)。
对FPGA数据通路的要求:FPGA实现帧抢占时,数据通路需要具备以下能力:
- 双MAC接口:在FPGA内部,需要例化两个独立的MAC控制状态机(或一个MAC核支持双接口),分别处理eMAC和pMAC的收发。两个MAC共享同一个物理层(PHY),因此需要额外的仲裁逻辑(Mux/Demux)。
- 碎片重组与拆分:发送方向,pMAC需支持将帧拆分为多个碎片(每个碎片最小64字节,包含CRC);接收方向,需将碎片重组为完整帧。这要求FPGA内部维护一个重组缓冲区,并处理碎片丢失或超时的情况。
- 帧校验调整:由于碎片带有独立的CRC,重组后的帧需要重新计算CRC。FPGA需在重组完成后,对完整帧进行CRC校验,并更新FCS字段。
| 功能点 | FPGA资源消耗 | 设计难点 |
|---|---|---|
| eMAC/pMAC状态机 | 约增加30% MAC逻辑资源 | 状态切换延迟需控制在1个时钟周期内 |
| 碎片重组FIFO | 每端口需额外4KB-8KB存储 | 需处理碎片乱序到达(实际不会乱序,但需超时保护) |
| 发送仲裁 | 简单优先级逻辑 | 需保证eMAC请求时,pMAC在64字节边界处立即暂停 |
2.4 IEEE 802.1Qci:流过滤与监管(PSFP)
核心原理:802.1Qci(Per-Stream Filtering and Policing, PSFP)用于对每个数据流(Stream)进行独立的过滤和监管。它定义了三个核心功能:流过滤器(Stream Filter)、流门控(Stream Gate)和流监管器(Stream Meter)。流过滤器根据报文特征(如目的MAC、VLAN ID、优先级)匹配特定流;流门控类似Qbv的门控,但作用于单个流而非队列;流监管器则采用令牌桶算法限制流的速率和突发大小。
对FPGA数据通路的要求:Qci对数据通路的影响主要体现在入口(Ingress)方向。FPGA需要在报文进入队列之前,完成流分类、门控判断和速率监管。具体实现时:
- 流查找表:使用TCAM或哈希表存储流规则(通常支持2K-8K条流)。每条规则包含匹配域、门控ID、监管器ID。
- 门控状态机:每个流门控维护一个状态(开/关)和调度时刻。与Qbv不同,Qci的门控可以独立于全局周期,但通常也基于PTP时间。
- 令牌桶引擎:每个流监管器包含两个令牌桶(CBS和EBS),需在FPGA中实现高速的令牌更新逻辑(通常每时钟周期更新一次)。
2.5 标准协同与FPGA架构综合考量
上述四个标准并非孤立工作,而是形成了一条完整的确定性链路:802.1AS提供全局时间基准 → 802.1Qci在入口限制异常流量 → 802.1Qbv在出口按时间调度 → 802.1Qbu在发送时进一步降低阻塞延迟。FPGA实现时,需将这些功能模块按流水线方式组织:
- 入口流水线:MAC接收 → 时间戳捕获 → 流分类(Qci) → 流门控/监管 → 写入队列。
- 出口流水线:队列读取 → 门控调度(Qbv) → 帧抢占仲裁(Qbu) → MAC发送 → 时间戳捕获。
在资源规划上,建议优先使用FPGA内部的Block RAM存储GCL和流规则表,使用分布式RAM(LUTRAM)实现小规模的门控状态机。对于10Gbps以上的端口速率,需考虑并行处理架构(如4通道64位数据总线),此时时间戳捕获和门控切换逻辑需在多个通道间保持严格同步。