这几天一直在调试LTE 空口 PDCP 的安全相关功能,我采用的是软件实现,代码是网上的开源代码。 通过33.401 后面测试样本数据的测试后,我就开始上板测试,
但eNB发下去的 Security Mode Command ,UE就一直回复 Security Mode Failure, 从UE的log 里已经能看到 用的 密钥是一样的,一直找不到原因。 后来另外一位同事,提醒我rbId 使用的对不对。 之前我一直理解那个 rbId就是 SRB1 的 rbId = 1;但后来从36.323 PDCP 的5.7小节有这样的描述:
BEARER (defined asthe radio bearer identifier in [6]. It will use the value RB identity –1 as in[3]);, 参考3 就是 36.331 RRC协议。
这里的关键就是那个 RB identity -1, 我一直理解那是个破折号,起到解释说明的作用,但其实那是一个减号。 (后来想想,SRB2的rbId就为2了,说明那一定不是破折号)
之后把rbId 减1 后输入 EIA 算法就正确了,UE 回复 了 Security Mode Complete! 我还是想抱怨协议编写者,为什么不写成单词 minus 1 呢?
为了,能让更多的人不犯这个错误,我再用英文描述一遍这个问题,便于技术人员搜索。
In LTE ,the AS Security function(SMC) was implemented in PDCP,some crucial issues should