2. 上行帧结构基础:GPON上行帧的时隙划分、T-CONT概念、Alloc-ID与Port-ID的映射关系
好,咱们接着聊GPON的上行方向。下行方向是OLT在广播,所有ONU都在听,这个逻辑相对好理解。但上行方向就反过来了——多个ONU要往同一个OLT发数据,这就涉及到一个核心问题:怎么避免撞车?
说白了,GPON的上行传输就是一个“多对一”的时分复用系统。OLT给每个ONU分配一个时间窗口,轮到你了你才能发。这个时间窗口的划分,就是上行帧结构要解决的事。
2.1 上行帧的时隙划分
GPON的上行帧长度是固定的,125微秒。嗯,这个数字是不是很眼熟?跟下行帧一样。但上行帧内部的结构,跟下行完全不同。
一个上行帧由若干个时隙(Slot)组成。每个时隙可以分配给不同的ONU,也可以分配给同一个ONU的不同业务流。OLT通过BWmap(带宽映射)来告诉每个ONU:你在哪个时隙发、发多长。
我画了一张图,帮你理解上行帧的时隙划分逻辑:
你看,每个上行帧的开头都有一个PLOu(物理层开销),用于帧同步和突发模式恢复。后面跟着若干个数据时隙,最后还有一个DBRu(动态带宽报告)区域。注意,同一个ONU可以在一个帧里出现多次——比如图中的ONU-1就占了时隙1和时隙3,分别对应不同的业务。
2.2 T-CONT:传输容器的概念
接下来聊一个GPON里非常重要的概念——T-CONT(Transmission Container,传输容器)。
你想想看,一个ONU下面可能接了多个用户,每个用户可能有不同的业务:有人在看视频,有人在打游戏,有人在下载文件。这些业务对带宽的需求不一样,对时延的敏感度也不一样。如果所有业务都挤在一个队列里发,那视频卡顿、游戏延迟高的问题就来了。
T-CONT就是用来解决这个问题的。它本质上是一个逻辑上的缓存队列,每个T-CONT有自己的QoS参数。OLT在分配上行带宽时,会根据T-CONT的类型和优先级来调度。
GPON标准定义了5种T-CONT类型:
| 类型 | 名称 | 带宽保障方式 | 典型应用 |
|---|---|---|---|
| Type 1 | 固定带宽 | 固定分配,不竞争 | TDM专线、语音 |
| Type 2 | 保障带宽 | 保证最小带宽,可竞争额外 | 视频会议、VPN |
| Type 3 | 非保障带宽 | 尽力而为,无保证 | 网页浏览、邮件 |
| Type 4 | 尽力而为 | 完全竞争,无优先级 | P2P下载、后台同步 |
| Type 5 | 混合型 | 以上任意组合 | 综合业务接入 |
我个人习惯把T-CONT理解成“业务通道”。每个通道有自己的“车道宽度”(带宽)和“通行规则”(调度策略)。OLT就像交通指挥中心,根据每个通道的优先级和当前拥堵情况,决定放行多少数据。
2.3 Alloc-ID与Port-ID的映射关系
好,现在到了最容易混淆的部分——Alloc-ID和Port-ID到底有什么区别?
我刚开始学GPON的时候,也被这两个ID搞晕过。后来在项目里调了一个多月的ONU注册流程,才彻底搞明白。咱们一步步拆解。
Alloc-ID(Allocation Identifier,分配标识符):
- 用于上行带宽分配
- 每个T-CONT对应一个唯一的Alloc-ID
- OLT在BWmap中通过Alloc-ID指定哪个T-CONT在哪个时隙发送
- 范围:0~65535(16位)
Port-ID(Port Identifier,端口标识符):
- 用于GEM帧的复用/解复用
- 每个GEM端口对应一个唯一的Port-ID
- ONU在上行数据中携带Port-ID,OLT根据Port-ID将数据分发到不同的业务端口
- 范围:0~4095(12位)
说白了,Alloc-ID管的是“什么时候发”,Port-ID管的是“发到哪里去”。一个是时间维度的调度,一个是空间维度的路由。
它们之间的映射关系是这样的:
你看这个图就清楚了。ONU内部有多个T-CONT,每个T-CONT有自己的Alloc-ID。当数据从T-CONT发出去时,会被封装成GEM帧,每个GEM帧头部携带Port-ID。OLT收到后,根据Port-ID把数据送到对应的业务处理模块。
2.4 实际应用中的映射策略
在实际部署中,Alloc-ID和Port-ID的映射策略通常有以下几种:
- 一对一映射:一个T-CONT对应一个GEM端口。简单清晰,适合业务类型单一的场景。
- 一对多映射:一个T-CONT对应多个GEM端口。适合一个高优先级业务通道承载多个同类子业务的场景。
- 多对一映射:多个T-CONT对应同一个GEM端口。这种情况比较少见,一般用于特殊QoS需求。
我个人建议,除非有特殊需求,否则尽量用一对一映射。为什么?因为排查问题的时候,映射关系越简单,定位越快。你想想看,如果一对多映射,一个T-CONT里混了多种业务,一旦出现丢包或延迟,你很难判断是哪个业务出了问题。
好了,关于上行帧结构的基础知识就聊到这里。记住三个核心点:时隙是OLT通过BWmap分配的,T-CONT是业务容器,Alloc-ID和Port-ID分别管调度和路由。把这些理清了,后面的动态带宽分配和DBA算法就好理解了。