>
Home5G NRInterfaces & TransportE1AP (E1)
🔌 Interfaces & TransportAdvanced

E1AP (E1 — CU-CP ↔ CU-UP) in 5G NR

The interface that splits control and user plane inside the CU — bearer context setup.

📚 3GPP-basedTS 38.463TS 38.460

Once you split the gNB-CU into a control-plane part and a user-plane part, those two halves need a way to talk. E1 is that link: a control-only interface inside the CU that lets the gNB-CU-CP tell the gNB-CU-UP to set up, change and tear down the PDCP and user-plane resources for a UE's bearers. It is defined in TS 38.463 (the E1AP protocol) and TS 38.460 (general aspects and principles).

Introduction

E1 is the interface that appears the moment you take the gNB-CU disaggregation one step further than most diagrams show. The familiar picture is CU / DU / RU; the less familiar one is that the CU itself splits into a gNB-CU-CP (control plane) and one or more gNB-CU-UP (user plane). E1 is the wire between those two, and E1AP (TS 38.463) is the application protocol that runs on it, layered over SCTP over IP.

You meet E1 in the connection life-cycle of every UE served by a disaggregated gNB, but you never see it on the air. It carries no RRC, no NAS, and — importantly — no user data. It is a pure control channel whose entire job is to let the control plane, which owns the decisions, drive the user plane, which owns the bearers. When a PDU session is set up, modified during handover, or released, E1 is where the CU-CP tells the CU-UP exactly what user-plane state to build or destroy.

It matters because the CU-CP/CU-UP split is what lets an operator place bulk user-plane processing near the transport edge (low latency, local breakout, slicing) while keeping RRC, security and mobility logic centralised. That separation only works if there is a clean, standardised command channel between the two boxes — and that channel is E1.

Why E1 is needed

💡

In plain words: think of the CU-CP as a restaurant's front-of-house manager and the CU-UP as the kitchen. The manager takes the orders, knows the customers and holds the till (RRC, security, mobility), but never cooks. The kitchen does all the actual food-handling (PDCP-U, SDAP, the data tunnels) but never decides what to make on its own. E1 is the order-ticket rail between the two: every ticket is an instruction — "start this dish, change that one, cancel this table" — and no food ever travels on the rail itself.

Concretely, once you separate the control and user planes inside the CU, three problems appear that E1 solves. First, the CU-CP still terminates RRC and derives all security keys, but it no longer holds the user-plane PDCP entities — so it needs a way to hand the user-plane keys (K_UPenc, K_UPint) to the node that will actually cipher and integrity-protect the data. Second, the CU-CP decides which DRBs and PDU sessions exist and what their QoS is, but the CU-UP is the node that must allocate the PDCP/SDAP entities and the GTP-U tunnel endpoints — so the decision has to be transmitted, not just made. Third, the two ends of every user-plane tunnel (N3 toward the UPF, F1-U toward the DU) must learn each other's transport addresses and TEIDs, and E1 is where those endpoints are exchanged. Without E1 the split simply cannot be assembled into a working data path.

What

A control-only interface between the gNB-CU-CP and the gNB-CU-UP, running E1AP over SCTP. It carries interface-wide configuration and, per UE, the bearer/PDCP resource commands. E1 is a signalling-only interface — no user data ever crosses it.

Why

Once you separate the control and user planes inside the CU, the CP still owns RRC, security and mobility decisions but no longer holds the user-plane PDCP entities. It needs a signalling channel to command the UP to build, reconfigure and release them on demand.

How

Non-UE-associated procedures (GNB-CU-UP E1 SETUP, configuration updates) bring the interface up and keep it in sync; the UE-associated BEARER CONTEXT procedures set up, modify and release a UE's DRBs and PDU sessions inside the CU-UP.

What E1 Is

The NG-RAN disaggregation story starts with the CU/DU/RU split, but it does not stop there. The gNB-CU itself can be broken into two logical nodes that run on different hardware, in different processes, or even at different sites: the gNB-CU-CP hosts RRC and the control-plane part of PDCP (PDCP-C), while the gNB-CU-UP hosts the user-plane part of PDCP (PDCP-U) and SDAP. E1 is the interface between those two nodes, and it carries signalling only — there is deliberately no user data on E1. It is a pure control interface. The protocol that runs on it is E1AP, layered over SCTP over IP.

