【问题现象】
VoLTE站点通过后台配置开启RoHC后,进行VoLTE呼叫,通过信令观察到,RoHC在上行已激活,能看到RoHC Compressor信令,但在下行未激活,没有RoHC Decompressor信令。
信令中列表中只有RoHC Compressor信令,而没有RoHC Decompressor信令:

【问题分析】
1、我们通过观察终端侧的MAC调度信令,可以发现下行调度对应的逻辑信道ID为4(LogicalChannel ID=4):

通过查看承载建立信令可以确认到LC  ID  4与默认承载QCI5相对应,即下行语音包未走在语音专有承载上。由于RoHC功能的激活依赖于专有承载QCI1,故当语音包未通过专有承载调度即导致了RoHC未激活。

2、下行数据走哪个承载是由核心网侧决定的, 是通过激活专用承载里面的TFT分类匹配的。 协调核心网共同进行排查,查了PCRF下发的规则中的TFT五元组配置,对照SBC下发的下行语音包,发现有一条默认承载分配策略如下。

这条CCA是创建默认承载时PCRF下发给PGW的。该CCA消息中即下发了覆盖专有承载的PF,逻辑为默认承载匹配所有SBC发出下行报文,而且优先级更高。因此,即便专有承载的TFT是正确的,下行报文在默认承载和专有承载都匹配的情况下,优先走默认承载。所以下行语音依据这条策略走了默认承载,导致下行方向的RoHC呈现异常。
【问题解决】
PCRF上删除此条配置后,下行方向RoHC正常激活,问题解决。可以在信令中看到RoHC Decompressor、RoHC Feedback Compressor、RoHC Feedback Decompressor信令: