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