🎯

Key idea: E1 is entirely internal to the gNB-CU. The user plane it configures actually flows on other interfaces — N3 (UPF ↔ CU-UP) and F1-U (CU-UP ↔ DU) — but the commands that build those tunnels ride on E1. See CU/DU/RU Split.

Because a single CU-CP can control several CU-UPs (for load balancing, slicing, or user-plane locality near the edge), and each CU-UP can be reached by more than one CU-CP, E1 is a many-to-many interface at the deployment level. But every E1 instance is a point-to-point SCTP association between one CU-CP and one CU-UP. Everything below is described from the perspective of that single association.

Where E1 Sits in the Split gNB

In a fully disaggregated gNB you have one gNB-CU-CP, one or more gNB-CU-UP, and one or more gNB-DU. The control plane holds it all together. The CU-CP terminates F1-C to each DU (the control part of F1, carrying F1AP) and E1 to each CU-UP. The CU-UP terminates F1-U to the DU (the GTP-U user-plane tunnel toward the radio) and N3 to the UPF (the GTP-U tunnel toward the 5G core). Northbound, the CU-CP terminates NG-C (NGAP) to the AMF, while user data on NG-U (N3) runs between the CU-UP and the UPF.

AMF (5GC control) gNB-CU-CP RRC, PDCP-C gNB-CU-UP SDAP, PDCP-U gNB-DU RLC, MAC, PHY UPF (5GC) user plane NG-C (NGAP) E1 (E1AP, control only) F1-C F1-U (GTP-U) N3 (GTP-U)
Figure 1. E1 (control-only) sits between CU-CP and CU-UP inside the gNB-CU; the user plane it configures runs on F1-U (to the DU) and N3 (to the UPF).

So the CU-CP never touches user data — but it decides which bearers exist, what their QoS is, and what security keys protect them, then pushes that down to the CU-UP over E1. The CU-UP owns the user-plane PDCP/SDAP entities and the GTP-U tunnel endpoints, but it does nothing on its own initiative for a UE: it acts on E1AP commands. For how the control part of F1 fits, see F1AP.

Who Holds What: CU-CP vs CU-UP

The clean way to understand E1 is to keep straight which node owns which piece of state. The split is not arbitrary — it follows the control/user-plane boundary of PDCP and the location of the radio-side security. The table below is worth memorising.

Function / stategNB-CU-CPgNB-CU-UP
RRC protocolYes — full RRC termination toward the UENo
PDCP for signalling radio bearers (PDCP-C, SRBs)YesNo
PDCP for data radio bearers (PDCP-U, DRBs)NoYes
SDAP (QoS-flow → DRB mapping)NoYes
Security key derivation (K_gNB → sub-keys)Yes — derives all keysNo — receives UP keys only
RRC keys K_RRCenc / K_RRCintHeld and used hereNo
UP keys K_UPenc / K_UPintDerived here, sent over E1Held and used here
F1-C termination (F1AP)Yes (to gNB-DU)No
F1-U GTP-U endpoint (to gNB-DU)NoYes
N3 / NG-U GTP-U endpoint (to UPF)NoYes
NG-C termination (NGAP to AMF)YesNo
Mobility / handover decisionsYesNo (executes reconfig commands)
📘

Why the split lands here: RRC must be co-located with the key derivation and the control-plane PDCP, so both live in the CU-CP. The user-plane data path — SDAP, PDCP-U ciphering/integrity, and the two GTP-U tunnels — is bulk traffic that benefits from being placed close to the transport edge, so it lives in the CU-UP. E1 exists precisely to bridge these two boxes.

Transport: E1AP over SCTP

E1AP is a signalling protocol, so like the other NG-RAN application protocols it runs on SCTP (Stream Control Transmission Protocol) over IP, not on TCP. The choice is deliberate: SCTP gives E1AP reliable, in-order delivery per stream, plus two features TCP lacks and that a control interface leans on heavily.

  • Multi-streaming. A single SCTP association carries multiple independent ordered streams. E1AP places non-UE-associated signalling on one stream and can spread per-UE procedures across others, so a stalled or retransmitting message for one UE does not head-of-line-block another UE's bearer setup.
  • Multi-homing. An SCTP endpoint can bind several IP addresses, so if one transport path fails the association survives on another — useful when CU-CP and CU-UP sit on separate hardware or sites.

