4、同步以太网(SyncE):ESMC消息格式、QL值传递、物理层时钟恢复
同步以太网,圈里人常叫它SyncE。说实话,这技术刚出来那会儿,我也有点懵——以太网不是异步的吗?怎么还能同步?后来做项目踩过坑才明白,SyncE干的事,说白了就是让以太网物理层也能像SDH那样,把时钟质量一级一级传下去。
今天咱们就掰开揉碎了聊三个核心点:ESMC消息长什么样、QL值怎么在链路上跑、以及物理层时钟恢复到底怎么做的。嗯,这些都是我实际调测中反复折腾过的东西。
4.1 ESMC消息格式
ESMC,全称是Ethernet Synchronization Messaging Channel。它的作用很简单——告诉下游设备:“我这边的时钟质量是啥级别”。
ESMC消息跑在以太网数据链路层,用的是慢协议(Slow Protocols)的机制。我刚开始接触时,老把它和LLDP搞混,后来发现它俩走的通道不一样。
ESMC消息帧结构(关键字段)
| 字段 | 长度 | 说明 |
|---|---|---|
| 目的MAC | 6字节 | 固定为01-80-C2-00-00-02 |
| 源MAC | 6字节 | 本设备端口MAC |
| 慢协议以太类型 | 2字节 | 0x8809 |
| 慢协议子类型 | 1字节 | 0x0A(ESMC专用) |
| ITU-T OUI | 3字节 | 00-19-A7 |
| ITU-T 子类型 | 1字节 | 0x01 |
| 事件标志 | 1字节 | 0x00或0x01 |
| QL TLV | 可变 | 携带时钟质量等级 |
这里有个细节我提醒一下:目的MAC地址是01-80-C2-00-00-02,这是个组播MAC,而且属于Bridge Filtered MAC范围。什么意思?就是普通交换机不会把它转发到其他端口。我曾经在实验室里搭了一台家用交换机,结果ESMC消息死活传不过去——后来才意识到,这玩意儿需要支持协议透传。
个人经验:ESMC消息默认每秒钟发一次。如果时钟源发生变化,会立即发送事件消息(事件标志置1)。我建议你在抓包时重点关注这个标志位,它能帮你快速定位时钟切换的瞬间。
4.2 QL值传递机制
QL,全称Quality Level,就是时钟质量等级。SyncE里QL值用4个bit表示,但实际常用的就那么几个。
你想想看,一个网络里可能有GPS时钟、有铯钟、有普通的晶振,它们的质量天差地别。QL值就是用来告诉下游:“我这个时钟有多靠谱”。
| QL值(二进制) | QL名称 | 说明 |
|---|---|---|
| 0010 | QL-PRC | 主参考时钟,比如GPS |
| 0100 | QL-SSU-A | 二级时钟,比如铯钟 |
| 1000 | QL-SSU-B | 三级时钟 |
| 1011 | QL-SEC | 设备内部时钟,最差 |
| 1111 | QL-DNU | 不可用,别用这个时钟 |
QL值的传递遵循一个基本原则:只能向下游传递相同或更低质量的QL值。举个例子,你收到一个QL-PRC,你只能往下游发QL-PRC或者更差的,绝不能发一个QL-SSU-A冒充高质量。
避坑指南:我曾经遇到过一个案例,某厂商的设备在QL值传递时做了“优化”——它把收到的QL值缓存了30秒才转发。结果呢?上游GPS断了,下游设备30秒内还以为时钟是好的,直接导致全网业务中断。所以,QL值的传递延迟一定要控制在毫秒级。
QL值传递还有个重要机制叫“QL反转”。当设备检测到上游时钟质量下降时,它会主动把本端口的QL值降级,同时向上游发送QL-DNU。这就像在说:“你别给我发时钟了,我不靠谱了”。
4.3 物理层时钟恢复
SyncE的时钟恢复,核心在物理层。它不像PTP那样靠时间戳,而是直接从接收到的比特流里提取时钟。
具体怎么做的?我简单说一下流程:
- CDR(时钟数据恢复):从串行数据流中恢复出时钟信号。这步靠的是PLL(锁相环)。
- 时钟选择:设备可能有多个输入时钟源,根据QL值和优先级选一个最好的。
- 时钟分发:选中的时钟信号经过抖动衰减后,分发给各个业务芯片。
- ESMC生成:根据选中的时钟源QL值,构造ESMC消息发往下游。
这里有个关键点——时钟恢复的带宽。带宽设得太宽,抖动抑制不好;设得太窄,跟踪速度慢。我记得在某个5G前传项目里,客户要求时钟跟踪时间小于1秒,我硬是把PLL带宽从10Hz调到了100Hz才满足要求。
核心逻辑图:SyncE时钟恢复与QL传递
物理层时钟恢复还有一个容易被忽略的点——抖动传递特性。SyncE要求设备本身的抖动不能太大,否则经过多级级联后,时钟质量会急剧恶化。ITU-T G.8262里规定了SyncE设备的抖动容限和抖动传递函数,我建议你调测时一定要拿抖动分析仪测一下。
个人习惯:我在做SyncE互通测试时,会先看两件事:一是ESMC消息能不能正常收发,二是时钟恢复后测一下频率准确度。前者用Wireshark抓包就能看,后者需要频率计。这两步过了,基本就没大问题了。
嗯,关于SyncE的ESMC消息格式、QL值传递和物理层时钟恢复,我就聊这么多。这些内容看起来是标准规定的死东西,但实际工程里每个环节都可能出幺蛾子。多动手、多抓包、多测时钟,慢慢就有感觉了。