2. 以太网基础回顾
在深入探讨TSN(时间敏感网络)之前,必须先厘清传统以太网的设计初衷与运行机制。以太网诞生于1973年,由Robert Metcalfe在Xerox PARC实验室提出,其核心目标是实现“尽力而为”的数据传输——即尽可能快、尽可能公平地共享信道,而非保证某个数据包在确定时间内到达。这种设计哲学在办公自动化时代是合理的,但在工业控制、车载网络、音视频同步等对时间确定性要求极高的场景中,却成为致命短板。本节将系统回顾标准以太网的三大支柱——CSMA/CD介质访问控制、以太网帧结构、交换式以太网的演进,并逐一剖析其在实时性方面的结构性缺陷,为后续理解TSN的时钟同步、流量调度与网络预留机制奠定基础。
2.1 标准以太网的工作原理与CSMA/CD机制
标准以太网(IEEE 802.3)最初设计为共享介质网络,所有节点连接在同一条同轴电缆或集线器(Hub)上,形成一个冲突域。在这种拓扑下,任一时刻只允许一个节点发送数据,否则信号会在介质上叠加产生冲突。为了解决“谁先发送”的问题,以太网采用了CSMA/CD(Carrier Sense Multiple Access with Collision Detection,载波监听多路访问/冲突检测)协议。
核心原理:CSMA/CD的工作流程可以概括为“先听后说、边听边说、冲突停说、随机重发”。具体步骤如下:
- 载波监听(Carrier Sense):节点在发送前持续监听信道,若检测到其他节点正在传输(载波存在),则推迟发送,等待信道空闲。
- 多路访问(Multiple Access):当信道空闲时,任何节点都可以尝试发送,没有中央仲裁器。
- 冲突检测(Collision Detection):节点在发送过程中同时监听信道,若检测到信号电平异常(超过正常幅度或叠加),则判定发生冲突。
- 冲突退避(Backoff):冲突发生后,所有参与冲突的节点立即停止发送,并发送一个32位的“拥堵信号”(Jam Signal)通知。随后,每个节点等待一个随机时间(采用二进制指数退避算法)后重新尝试发送。
二进制指数退避算法的关键参数是:第n次重传的等待时隙数在0到2^n-1之间随机选择,每个时隙为512比特时间(对于10Mbps以太网为51.2微秒)。重传次数上限为16次,超过则向上层报错。
案例拆解:假设一个办公室内有5台PC通过集线器连接,PC-A和PC-B同时检测到信道空闲并开始发送数据。由于信号传播延迟,PC-A在发送后约1.5微秒检测到冲突(信号叠加导致电压异常),立即停止发送并发出拥堵信号。PC-A和PC-B各自进入退避算法:PC-A随机选择等待0个时隙(立即重试),PC-B随机选择等待1个时隙(51.2微秒后重试)。由于PC-A先重发成功,PC-B在监听时发现信道忙,继续等待。整个过程导致PC-A的数据延迟约100微秒,而PC-B的延迟则达到约150微秒——这种不确定性在工业控制中是不可接受的。
2.2 以太网帧结构详解
以太网帧是数据链路层的协议数据单元(PDU),其结构定义了数据如何在介质上封装和传输。理解帧结构是分析网络延迟、计算有效载荷效率、以及理解TSN如何修改帧格式(如添加VLAN标签)的基础。
标准以太网帧(DIX Ethernet II格式)包含以下字段:
| 字段 | 长度(字节) | 功能说明 |
|---|---|---|
| 前导码(Preamble) | 7 | 用于收发时钟同步,交替的10101010比特模式 |
| 帧起始定界符(SFD) | 1 | 固定值10101011,标识帧正式开始 |
| 目的MAC地址 | 6 | 接收方物理地址,支持单播、多播、广播 |
| 源MAC地址 | 6 | 发送方物理地址 |
| 类型/长度(Type/Length) | 2 | Ethernet II中表示上层协议类型(如0x0800为IPv4);IEEE 802.3中表示数据长度 |
| 数据载荷(Payload) | 46~1500 | 上层协议数据,最小46字节以保证帧长≥64字节 |
| 帧校验序列(FCS) | 4 | CRC-32校验码,覆盖目的MAC到数据载荷的所有字段 |
| 帧间隙(IFG) | 12 | 帧与帧之间的最小空闲时间(96比特时间),用于恢复时钟 |
帧结构对实时性的影响:可变帧长(64~1518字节)是传统以太网实时性差的重要结构性原因。在工业控制中,周期性的过程数据通常只有几十字节,但为了满足最小帧长要求,必须填充到46字节,导致有效载荷率极低。更关键的是,当一个大帧(1518字节)正在传输时,一个紧急的小帧必须等待整个大帧传输完成——这种“队头阻塞”效应在共享介质和交换式网络中都会发生。
2.3 交换式以太网的演进与剩余问题
1990年代,交换式以太网(Switched Ethernet)的出现解决了共享介质的冲突问题。交换机(Switch)取代了集线器,每个端口都是一个独立的冲突域,节点可以全双工方式同时发送和接收数据。这一演进带来了三个重要变化:
- 消除冲突:全双工模式下,CSMA/CD不再需要,节点可以随时发送数据,无需监听信道。
- 带宽独占:每个端口独享带宽,不再共享总带宽。例如,一台24口百兆交换机,理论总吞吐量可达24×100Mbps。
- 存储-转发机制:交换机接收完整帧后,检查FCS,再根据目的MAC地址查找转发表,将帧从正确的端口转发出去。这种机制隔离了错误帧,但也引入了“存储-转发延迟”(通常为几微秒到几十微秒)。
然而,交换式以太网并未从根本上解决实时性问题,只是将不确定性从“介质访问”转移到了“交换机内部”:
核心问题:输出端口竞争。当多个输入端口的数据同时需要从同一个输出端口转发时,交换机必须将这些帧排队。如果队列已满,后续帧将被丢弃。这种“尽力而为”的排队策略导致帧的转发延迟取决于队列中等待的帧数——而这一数量是动态变化的,无法预测。
案例拆解:考虑一个8端口工业交换机,端口1连接PLC(可编程逻辑控制器),端口2连接伺服驱动器,端口3连接HMI(人机界面)。在某一时刻,PLC向伺服驱动器发送一个控制帧(100字节),同时HMI向伺服驱动器发送一个配置帧(1500字节)。如果两个帧同时到达交换机的输出端口2,交换机会按照到达顺序或内部优先级(如果有)进行排队。假设HMI的大帧先到达,PLC的控制帧必须等待约120微秒(1500字节在100Mbps下的传输时间)——对于伺服控制周期为1ms的应用,这120微秒的抖动可能影响控制精度。
更严重的是,当网络负载增加时,交换机缓冲区溢出导致丢包,而TCP/IP协议栈的重传机制会进一步增加延迟和抖动。对于UDP等无连接协议,丢包则直接导致数据缺失。
2.4 传统以太网实时性不足的系统性总结
综合以上分析,传统以太网在实时性方面的不足可以归纳为四个结构性缺陷,这些缺陷正是TSN要解决的核心问题:
| 缺陷维度 | 具体表现 | 对工业控制的影响 | TSN对应解决方案 |
|---|---|---|---|
| 介质访问不确定性 | CSMA/CD的冲突退避算法导致发送延迟随机 | 控制周期抖动,无法保证“最坏情况延迟” | IEEE 802.1Qbv时间感知调度,为实时流预留专用发送时隙 |
| 优先级缺失 | 所有帧平等竞争,无QoS区分 | 紧急控制帧可能被普通数据帧阻塞 | IEEE 802.1Qav信用整形器 + 802.1Qbu帧抢占 |
| 时钟不同步 | 各节点独立时钟,无统一时间基准 | 无法实现分布式采样同步、事件时间戳对齐 | IEEE 802.1AS精确时间同步协议() |
| 流量整形缺失 | 突发流量导致交换机排队延迟和丢包 | 网络负载波动时,延迟抖动增大 | IEEE 802.1Qci流过滤与门控 + 802.1Qcc流预留 |
判断方法:在实际项目中,如何判断一个传统以太网是否满足实时性要求?建议从以下三个维度进行量化评估:
- 最大延迟(Worst-Case Latency):在最大负载下,测量从发送端应用层发出数据到接收端应用层收到数据的总时间。如果该时间超过控制周期(如1ms),则网络不满足要求。
- 延迟抖动(Jitter):连续多次测量的延迟标准差。对于运动控制,抖动通常要求小于50微秒;对于同步采样,要求更严格。
- 丢包率(Packet Loss):在持续高负载下,统计丢失帧的比例。工业控制通常要求零丢包,因为一个丢失的帧可能导致整个控制周期失效。