From 3c35bad530ba9f6e117b021dfa967b21fd46aa4e Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Thu, 8 Jan 2026 00:20:51 +0100 Subject: [PATCH] Doc: update RRC re-establishment documentation --- doc/RRC/rrc-dev.md | 55 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 10 deletions(-) diff --git a/doc/RRC/rrc-dev.md b/doc/RRC/rrc-dev.md index 534d55be37..f5c4956c9d 100644 --- a/doc/RRC/rrc-dev.md +++ b/doc/RRC/rrc-dev.md @@ -175,6 +175,12 @@ with the reestablishment procedure; if any check fails, the CU-CP tries to release the old UE at the AMF, and continues with the "normal" connection setup (registration/service request) described above. +The re-establishment flow implements transparent forwarding of CellGroupConfig +per TS 38.473: the CU requests CellGroupConfig from the DU via UE Context +Modification Request with `gNB_DU_Configuration_Query=true`, and the DU responds +with an encoded CellGroupConfig that the CU forwards to the UE without +decode/re-encode cycles. + ```mermaid sequenceDiagram participant ue as UE @@ -185,24 +191,45 @@ sequenceDiagram ue->>du: Msg1/Preamble du->>ue: Msg2/RAR - ue->>du: Msg3 w/ RRC Reestabishment Request (old C-RNTI/PCI) + ue->>du: Msg3 w/ RRC Reestablishment Request (old C-RNTI/PCI) Note over du: DU creates UE context for new RNTI du->>cucp: F1AP Initial UL RRC Msg Tr (RRC Reestab Req, in Msg3) Note over cucp: rrc_handle_RRCReestablishmentRequest() - alt UE known and at the original DU - Note over cucp: rrc_gNB_generate_RRCReestablishment()
SRB1 PDCP reestablishment - cucp->>du: F1AP DL RRC Msg Tr (old gNB-DU-UE ID) - Note over du: Reuse configuration of and delete old UE
(in dl_rrc_message_transfer()) + alt UE known + opt PCI mismatch AND Association ID mismatch + Note over cucp: Detect different DU (assoc_id != du_assoc_id)
Update du_assoc_id, set f1_ue_context_active=false + end + Note over cucp: rrc_gNB_generate_RRCReestablishment()
SRB1 PDCP reestablishment + cucp->>du: F1AP DL RRC Msg Tr (gNB-DU-UE ID) + Note over du: dl_rrc_message_transfer() + alt Old UE found + Note over du: Reuse configuration of and delete old UE + else Old UE not found + Note over du: do nothing + end + Note over du: Set reestablishRLC=true + Note over du: - Store CellGroup in reconfigCellGroup
- Remove spCellConfig from CellGroup du->>ue: RRC Reestablishment ue->>du: RRC Reestablishment Complete du->>cucp: F1AP UL RRC Msg Tr (RRC Reestab Complete) Note over cucp: handle_rrcReestablishmentComplete() - Note over cucp: cuup_notify_reestablishment() - cucp->>cuup: E1AP Bearer Context Modification Req - cucp->>ue: F1AP DL RRC Msg Transfer (RRC Reconfiguration) - cuup->>cucp: E1AP Bearer Context Modification Resp + Note over cucp: rrc_gNB_process_RRCReestablishmentComplete()
Re-establish SRB2 PDCP + Note over cucp: cuup_notify_reestablishment()
Notify CU-UP for DRB re-establishment + cucp->>cuup: E1AP Bearer Context Modification Req + cuup->>cucp: E1AP Bearer Context Modification Resp (asynchronous) + alt on the original DU + Note over cucp: Send UE Context Modification Request
with gNB_DU_Configuration_Query=true + cucp->>du: F1AP UE Context Modification Req + du->>cucp: F1AP UE Context Modification Resp
(CellGroupConfig with spCellConfig and reestablishRLC flags) + else on a different DU + Note over cucp: Detect different DU (!f1_ue_context_active)
Trigger UE Context Setup on new DU + cucp->>du: F1AP UE Context Setup Request
+ du->>cucp: F1AP UE Context Setup Response
(CellGroupConfig with spCellConfig and reestablishRLC flags) + end + Note over cucp: rrc_CU_process_ue_context_setup/modification_response()
Detect re-establishment via rrc_detect_reestablishment()
rrc_gNB_generate_dedicatedRRCReconfiguration()
(with is_reestablishment=true) + cucp->>ue: F1AP DL RRC Msg Transfer (RRC Reconfiguration
with transparent CellGroupConfig) ue->>cucp: F1AP UL RRC Msg Transfer (RRC Reconfiguration Complete) - Note over cucp: handle_rrcReestablishmentComplete() + Note over cucp: handle_rrcReconfigurationComplete() else Fallback* cucp->>amf: NGAP UE Context Release Request Note over cucp: rrc_gNB_generate_RRCSetup() @@ -210,6 +237,14 @@ sequenceDiagram end ``` +Note on re-establishment on different DU: The "UE known and on a different DU" +case is shown in the sequence diagram above. When a UE re-establishes on a +different DU than the original one (detected by comparing `du_assoc_id` at +RRCReestablishmentRequest), the CU updates `du_assoc_id` and sets +`f1_ue_context_active=false`. At RRCReestablishmentComplete, if +`f1_ue_context_active` is false, the CU triggers UE Context Setup on the new +DU per TS 38.401 ยง8.7. + ### Inter-DU Handover (F1) The basic handover (HO) structure is as follows. In order to support various