diff --git a/doc/F1-design.md b/doc/F1-design.md index 80417b1ae3e73c20d52f590ecde03fd505fb2284..7e491f53461d37b2827243a3206bd72a004abba0 100644 --- a/doc/F1-design.md +++ b/doc/F1-design.md @@ -11,6 +11,7 @@ </td> </tr> </table> + # 1. Introduction We use OpenAirInterface source code, and it's regular deployment scheme. @@ -208,3 +209,46 @@ DU rlc north output goes to du_pdcp_data_ind() that push a outgoing packet reque CU pdcp south output calls cu_rlc_data_ind() that do the same symetric processing. +# High-level F1-C code structure + +The F1 interface is used internally between CU (mostly RRC) and DU (mostly MAC) +to exchange information. In DL, the CU sends messages as defined by the +callbacks in `mac_rrc_dl.h`, whose implementation is defined in files +`mac_rrc_dl_direct.c` (monolithic) and `mac_rrc_dl_f1ap.c` (for F1AP). In the +monolithic case, the RRC calls directly into the message handler on the DU side +(`mac_rrc_dl_handler.c`). In the F1 case, an ITTI message is sent to the CU +task, sending an ASN.1-encoded F1AP message. The DU side's DU task decodes the +message, and then calls the corresponding handler in `mac_rrc_dl_handler.c`. +Thus, the message flow is the same in both F1 and monolithic cases, with the +difference that F1AP encodes the messages using ASN.1 and sends over a socket. + +In UL, the callbacks defined in `mac_rrc_ul.h` are implemented by +`mac_rrc_ul_direct.c` (monolithic) and `mac_rrc_ul_f1ap.c` (F1). In the direct +case, an ITTI message is directly sent to the RRC task (hence, there is no +dedicated handler). In F1, the DU task receives the ITTI message, encodes using +ASN.1, and sends it over a network socket. The CU task decodes, and sends the +same ITTI message to the RRC task as done directly in the monolithic case. + +``` + +-------------+ + | | + | CU/RRC | + | | + +-------------+ + | ^ + Callback def: mac_rrc_dl.h | | No handler needed: + F1 impl: mac_rrc_dl_f1ap.c | | RRC has ITTI +Monolithic: mac_rrc_dl_direct.c | | + | | + DL | | UL + | | + | | Callback def: mac_rrc_ul.h + Message handler: | | F1 impl: mac_rrc_ul_f1ap.c + mac_rrc_dl_handler.c | | Monolithic: mac_rrc_ul_direct.c + v | + +-------------+ + | | + | DU/MAC | + | | + +-------------+ +```