第4章 传输汇聚(TC)层核心:GTC帧结构详解
各位同学,今天我们来啃一块硬骨头——GTC帧结构。
说实话,当年我第一次接触GPON协议栈时,最头疼的就是这个帧结构。一堆缩写:PCBd、PSBd、DBRu……看着就头大。但后来我发现,只要搞懂了这三个东西,TC层基本就通了八成。
4.1 什么是GTC帧?
GTC帧,全称GPON Transmission Convergence帧。说白了,它就是GPON系统里数据搬运的“集装箱”。
OLT和ONT之间要通信,总得有个规矩吧?这个规矩就是GTC帧。它规定了:
- 什么时候发数据
- 数据长什么样
- 谁该在什么时候收
我习惯把GTC帧比作一列火车。火车有车头(帧头)和车厢(净荷)。车头告诉车站“我来了”,车厢里装的是真正的货物——用户数据。
核心要点:GTC帧分为下行和上行两个方向,结构完全不同。下行是“广播”,上行是“时分复用”。
4.2 下行帧结构:PSBd + 净荷
下行帧,就是OLT发给所有ONT的数据包。注意,是所有ONT都能收到,但只有匹配的ONT才会处理。
4.2.1 PSBd(Physical Synchronization Block downstream)
PSBd是下行帧的“火车头”。它包含以下关键字段:
| 字段 | 长度(字节) | 说明 |
|---|---|---|
| Psync | 4 | 物理同步序列,固定值0xB6AB31E0 |
| Ident | 4 | 超帧标识,用于帧计数 |
| PLOAMd | 13 | 下行PLOAM消息,用于管理 |
| BIP | 1 | 比特间插奇偶校验 |
| Plend | 4 | 净荷长度指示 |
| US BW Map | N*8 | 上行带宽映射,核心调度信息 |
嗯,这里要注意:Psync是ONT用来锁定下行帧的“钥匙”。ONT上电后第一件事就是找Psync。我在项目中遇到过,有些ONT因为晶振偏差大,Psync老是锁不住,最后发现是硬件设计问题。
4.2.2 下行净荷
PSBd后面跟着的就是净荷。净荷里装的是:
- GEM帧:真正的用户数据,比如你的上网包、IPTV流
- OMCI消息:ONT管理控制接口,用于配置ONT
下行帧长度固定为125微秒。不管有没有数据要发,OLT都会按时发送。这就像广播电台,24小时不停播。
避坑指南:我曾经在调试时发现,如果US BW Map分配不合理,某些ONT会一直拿不到上行时隙。后来我改用了动态带宽分配(DBA),问题才解决。
4.3 上行帧结构:DBRu + 净荷
上行帧是ONT发给OLT的数据。注意,多个ONT共享同一个上行通道,所以必须“排队”发。
4.3.1 DBRu(Dynamic Bandwidth Report upstream)
DBRu是上行帧的“小票”。它告诉OLT:
- 我(ONT)还有多少数据要发
- 我的缓存快满了,快给我分配时隙
DBRu结构很简单:
| 字段 | 长度(bit) | 说明 |
|---|---|---|
| DBRu | 8 | 动态带宽报告,0-255 |
| CRC | 8 | 校验码 |
你想想看,如果ONT不报告自己的缓存状态,OLT就只能“盲猜”该给多少带宽。猜错了,要么浪费带宽,要么丢包。所以DBRu是上行调度的“眼睛”。
4.3.2 上行净荷
上行净荷包含:
- GEM帧:用户上行数据
- PLOAMu:上行PLOAM消息
- 静默段:用于ONT之间的保护间隔
上行帧长度也是125微秒。但注意,每个ONT只能在自己被分配的时隙内发送。这就像学校食堂打饭,每个班级有固定的时间段。
重要提醒:上行帧的静默段不能忽略。如果两个ONT的时隙挨得太近,信号会碰撞。我见过一个案例,就是因为静默段设置太短,导致上行误码率飙升。
4.4 帧结构对比:下行 vs 上行
为了让你看得更清楚,我画了个对比表:
| 特性 | 下行帧 | 上行帧 |
|---|---|---|
| 发送方 | OLT | ONT |
| 接收方 | 所有ONT | OLT |
| 帧头 | PSBd(固定长度) | DBRu(可选) |
| 净荷 | GEM帧 + OMCI | GEM帧 + PLOAMu |
| 调度方式 | 广播 | 时分复用(TDMA) |
| 帧长 | 125微秒 | 125微秒 |
4.5 核心逻辑:GTC帧的“心跳”
为什么帧长固定为125微秒?因为GPON的时钟频率是8kHz,125微秒正好是一个周期。这就像人的心跳,稳定、规律。
我画了一张图,帮你理解整个流程:
从这张图你可以看到:
- OLT通过下行帧广播PSBd和净荷
- 所有ONT都收到下行帧,但只处理属于自己的数据
- ONT通过上行帧(带DBRu)向OLT发送数据
- 每个ONT只能在分配的时隙内发送,避免冲突
4.6 实战中的坑
最后,分享几个我踩过的坑:
- Psync锁定问题:ONT上电后如果长时间锁不住Psync,先检查硬件时钟,再检查软件同步算法。我遇到过因为中断优先级设置不对,导致Psync检测超时。
- US BW Map解析错误:OLT下发的带宽映射,ONT必须严格按照协议解析。字节序、位偏移,一个都不能错。我曾经因为一个位偏移搞反了,导致ONT一直拿不到上行时隙。
- DBRu上报不及时:如果ONT的DBRu上报太慢,OLT会认为它没有数据要发,就不分配带宽。结果就是上行卡死。解决办法是缩短DBRu上报周期。
总结一下:GTC帧结构是GPON协议的基石。下行靠PSBd同步,上行靠DBRu调度。搞懂了这两个帧头,TC层你就掌握了80%。剩下的20%,就是各种细节和异常处理,这些我们后面章节会慢慢展开。
公众号:蓝海资料掘金营,微信deep3321