E1AP itself does no message-level retransmission — it relies on SCTP for that. The IANA-registered SCTP Payload Protocol Identifier (PPID) for E1AP is 64, and the standardised SCTP destination port for E1 is 38462. (For comparison: NGAP uses port 38412 / PPID 60, XnAP 38422 / PPID 61, F1AP 38472 / PPID 62, X2AP 36422 / PPID 27.) Because E1 carries key material (see below), TS 33.501 requires the transport to be protected — typically IPsec ESP, or DTLS over SCTP.

📘

Layering, top to bottom: E1AP elementary procedures → SCTP (reliable, multi-streamed, multi-homed) → IP → (IPsec/DTLS for security). This is the identical transport stack used by NGAP, XnAP and F1AP; only the application protocol and the SCTP port/PPID differ. See SCTP.

Interface Management: Non-UE-Associated Procedures

Before any UE can be served, the interface itself has to be established and kept in sync. These procedures are global to the E1 instance — they carry no per-UE identity and use the non-UE-associated signalling of E1AP.

E1AP procedureDirectionPurpose
GNB-CU-UP E1 SETUPCU-UP → CU-CPBrings the interface up. The CU-UP advertises its identity (gNB-CU-UP ID), its name, supported PLMNs, slice support (S-NSSAI lists) and CN support (EPC/5GC). The CU-CP answers with GNB-CU-UP E1 SETUP RESPONSE (or ...FAILURE).
GNB-CU-UP CONFIGURATION UPDATECU-UP → CU-CPThe CU-UP reports changed capacity, capabilities, or supported PLMN/slice lists after setup.
GNB-CU-CP CONFIGURATION UPDATECU-CP → CU-UPThe CU-CP updates the CU-UP with changed control-plane configuration (e.g. TNL association info to use).
E1 RELEASECU-CP → CU-UPGracefully removes the E1 interface instance between the two nodes.
RESETeitherRecovers the interface (or a subset of UE contexts) to a known state after a failure.
ERROR INDICATIONeitherReports protocol or logical errors that do not trigger a specific failure message.
🎯

Direction matters: E1 setup is initiated by the CU-UP toward the CU-CP — the opposite direction from the bearer procedures below, which are always CU-CP-initiated. A useful mnemonic: the UP offers itself to the CP at setup; thereafter the CP commands the UP.

Bearer Context Procedures — the Heart of E1

This is what E1 exists to do. When a UE's DRBs need to come into being, change, or go away, the CU-CP drives the CU-UP through the Bearer Context procedures. All three are CU-CP-initiated and UE-associated, and each UE's context is identified on E1 by a pair of identifiers described further below.

E1AP procedurePurpose — what the CU-CP asks the CU-UP to do
BEARER CONTEXT SETUPCreate the user-plane context for a UE: establish the PDCP-U and SDAP entities and allocate the user-plane resources for its PDU sessions and DRBs, install the UP security keys, and return the CU-UP-side tunnel endpoints.
BEARER CONTEXT MODIFICATIONChange an existing context — add or remove DRBs/PDU sessions, remap QoS flows, refresh security keys (on key change / re-keying), or update TNL/TEID endpoints. Used heavily during handover, DU change, and secondary-node changes. Can be initiated by either side (...MODIFICATION REQUIRED lets the CU-UP ask for a change).
BEARER CONTEXT RELEASETear the context down and free the CU-UP's PDCP and transport resources for that UE. The CU-UP can also trigger a release from its side with BEARER CONTEXT RELEASE REQUEST.
BEARER CONTEXT INACTIVITY NOTIFICATIONThe CU-UP tells the CU-CP that user-plane traffic has gone idle, so the CU-CP can move the UE to RRC-INACTIVE and reclaim resources.

In BEARER CONTEXT SETUP REQUEST the CU-CP passes the CU-UP everything it needs to build the user plane for the UE. The most important IEs are:

