OAI L3与L2接口分析

200 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情

 1. RRC与PDCP接口

1.1 上行数据

        上行数据主要为RRC Setup Complete,ULInformationTransfer等。

5f7f74d14f714e8f95806fa941f80d77.png​编辑

        PDCP在deliver_sdu_srb()中调用itti_alloc_new_message()函数malloc新的消息体,消息ID为NR_RRC_DCCH_DATA_IND;随后调用itti_send_msg_to_task()将消息体insert到TASK_RRC_GNB的queue中。

        RRC在rrc_gnb_task()中调用itti_receive_msg()循环从自身队列里取数据,解析判断为NR_RRC_DCCH_DATA_IND,进行DCCH解码。

1.2 下行数据

        下行数据主要为RRC Release,DLInformationTransfer等。

0dcdbc3099f34582a4cc28becf367ea5.png

        RRC调用nr_rrc_data_req()发送消息,itti_alloc_new_message()函数malloc新的消息体,消息ID为RRC_DCCH_DATA_REQ,itti_send_msg_to_task()将消息体insert到TASK_PDCP_ENB的queue中。

        PDCP在pdcp_run()中调用itti_poll_msg()函数从自身队列里取数据,判断消息ID为RRC_DCCH_DATA_REQ还是RRC_PCCH_DATA_REQ。

2. RRC与MAC接口

2.1 上行数据

        上行数据主要为CCCH信道的RRC Setup request,nr_process_mac_pdu()判断LCID类别为CCCH时,调用RRC模块内的nr_mac_rrc_data_in(),调用时将pdu作为函数入参传到了RRC层。

ad3c1cfff6a94e45a363e137178754d1.png

 2.2 下行数据

        下行数据包括MIB,SIB1,RRC Setup,RRC Reject,这部分数据传递并不以消息或队列形式来进行。

0a064ff53f914aeea9ae0e4ba341e92a.png

        MIB,SIB1数据buffer生成以后,存放于RC.nrrrc[gnb_mod_idP]中。RRC Setup,RRC Reject生成后,存放于ue_context_p->Srb0.Tx_buffer.Payload中,ue_context_p是根节点在RC.nrrrc的红黑树结构。所有数据都是在创建时malloc,并没有提前统一规划一片内存。

ec48f3afe44747b9b28e91745a1ef58b.png

 d342e04351cf49d2b067789b803369f7.png

         MIB获取:MAC在schedule_nr_mib()函数中调用mac_rrc_nr_data_req(),从RC.nrrrc[Mod_idP]->carrier.MIB获取MIB;

        SIB1获取:MAC在schedule_nr_sib1()函数中调用mac_rrc_nr_data_req(),从RC.nrrrc[Mod_idP]->carrier.SIB1获取SIB1;

        RRC Setup或RRC Reject获取:MAC在nr_generate_Msg4()函数中调用mac_rrc_nr_data_req(),从ue_context_p->ue_context.Srb0.Tx_buffer.Payload获取RRC Setup和RRC reject。

8491e71f4287463f998c6a41e0d7663c.png

f56aea5c2ea24727b5cf837d8a9228bf.png

fad9e75bfddd4304a591c9f4ba267c00.png

        RAN_CONTEXT_t RC定义在Nr-uesoftmodem.c,与主函数main在同一文件。        

        mac_rrc_nr_data_req()位于L2_nr_interface.c,该文件处于rrc目录

2.3 下行参数配置

        RRC setup生成以后,RRC 会给MAC、PDCP、RLC发送配置命令,在RRC调用MAC层的rrc_mac_config_req_gNB(),将CellGroupConfig作为入参传给MAC,CellGroupConfig包括drx,bsr,phr等配置信息。同时调用RLC层的nr_rrc_rlc_config_asn1_req()和PDCP层的nr_rrc_pdcp_config_asn1_req()将RNTI和UE上下文的SRB_configList传到对应模块。