3. OPUk开销详解:OPUk帧结构、OPUk净荷区域、OPUk映射方式
好,咱们接着聊OPUk。上一节我们把ODUk的路径开销讲透了,这一节轮到OPUk了。说实话,OPUk在OTN里是个挺有意思的角色——它不像ODUk那样管端到端的监控,也不像OTUk那样管段层的纠错。OPUk的核心任务就一个:把客户信号装进净荷里,再告诉对端你是怎么装的。
我刚开始接触OTN时,总觉得OPUk开销就那么几个字节,没啥好讲的。后来在现网里踩了几次坑才明白——越是简单的东西,越容易出问题。尤其是映射方式选错了,或者开销字节配置不对,轻则业务中断,重则整条链路都得重新调测。嗯,咱们今天就把这块掰开揉碎了讲清楚。
3.1 OPUk帧结构
先看整体结构。OPUk帧其实就两大块:OPUk开销和OPUk净荷。它嵌在ODUk帧里,位置在第1到第4行、第17到第3824列。说白了,ODUk帧去掉第1到第16列的ODUk开销,剩下的就是OPUk。
OPUk开销本身只有4行×8列,共32个字节。位置在第1到第4行、第15到第16列。你想想看,整个OPUk帧那么大,开销才占32个字节,是不是很精简?
OPUk开销字节分布(4行×8列):
- 第1行(第15-16列):PSI(Payload Structure Identifier)——净荷结构标识
- 第2行(第15-16列):保留字节(Reserved)
- 第3行(第15-16列):保留字节(Reserved)
- 第4行(第15-16列):JC(Justification Control)——调整控制字节
这里有个细节我得提醒你:PSI字节是复帧结构的。什么意思?就是它一个字节装不下所有信息,得用多个帧来传。PSI采用256复帧,每个帧传一个字节,第0帧传的是PT(Payload Type,净荷类型),第1到第255帧传的是其他映射相关的配置信息。
我个人习惯在调测时,先看PSI的第0帧——PT值。只要PT对了,映射方式基本就对了八成。
3.2 OPUk净荷区域
OPUk净荷区域占了帧的大部分空间:第1到第4行、第17到第3824列。总共4×3808 = 15232个字节。这就是装客户信号的地方。
净荷区域怎么用?取决于你用什么映射方式。但不管怎么映射,净荷区域的边界是固定的。也就是说,客户信号进来后,要么占满整个净荷区(比如CBR映射),要么分块放进去(比如GFP映射),但净荷区的范围不会变。
我记得有一次在实验室里做互通测试,A厂家的设备把客户信号映射到OPU2里,B厂家的设备死活解不出来。查了半天,发现是A厂家把净荷区域的起始列算错了,偏移了一列。你说这种低级错误,要不是亲眼所见,我都不信。所以啊,净荷区域的边界一定要严格按照标准来,别自己搞创新。
小技巧:在分析OPUk净荷时,可以用协议分析仪抓一个完整的OPU帧,然后手动计算第17列到第3824列的数据。如果客户信号是固定的测试码型,比如PRBS,你很快就能验证映射是否正确。
3.3 OPUk映射方式
映射方式,说白了就是怎么把客户信号塞进OPUk净荷里。不同的客户信号,有不同的脾气,得用不同的方式伺候。
常见的映射方式有三种:CBR映射、GFP映射、ATM映射。咱们重点讲前两种,因为现网里用得最多。
3.3.1 CBR映射(恒定比特率映射)
CBR映射,全称Constant Bit Rate映射。它适用于那些速率恒定、对时延敏感的客户信号,比如SDH/SONET、以太网物理层(1000BASE-X等)。
CBR映射的核心思路是:客户信号进来后,按比特流直接填进OPUk净荷里。不打包、不分帧、不加额外开销。听起来简单吧?但有个问题——客户信号的速率和OPUk的速率不一定完全匹配。
举个例子:OPU2的标称速率是约9.995 Gbps,而10GE LAN的速率是10.3125 Gbps。你想想看,客户信号比OPU2快,怎么办?
答案是:通过调整(Justification)来解决。OPUk里设计了调整控制字节(JC)和调整机会字节(PJO/NJO)。当客户信号太快时,就多用几个调整机会字节来装数据;当客户信号太慢时,就少用几个,甚至插入填充字节。
CBR映射的关键参数:
- JC(Justification Control):第4行第15-16列,共2个字节。用于指示调整操作的类型。
- NJO(Negative Justification Opportunity):负调整机会字节,位于第4行第16列(与JC共享位置)。
- PJO(Positive Justification Opportunity):正调整机会字节,位于第4行第17列(净荷区第一列)。
JC字节的值决定了调整方式:
- JC = 0x00:无调整
- JC = 0x01:正调整(PJO用于数据)
- JC = 0x02:负调整(NJO用于数据)
- JC = 0x03:保留
我曾经在某个项目中遇到过一个问题:客户信号是STM-64(约9.953 Gbps),映射到OPU2里。按理说速率很接近,不需要频繁调整。但实际运行时,JC字节频繁跳变,导致接收端时钟恢复困难。查了半天,发现是发送端的时钟源精度不够,产生了微小的频偏。后来换了高精度的时钟源,问题就解决了。所以啊,CBR映射对时钟精度要求很高,别忽视这个细节。
3.3.2 GFP映射(通用成帧规程)
GFP映射,全称Generic Framing Procedure。它适用于那些数据包格式的客户信号,比如以太网MAC帧、IP包、MPLS标签等。
GFP的核心思路是:把客户信号封装成GFP帧,再放到OPUk净荷里。GFP帧有自己的帧头,包含长度指示、帧类型、校验等信息。
GFP有两种模式:
- GFP-F(帧映射):一个客户帧封装成一个GFP帧。适用于帧长固定的信号,比如以太网MAC帧。
- GFP-T(透明映射):多个客户帧封装成一个GFP帧。适用于帧长可变的信号,比如FC(光纤通道)。
GFP帧的结构如下:
+----------------+----------------+----------------+----------------+
| PLI (2字节) | cHEC (2字节) | 净荷头 (可选) | 净荷数据 |
+----------------+----------------+----------------+----------------+
| 净荷FCS (可选) | |
+----------------+------------------------------------------------+
- PLI(Payload Length Indicator):净荷长度指示,2字节。表示GFP帧净荷部分的字节数。
- cHEC(Core Header Error Check):核心头校验,2字节。用于保护PLI字段。
- 净荷头:可选字段,包含类型、优先级等信息。
- 净荷FCS:可选字段,用于校验净荷数据的完整性。
GFP映射的好处是灵活。你可以把多种类型的客户信号混合映射到同一个OPUk里,只要在GFP帧头里标明类型就行。但坏处是开销大——每个GFP帧都要加头尾,带宽利用率不如CBR映射。
注意:GFP映射时,一定要配置好GFP帧的最大长度。如果客户信号太大,超过了OPUk净荷区的容量,就得分片。分片处理不当,会导致接收端重组失败。我曾经见过一个案例,客户把10GE MAC帧直接映射到OPU1里,结果帧长超过净荷区,设备直接丢包。后来改成GFP-F分片映射才解决。
3.3.3 ATM映射
ATM映射,就是把ATM信元(53字节一个)直接放进OPUk净荷里。ATM信元有固定的长度,所以映射起来比较简单。不过现在ATM网络已经很少见了,我就不多讲了。如果你在现网里遇到ATM映射,大概率是老旧设备,建议尽快升级。
3.4 映射方式的选择建议
说了这么多,到底该选哪种映射方式?我个人的经验是:
- 客户信号是恒定比特率的(如SDH、OTUx):用CBR映射。效率高,时延低。
- 客户信号是数据包格式的(如以太网、IP):用GFP映射。灵活,支持多种类型。
- 客户信号是ATM信元:用ATM映射。但说实话,现在很少见了。
还有一个坑我得提醒你:映射方式必须收发一致。发送端用CBR映射,接收端就必须用CBR解映射。如果两端配置不一致,轻则业务不通,重则设备报错甚至重启。我曾经在割接时遇到过这种情况——A端配了GFP映射,B端默认是CBR映射,结果业务全断。后来花了半小时才定位到问题,真是血的教训。
3.5 本章小结
好了,OPUk开销这块咱们就聊到这儿。总结一下:
- OPUk帧由32字节开销和15232字节净荷组成。
- PSI字节采用256复帧结构,第0帧是PT值,用于标识净荷类型。
- CBR映射适用于恒定比特率信号,通过JC/PJO/NJO调整速率。
- GFP映射适用于数据包信号,支持GFP-F和GFP-T两种模式。
- 映射方式必须收发一致,否则业务不通。
下一节咱们讲ODUk的串联连接监控(TCM),那是OTN里最复杂的开销之一。到时候我会结合现网案例,把TCM的配置和故障排查讲清楚。咱们下节见。
公众号:蓝海资料掘金营,微信deep3321