IE in the requestWhat it conveys
Security InformationThe user-plane security keys and chosen algorithms: K_UPenc (UP ciphering) and K_UPint (UP integrity). PDCP-U in the CU-UP uses these directly — the CU-CP derives them from K_gNB and hands them over.
PDU Session Resource To Setup ListPer PDU session: the PDU Session Type, the S-NSSAI (slice), the Security Indication (whether UP integrity/ciphering is required/preferred), and the core-side NG UL UP TNL Information — the N3 GTP-U address and TEID at the UPF for uplink user data.
DRB To Setup ListPer DRB: the QoS Flow → DRB mappings and per-flow QoS (5QI, ARP, and GBR info where applicable), the PDCP Configuration (SN length, integrity/ciphering, discard timer, reordering), the SDAP Configuration, and the requested F1-U handling.
gNB-CU-CP UE E1AP IDThe CU-CP's identifier for this UE association on E1.

A few of those values have precise encodings worth carrying in your head. The S-NSSAI is an 8-bit SST plus an optional 24-bit SD. The 5QI is an integer in the range 0–255 (standardised values are listed in TS 23.501). The GTP-U TEID in every TNL Information IE is a 32-bit value, and the transport-layer address is an IPv4 and/or IPv6 endpoint. The PDCP SN length in PDCP Configuration is 12 or 18 bits. And both UE E1AP IDs (below) are INTEGER (0..4294967295) — a 32-bit handle.

The CU-UP allocates the resources, builds the PDCP/SDAP entities, and answers with BEARER CONTEXT SETUP RESPONSE, returning the endpoints it now owns:

IE in the responseWhat it conveys
gNB-CU-UP UE E1AP IDThe CU-UP's own identifier for this UE — pairs with the CU-CP's ID to complete the association.
PDU Session Resource Setup ListPer accepted session, the CU-UP's NG DL UP TNL Information — the N3 GTP-U address/TEID the UPF should send downlink data to.
DRB Setup ListUP ParametersPer DRB, the CU-UP's F1-U GTP-U endpoint (transport address + TEID). The CU-CP relays this to the DU over F1AP so the DU side of F1-U points at the right place.
🔐

Security split: RRC/PDCP-C signalling is protected by K_RRCenc/K_RRCint in the CU-CP; the user plane is protected by K_UPenc/K_UPint in the CU-UP. E1 is how those UP keys reach the node that actually runs user-plane PDCP. Because E1 carries key material, the interface itself must be secured with IPsec/DTLS per TS 33.501. See PDCP.

Bearer Context Setup — Message Sequence

The sequence below shows the CU-CP driving the CU-UP to create a UE's user plane. Watch how the two UE E1AP IDs are established (the CU-CP's in the request, the CU-UP's in the response) and how the TNL/TEID endpoints are exchanged in both directions so that both ends of every GTP-U tunnel end up knowing where to send packets.

gNB-CU-CP gNB-CU-UP BEARER CONTEXT SETUP REQUEST gNB-CU-CP UE E1AP ID, Security Info (K_UPenc/K_UPint) PDU Session To Setup (5QI, S-NSSAI, NG UL UP TNL/TEID), DRB To Setup CU-UP builds PDCP-U/SDAP, allocates N3 DL + F1-U endpoints BEARER CONTEXT SETUP RESPONSE gNB-CU-UP UE E1AP ID NG DL UP TNL/TEID, F1-U UP Parameters (TEID) CU-CP relays F1-U endpoint to gNB-DU over F1AP (later: BEARER CONTEXT MODIFICATION / RELEASE reuse both UE E1AP IDs)
Figure 2. Bearer Context Setup over E1: the CU-CP passes UP keys, QoS and the N3 uplink TNL; the CU-UP returns its UE E1AP ID plus the N3 downlink and F1-U endpoints.

Two identifiers deserve a note. The gNB-CU-CP UE E1AP ID is chosen by the CU-CP and appears first, in the request. The gNB-CU-UP UE E1AP ID is chosen by the CU-UP and returned in the response. Both are INTEGER (0..4294967295). From then on, both IDs are quoted in every message for that UE, so each node can index straight into its own context. This mirrors the paired-ID pattern you see on F1 (gNB-CU UE F1AP ID / gNB-DU UE F1AP ID) and on NG (AMF UE NGAP ID / RAN UE NGAP ID).

