Add documentation for internal F1 interface
This commit is contained in:
@@ -11,6 +11,7 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
# 1. Introduction
|
# 1. Introduction
|
||||||
|
|
||||||
We use OpenAirInterface source code, and it's regular deployment scheme.
|
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.
|
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 |
|
||||||
|
| |
|
||||||
|
+-------------+
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user