Internal Use Only▲ 十分钟教你看懂信令 熟记信令流程是我们工作中必不可少的,UE和RNS之间,RNS系统内部几个设备之间的每一次交互都对应着一个信令流程,一般情况下,我们可以通过一个信令流程来确定一次交互的进行,只需要了解信令之间的前后顺序就可以搞定,但是在一些时候(比如确定业务的速率,判断切换的方式,查看失败的原因),可能就需要打开某一条信令,看看该条信令的某些关键字段的值来更准确地判断,但是如何在复杂的信令内容中弄清每一个字符的意义?我们需要对信令的结构有一定的了解。 下面要介绍的,不是针对特定的某一条信令的内容是什么,我们应该看哪些值,而是信令内容的组成结构,从而能够很轻松的在复杂的信令内容中找到关键字。 一.设备中信令的来源 通过后台的信令跟踪工具,我们可以抓到包括Uu口,Iub口,Iu口的信令,这些信令的内容,其实就是单板之间完成一个流程的基础,当我们打开信令跟踪的时候,等于是在前台单板建立了一个任务,让单板将一些显示信令消息上报到后台,便于我们分析流程,通过这个我们就可以知道,即使我们不打开信令跟踪,设备之间也存在信令交互,而且一条信令只是一个流程处理的最终表现形式,在形成这条信令的背后已经涉及了很多模块之间的消息传递。不同的是信令是协议规定的内容,是一个设备对外的官方语言,而模块的消息传递是自己设备内部的实现方式。 二.代表信令的内容字段 信令内容其实就是由一套完整的结构体的内容组成,只是由于一条消息可能通过很多事件触发,从而导致调用的结构体的内容不同。我们知道引用一个结构体内的变量,就是通过点“.”这个符号一层一层向下延伸的。比如 RRC_DL_DCCH_MSG.message.u.radioBearerSetup.u.later_than_r3.criticalExtensions.u.r4.radioBearerSetup_r4.rrc_StateIndicator = TRRC_cell_DCH 可以看出该字段是经过很多个结构体内一层一层的数据结构嵌套下来的,每一次向下加的点就是程序执行一个单步的过程,最后完成一个完整的内容的封装。 我们最关心的,其实就是这一长串结构体中最后那个字段代表的含义。这些字段的大多数都是由简单的单词或者单词的缩写构成的,而字段的值可以直接表示内容,比如RRC的信令,也可以是编码了的,比如UE和CN之间的信令(多数可以通过解码工具来得到具体内容),还可以在协议的“消息及信息元素的功能性描述及内容”找到对应的解释。 对于一个完整的字段来说,经常会出现我们将前面的结构名称都搞清楚了,但是最后一个关ZTE Corporation Copyright Reserved, No Spreading Abroad unless Permitted. Page 1 of 3 Internal Use Only▲ 键字符却是一个字母,常见的如 t,m,u,n,它们是代表什么?就寻找关键字段来说,可能不需要了解了,但是如果要完全了解信令的结构,就继续往下看吧。 一、 代表信令的结构字段 例:RRC_DL_DCCH_MSG.message.t = 15 RRC_DL_DCCH_MSG.message.u.radioBearerSetup.t = 2 这个t究竟是什么意思?下面告诉你 typedef struct EXTERN TRRC_IntraFreqEvent { int t; union { /* t = 1 */ TRRC_Event1a *e1a; /* t = 2 */ TRRC_Event1b *e1b; /* t = 3 */ TRRC_Event1c *e1c; /* t = 4 */ /* t = 5 */ TRRC_Event1e *e1e; /* t = 6 */ TRRC_Event1f *e1f; /* t = 7 */ /* t = 8 */ TRRC_ThresholdUsedFrequency e1h; /* t = 9 */ TRRC_ThresholdUsedFrequency e1i; } u; } TRRC_IntraFreqEvent; typedef struct EXTERN TRRC_UL_TimingAdvanceControl_LCR_r4_enabled { struct { ZTE Corporation Copyright Reserved, No Spreading Abroad unless Permitted. Page 2 of 3 本文来源:https://www.wddqw.com/doc/a9c42b2051ea551810a6f524ccbff121dc36c559.html