E1, F1 and NG Together in One PDU-Session Setup

E1 never works alone. A single "set up a PDU session for this UE" request from the core touches three interfaces in a defined order, and the whole point of the exchange is to stitch two GTP-U tunnels end to end: N3 between the UPF and the CU-UP, and F1-U between the CU-UP and the DU. Follow the endpoints and it all clicks into place.

StepInterfaceWhat happens
1NG-C (NGAP)The AMF sends PDU SESSION RESOURCE SETUP REQUEST to the CU-CP, carrying the QoS profile, S-NSSAI, and the UPF's N3 uplink TNL/TEID.
2E1 (E1AP)The CU-CP sends BEARER CONTEXT SETUP REQUEST to the CU-UP: it passes the UP keys, the QoS-flow → DRB mapping, PDCP/SDAP config, and the UPF's N3 uplink TEID. The CU-UP allocates its N3 downlink endpoint and its F1-U endpoint and returns both in the response.
3F1-C (F1AP)The CU-CP sends UE CONTEXT SETUP/MODIFICATION to the DU, handing over the CU-UP's F1-U endpoint. The DU allocates its own F1-U endpoint and returns it.
4E1 (E1AP)The CU-CP sends BEARER CONTEXT MODIFICATION REQUEST to the CU-UP with the DU's F1-U TEID, completing the F1-U tunnel at the CU-UP end.
5NG-C (NGAP)The CU-CP replies to the AMF with PDU SESSION RESOURCE SETUP RESPONSE, giving the UPF the CU-UP's N3 downlink TEID. The N3 tunnel is now complete.

Notice the pattern: E1 is entered twice — once to allocate the CU-UP endpoints, and again to inject the DU's F1-U endpoint after F1 has produced it. That "two-visit" shape is why BEARER CONTEXT MODIFICATION is so central even during a plain first-time setup. By the end, the CU-UP knows where to send uplink N3 packets (to the UPF) and downlink F1-U packets (to the DU), the UPF knows the CU-UP's N3 downlink endpoint, and the DU knows the CU-UP's F1-U endpoint. Every arrow of the user plane has both ends filled in — and none of that user data ever went near E1. Meanwhile the CU-CP has also delivered the RRC reconfiguration to the UE over F1-C/SRB so the radio side of the DRB is set up too.

📘

Handover reuse: During intra-CU handover with a DU change, the same three interfaces cooperate: F1 sets up the new DU's F1-U endpoint, then BEARER CONTEXT MODIFICATION over E1 re-points the CU-UP's F1-U tunnel at the new DU — the N3 side toward the core is untouched, which is exactly why the CU-UP anchor keeps the user plane stable through the handover.

🔀

LTE ↔ NR: there is no E1 in LTE. The LTE eNB was a monolith — RRC, PDCP, RLC, MAC and PHY all in one node — with no standardised control/user-plane split inside it, so there was never an intra-base-station interface to define. E1 (with F1) is a 5G NG-RAN invention that makes the CU-CP/CU-UP disaggregation possible. The closest LTE analogue is only conceptual: the "CUPS" split of the core's S-GW/P-GW into control and user parts (Sxa/Sxb/Sxc, TS 23.214) applied the same idea in the core, whereas E1 applies it inside the radio access node.

Summary

E1 is the interface you reach for whenever the gNB-CU is disaggregated into a control plane and a user plane. Keep three facts in the front of your mind and the rest follows. First, E1 is control-only: E1AP over SCTP, no user data, ever — the data it configures flows on N3 and F1-U. Second, the CU-CP commands, the CU-UP executes: the CU-CP owns RRC, all key derivation and mobility decisions, and drives the CU-UP through the BEARER CONTEXT procedures to build, modify and release PDCP-U/SDAP entities and their GTP-U endpoints. Third, a UE is addressed by a pair of IDsgNB-CU-CP UE E1AP ID + gNB-CU-UP UE E1AP ID, each a 32-bit integer, one allocated by each node.

