Commit Graph
465 Commits
Author SHA1 Message Date
Giulio CarotaandRobert Schmidt 20710c9a91 Implement F1AP RRC Version encoding/decoding in CU&DU
RRC Version is a required IE. Hence, implement the encoder and decoder
for this message. At the DU and CU, read the RRC Version we use and fill
the corresponding field.

Co-authored-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2024-01-18 15:02:00 +01:00
Robert Schmidt e379291ffd F1AP: Bugfix: system information is not required
The F1AP DU F1 Setup Request encoder made the sytem information
required, but it is optional. Handle correctly.
2024-01-18 15:02:00 +01:00
Giulio Carota 5fbd40d149 Remove debug log 2024-01-18 15:02:00 +01:00
Giulio Carota d425f08b16 Add transaction ID for Setup Req&Resp and use it
CU's TransactionID in F1SetupResponse didn't match Setup Request for
some DUs, so implement this correctly and answer with correct
transaction ID.
2024-01-18 15:02:00 +01:00
Giulio Carota 5ee5224a62 Do not require F1 System Information when handling new DU
gNB-DU System Information may be sent after setup to update the system
information, and the RRC can "do without". See next commit.
2024-01-18 15:02:00 +01:00
Robert Schmidt ca41df3863 Merge remote-tracking branch 'origin/multi-f1-e1-fixes' into integration_2023_w51 2023-12-23 11:52:50 +01:00
Robert Schmidt 284116522b F1AP SCTP: don't bind local address
binding the local address for SCTP is pointless, because we don't really
care through which interface SCTP traffic goes. Actually, we even might
want to set the DU remote_n_addr and the the local_n_addr to addresses
in different networks, because we might want to have GTP traffic go
through a different interface than SCTP, as done in the CI test for E1.
2023-12-21 14:22:59 +01:00
Robert Schmidt 61cc505f5c Remove commented code 2023-12-20 15:22:15 +01:00
Robert Schmidt 63f3b123ae Print F1AP UE Release Request message after UL failure
Additionally, initialize the F1AP PDU to zeros
2023-12-20 15:21:41 +01:00
Robert Schmidt 25a290ed0b F1AP: fixup: use correct DRB array index 2023-12-20 15:19:38 +01:00
Laurent THOMAS 63b64d4fce move common code file in common directory
remove several unused files
remove mem_block_t that is never used in a different way than a simple heap buffer
move up IP address type and remove duplications of the same struct declaration
2023-12-19 10:37:10 +01:00
Robert Schmidt 6cb52cf2ef Merge remote-tracking branch 'origin/ci-add-fdd-test' into integration_2023_w49 2023-12-12 05:42:42 +01:00
Robert Schmidt ff758dd029 Correct number of bands assert in Setup Request decoder 2023-12-07 15:07:38 +01:00
Sriharsha Korada ed29252c6d F1AP and E1AP interface changes for QoS
- Implement: Extend the F1 encoding and decoding with Qos
- Implement: E1 decoding for QoS
- Fix: Modify the UE_MODIFICATION_REQUEST_MSG towards DU to contain QoS info based on E1AP context response
- Fix: Modify the E1AP and F1AP message structures
- Fill the Qos configuration to send to MAC
2023-11-30 17:41:12 +01:00
Robert Schmidt 23597c9193 Merge remote-tracking branch 'origin/f1-multiple-du' into integration_2023_w44 2023-11-13 16:23:58 +01:00
Robert Schmidt 610a886da7 Merge remote-tracking branch 'origin/multi-config' into integration_2023_w44 2023-11-12 05:14:36 +01:00
Robert Schmidt 01a095a268 assoc_id only to be stored for DU 2023-11-10 15:29:45 +01:00
Robert Schmidt 6520dbc95a Implement F1 Setup Failure to originate at RRC 2023-11-10 15:29:45 +01:00
Laurent THOMAS f50d5f5a9b make multiple config instead of one implicit global 2023-11-10 10:23:11 +01:00
Robert Schmidt e155080ece Assoc ID CU->DU 2023-11-08 10:18:52 +01:00
Robert Schmidt e5684d217c Assoc ID DU->CU 2023-11-08 10:18:52 +01:00
Robert Schmidt 1af4e81951 Paging: not fully implemented, make clear is dummy 2023-11-08 10:18:52 +01:00
Robert Schmidt 4c2bfe7a1f F1AP: send() functions take assoc_id
To allow to send F1 messages to multiple DUs from the CU, we need to
send these messages via different assoc_id (SCTP association ID,
basically akin to a file descriptor). Currently, the assoc_id is stored
in a context at the F1 module and retrieved in
f1ap_itti_send_sctp_data_req().

To facilitate a later change towards indicating (from the RRC) to which
assoc_id (hence, DU) to send a message, we refactor all
CU_send_*()/DU_send_*() functions to take the assoc_id as a parameter to
which to send messages. In this commit, we then pass the assoc_id from
the context. A later commit changes this (at the CU) to pass the
assoc_id from the message to be sent.
2023-11-08 10:18:52 +01:00
Robert Schmidt 474c3507f1 Allow DUs to reconnect to CU
Previous to this commit, the CU creates an F1 instance and initializes
GTP after a successful connection establishment, and tears the F1
instance down after the DU disconnects. This does not work when trying
to connect multiple DUs, or have them reconnect, as e.g., GTP
re-initialization fails (socket already bound).