When you trace a PDU-session setup, remember that E1 is visited twice: once in BEARER CONTEXT SETUP to allocate the CU-UP's N3-downlink and F1-U endpoints, and again in BEARER CONTEXT MODIFICATION to feed back the DU's F1-U TEID after F1 has produced it. Only when both visits complete are both GTP-U tunnels stitched end to end. That "two-visit" shape, and the paired-ID addressing, are the two ideas that make every other E1 exchange — handover, DU change, re-keying, release — easy to read.

Quick Q&A

⚠ Common pitfalls / gotchas

  • Expecting user data on E1. E1 is signalling-only. If you are hunting a throughput or packet-loss problem, the payload is on N3 (CU-UP ↔ UPF) or F1-U (CU-UP ↔ DU), never on E1 — E1 only tells you whether the tunnels were configured correctly.
  • Forgetting the second E1 visit. A bearer context can look "set up" after BEARER CONTEXT SETUP RESPONSE, yet downlink still fails because the DU's F1-U TEID has not been injected via BEARER CONTEXT MODIFICATION. Both visits must complete before the F1-U tunnel is bidirectional.
  • Mismatched or swapped TEIDs/addresses. Uplink-vs-downlink TNL Information is directional. Programming the UPF's N3 uplink endpoint where the downlink one belongs (or vice-versa) yields a context that sets up cleanly but carries no traffic one way.
  • Leaving E1 unsecured. E1 carries K_UPenc/K_UPint. If IPsec/DTLS is not applied (TS 33.501), the user-plane keys traverse the transport in the clear — a real deployment gap, not a theoretical one.
  • Assuming one CU-CP ↔ one CU-UP. The deployment is many-to-many; a CU-UP selection step chooses which CU-UP serves a given UE/slice. Debugging the wrong association is a common time-sink.
Q&A Quick Q&A

Q. Does user data ever flow on E1?

A. No. E1 is control-only — E1AP over SCTP. It configures the user plane (PDCP-U/SDAP in the CU-UP and the N3/F1-U tunnels), but the user data itself flows on N3 (CU-UP ↔ UPF) and F1-U (CU-UP ↔ DU), never on E1.

Q&A Quick Q&A

Q. What does the CU-CP hold versus the CU-UP?

A. The CU-CP holds RRC, PDCP-C (SRBs), all key derivation, the RRC keys, and terminates F1-C and NG-C. The CU-UP holds SDAP, PDCP-U (DRBs), the UP keys, and terminates the F1-U and N3 GTP-U tunnels.

Q&A Quick Q&A

Q. How is a UE identified on E1?

A. By the pair gNB-CU-CP UE E1AP ID + gNB-CU-UP UE E1AP ID (each a 32-bit integer). The CU-CP allocates its ID in BEARER CONTEXT SETUP REQUEST; the CU-UP allocates its own and returns it in the response. Both IDs are then quoted in all later modification/release messages.

Q&A Quick Q&A

Q. Which keys are carried over E1, and why there?

A. The user-plane keys K_UPenc and K_UPint. The CU-CP derives them from K_gNB but the CU-UP runs user-plane PDCP, so the CU-CP hands them over in BEARER CONTEXT SETUP's Security Information. RRC keys stay in the CU-CP. Because key material rides E1, the interface must be protected (IPsec/DTLS, TS 33.501).

Q&A Quick Q&A

Q. Who initiates GNB-CU-UP E1 SETUP versus the bearer procedures?

A. E1 setup is initiated by the CU-UP toward the CU-CP. All three BEARER CONTEXT procedures are initiated by the CU-CP toward the CU-UP (though the CU-UP can request a modification or release).

Q&A Quick Q&A

Q. How do E1, F1 and NG cooperate to build one PDU session?

A. NG-C brings the request and the UPF's N3 uplink TEID; E1 (BEARER CONTEXT SETUP) makes the CU-UP allocate its N3 downlink and F1-U endpoints; F1-C sets up the DU and its F1-U endpoint; E1 (BEARER CONTEXT MODIFICATION) feeds the DU's F1-U TEID back to the CU-UP; NG-C returns the CU-UP's N3 downlink TEID to the AMF. Both GTP-U tunnels are then complete.

Where to go next

E1 only makes sense alongside the split it serves and the interfaces it configures. Follow the user plane out to the DU and see how the F1-U endpoints exchanged over E1 get used, then look at the PDCP entities the CU-UP actually builds.