This commit makes the CU F1 instance creation and GTP init at CU task
init (only once), and also frees the F1 instance only after the CU task
exits, which is at termination of the application, typically.
2023-11-08 10:18:52 +01:00
Robert Schmidt 05aefb9aaa Correctly read PCI in F1 Setup Response 2023-11-08 10:18:52 +01:00
Robert Schmidt 808b7684a8 F1AP: Remove commented code 2023-11-08 10:18:52 +01:00
Sakthivel Velumani 2bf40fbd17 Pass the NSSAI config via F1 2023-10-31 13:31:33 -04:00
Robert Schmidt b08ce59bc2 Pass assoc_id to RRC and use when sending E1AP messages 2023-10-25 20:22:32 +02:00
Robert Schmidt 453f483c7a bugfix CU: set remote port in GTP-U module 2023-10-25 20:22:31 +02:00
Robert Schmidt aaef0b5e74 F1 UE Ctxt Modif Req: forward Capabilities, ignore other CU2DU
- forward capabilities to update CellGroupConfig
- Do not require measConfig/cG_ConfigInfo to be NULL, but ignore them,
  as it is not implemented
2023-10-08 12:27:38 +02:00
Robert Schmidt 84ffd14a8f Correctly handle UE Ctxt Modif RRC container
The RRC container is to be handled by the msg handler in
mac_rrc_dl_handler.c. Therefore, don't forward the RRC message, but copy
it into the message so the handler can take the action.
2023-10-06 15:56:30 +02:00
Robert Schmidt 21795b3b88 Correctly encode NRCGI in F1 UE Ctxt Modif Req
The two hardcoded PLMNs are never executed: they are in an if(0) block
2023-10-06 15:56:23 +02:00
Robert Schmidt 67eadd4d53 Add newGtpuDeleteOneTunnel() to remove one GTP tunnel 2023-10-02 14:57:03 +02:00
Robert Schmidt 6a076c8490 F1 UE Context Modif Req: Implement DRB Release
- Add necessary fields to F1 message
- Add F1AP encoding/decoding of UE Ctxt Modif Req DRB Release
2023-10-02 14:57:03 +02:00
Robert Schmidt 3f46a71157 SCTP assoc_id: Make it sctp_assoc_t, project-wide 2023-09-22 08:22:15 +02:00
Robert Schmidt f5c90ead7e Free DU at CU on lost connection, store assoc ID
- store the assoc ID of a UE at the RRC
- if F1 receives an SCTP shutdown, it removes the endpoint
- F1 will also send an "F1 Lost Connection" message to the RRC
- it is not yet possible to reconnect a DU after it had already been
  connected at the CU, since the CU F1AP task will try to rebind GTP,
  which fails
2023-09-22 08:22:15 +02:00
Robert Schmidt a23a702acb Setup response handler decoder no SI 2023-09-22 08:18:28 +02:00
Robert Schmidt f670cc6749 Bug fix F1 Setup Response encoder: check if SIs present 2023-09-22 08:18:28 +02:00
Robert Schmidt 84d8f6c272 Add stubs for F1 Setup Request/Response/Failure messages 2023-09-21 12:49:20 +02:00
Robert Schmidt ca374e86eb Refactor F1 Setup Req: sys_info is specific to each cell 2023-09-21 12:49:20 +02:00
Robert Schmidt d21aa79fe0 Refactor F1 Setup Req: MeasurementTimingInformation is part of cell info 2023-09-21 12:49:20 +02:00
Robert Schmidt 85d8916476 Refactor F1 Setup Req: Move radio info into cell 2023-09-21 12:49:20 +02:00
Robert Schmidt 7456cf945d Refactor F1 Setup Req: Reorganize cellIDs_t and rename to f1ap_served_cell_info_t 2023-09-21 12:49:20 +02:00
Robert Schmidt 3dbcadf244 Refactor F1 Setup Req: TAC is optional 2023-09-21 12:49:20 +02:00
Robert Schmidt d8276eed3e F1AP: harmonize f1ap_plmn_t type in all messages 2023-09-21 12:49:20 +02:00
Robert Schmidt fd3ecb29b0 Remove unused stuff in F1 module 2023-09-21 12:49:20 +02:00
Robert Schmidt 4badf66973 Add mutexes to CreateF1Inst(), only save data if provided 2023-09-21 12:49:20 +02:00
Robert Schmidt a241922614 DU: Retry on unsuccessful SCTP connection attempt 2023-09-21 12:49:20 +02:00
Robert Schmidt 632ca15752 Separate F1 Setup Request and network configuration
This branch series implements the usage of the F1 Setup Request
internally at the gNB, even if CU and DU run in the same process. Until
now, the F1 Setup Request contained struct fields to pass IP
configuration to the F1AP module; this information is not necessary in
monolithic, nor should it be relevant when passing the information in
F1 Setup Request.

Therefore, this commit moves all IP connection-related information out
of the F1 Setup Request and into a separate structure instead.  In order
to give the F1AP module the necessary connection information, the
DU_REGISTER_REQ message is introduced that combines the F1 Setup Request
and IP configuration, such that the F1AP module can setup the SCTP
connection and then send the F1 Setup Request message.

In a later commit, there will be a callback for F1 Setup Request at MAC
to simply register the DU at the CU. The monolithic callback will simply
forward the F1 Setup Request The F1AP callback will look up the IP
configuration and create DU_REGISTER_REQ message containing IP
configuration and F1 Setup Request, which is then handled by the F1AP
module. To this end, a separate function in gnb_config.c allows to read
IP information from configuration.
2023-09-21 12:49:20 +02:00
Robert Schmidt 4f7ae5dd2a No double instance book keeping 2023-09-21 12:49:20 +02:00