>
Home5G NRFoundationsCU / DU / RU Split
◍ FoundationsBeginner

gNB Architecture: CU / DU / RU Split in 5G NR

How a gNB is disaggregated into CU-CP, CU-UP, DU and RU — and which protocol layers live where.

📚 3GPP-basedTS 38.401

A gNB looks like one thing to the UE, but inside it doesn't have to be one box. 3GPP lets you split it into a central unit, one or more distributed units, and radios — joined by open interfaces so different vendors' equipment can interoperate. This page explains why the split exists, which protocol layer lands where, what runs on each interface, and how the 3GPP functional-split options and the O-RAN fronthaul fit together.

Introduction

A gNB is a single logical node to the UE — one PCI, one set of SSBs per cell — but 3GPP allows its internals to be disaggregated into a Central Unit (gNB-CU), one or more Distributed Units (gNB-DU), and Radio Units (RU/O-RU), joined by open interfaces. The NG-RAN architecture and the CU/DU boundary are defined in TS 38.401, the F1 interface in the TS 38.47x series, the E1 interface in the TS 38.46x series, and the study of split options in TR 38.801; O-RAN then specifies the DU-to-RU fronthaul.

This split is where "cloud RAN" and "Open RAN" actually live. It appears whenever an operator wants to pool baseband compute, coordinate many cells from one place, or mix vendors — the CU and DU become software on standard servers, and the seams between the pieces become published, testable interfaces. Understanding it means knowing both the layer map (which protocol layer runs in which node) and the interfaces (what protocol runs on each seam).

It matters because the placement of the split is a direct engineering trade-off between centralisation and transport cost. Cut the stack high and the inter-node link is cheap and latency-tolerant but you centralise less; cut it low and you centralise everything but need dedicated, tightly-timed fibre. Every deployment choice on this page is a point on that curve.

Why disaggregate the gNB at all?

💡

In plain words: think of a restaurant chain. You could give every branch its own head chef, menu designers and accountants (a self-contained base station at every tower) — simple, but expensive and impossible to coordinate. Or you centralise the slow, brainy work — menu planning, accounting, purchasing — in one head office (the CU), keep a kitchen that must react in real time at each branch (the DU), and put only the stoves and pans where the food is actually cooked (the RU). Disaggregating the gNB is exactly that: pool the layers that benefit from central coordination, keep the time-critical layers near the antenna.

An old-school base station was a single integrated unit sitting at the tower: baseband, control software and radio all in one cabinet. That works, but it's inflexible and expensive to scale. Every site is a self-contained island, upgrades mean truck rolls, and there's no easy way to coordinate one cell against its neighbours. Disaggregating the gNB lets you centralize the layers that benefit from pooling and coordination, while keeping the time-critical layers close to the antenna.

What

A gNB can be one integrated node, or split into a gNB-CU (Central Unit), one or more gNB-DU (Distributed Units), and the radio unit RU / O-RU.

Why

Centralizing the upper layers in a CU lets you pool compute, coordinate mobility across many cells, and run the CU on cheap general-purpose hardware. Keeping RLC/MAC/scheduling in a nearby DU keeps latency-sensitive work local.

How

The stack is cut at a defined boundary. Everything above the split runs in the CU; everything below runs in the DU; the radio front-end runs in the RU. Open interfaces (F1, E1, fronthaul) join the pieces.

There's a real operational logic here. One CU can sit in a regional data centre and coordinate dozens of DUs spread across a city; because it holds PDCP, it can act as the anchor for dual connectivity and carrier aggregation, and make handovers between its own cells nearly seamless — the UE's security context and header-compression state never move. The DUs, which run the scheduler and must react within a slot (tens to hundreds of microseconds), sit at or near the cell sites where round-trip delay to the radio is tiny. This mirrors the same control/user-plane separation you see in the 5G Core: centralize the coordination, distribute the time-critical work.

The commercial motive is just as strong. Once the CU and DU are software running on standard servers, an operator can buy baseband from one vendor and radios from another, scale user-plane capacity independently of signalling capacity, and roll out features with a software update instead of new hardware. This is the foundation of "cloud RAN" — a gNB that runs as virtualized network functions on a shared compute pool rather than as a monolithic appliance bolted to the tower. Disaggregation is what makes that possible; open interfaces are what stop it from re-locking you into a single vendor.

🎯

The one-line reason: split the gNB so the slow, coordination-heavy layers can be pooled and centralized, while the fast, per-slot layers stay near the radio — and publish the seams as open interfaces so any vendor's box can plug in.

The logical nodes: CU, DU and RU

Disaggregation gives you a small set of named logical nodes. The word logical matters: these are functional roles defined by 3GPP, not necessarily separate boxes. Two of them can be co-located in one server, or spread across a city — the interface between them is the same either way.

gNB-CU

The Central Unit. Hosts the upper, connection-level layers and terminates the interfaces toward the 5G Core (NG) and toward neighbour gNBs (Xn). It can be further split by plane into gNB-CU-CP and gNB-CU-UP.

gNB-DU

The Distributed Unit. Hosts the per-slot layers — segmentation, the scheduler, and the compute-heavy upper physical layer. A DU controls one or more cells, but a given cell belongs to exactly one DU.

RU / O-RU

The Radio Unit. Hosts the lower physical layer and the RF front-end — the FFT/iFFT, beamforming and the actual analogue radio. In O-RAN it is the O-RU, connected to the DU over the open fronthaul.

One integrated gNB, a CU + DU pair, or a full CU + DU + RU chain are all valid. 3GPP formalized the CU/DU split in TS 38.401 (the NG-RAN architecture) and the F1 interface in the TS 38.47x series; O-RAN then added the DU-to-RU fronthaul split on top. A single gNB-CU can serve many gNB-DUs, so the natural shape is a tree: one CU at the top, several DUs beneath it, and one or more RUs hanging off each DU. Because the UE only ever sees the composite gNB — one PCI, one set of SSBs per cell — the internal split is completely invisible over the air. The F1 Setup procedure is what makes a DU's cells go live: on that F1AP exchange the DU declares its served cells (each with its NR Cell Global Identity and PCI) and the CU accepts or rejects them.

⚠️

Anchor fact: a cell belongs to exactly one gNB-DU. One DU can host several cells, but a cell is never shared across DUs. The CU sits above and coordinates across all of its DUs.

Which protocol layer lives where

The heart of the split is a clean cut through the radio protocol stack. Reading the NR user-plane stack from the top: SDAP maps QoS flows to radio bearers, PDCP handles ciphering, integrity and sequence numbering, RLC does segmentation and ARQ, MAC multiplexes logical channels and runs the scheduler and HARQ, and PHY does the coding, modulation and OFDM. The disaggregated gNB slices that stack across the nodes like this:

NodeLayers it hostsCharacter of the work
gNB-CU-CPRRC, control-plane PDCPConnection management, signalling — "slow", once-per-connection
gNB-CU-UPSDAP, user-plane PDCPQoS mapping, ciphering, bearer data — scales with user throughput
gNB-DURLC, MAC, high-PHYScheduling, HARQ, coding/modulation — "fast", once-per-slot
RU / O-RUlow-PHY, RF front-endFFT, beamforming, analogue radio — sample-rate, real-time

So the CU owns the layers that deal with the connection as a whole — radio configuration (RRC), QoS-flow-to-bearer mapping (SDAP), and the ciphering/sequence-number layer (PDCP). The DU owns the layers tied to per-slot timing — segmentation and ARQ (RLC), the scheduler and HARQ (MAC), and the heavy signal processing of the upper physical layer. The split between DU and RU sits inside PHY, dividing high-PHY from low-PHY. The picture below maps each layer onto its node and labels the interface at every seam.

The boundary at PDCP is also a security boundary: because PDCP is where NR ciphering and integrity protection run (using keys derived in the CU-CP), the DU never sees the plaintext of user or signalling data — it forwards already-ciphered PDCP PDUs. And because PDCP lives in the CU, the CU is the natural anchor for split bearers in dual connectivity: it can route a bearer's PDCP PDUs down to two different DUs.

gNB-CU-CP RRC PDCP-C gNB-CU-UP SDAP PDCP-U E1 (E1AP) gNB-DU RLC MAC high-PHY F1-C F1-U O-RU low-PHY RF fronthaul eCPRI 7-2x gNB-CU (CP + UP) DU (per-slot) RU (radio)
Figure 1. Protocol layers mapped across the disaggregated gNB. The CU is split by plane (CU-CP + CU-UP) over E1; the CU connects to the DU over F1 (F1-C to CU-CP, F1-U to CU-UP); the DU connects to the O-RU over the O-RAN 7-2x fronthaul. Upper layers in the CU, per-slot layers in the DU, radio in the RU.
🧠

Memory hook: the CU holds the "slow" layers (once-per-connection decisions), the DU holds the "fast" layers (once-per-slot scheduling), and the RU holds the "raw" layer (real-time samples). The dividing line between CU and DU is above RLC — that is functional-split Option 2.

Splitting the CU again: CU-CP and CU-UP

The CU itself can be divided by plane. The control-plane part and the user-plane part become separate logical nodes so they can scale and be placed independently — the same control/user-plane split (CUPS) philosophy that shaped the 5G Core.

What

gNB-CU-CP hosts RRC and the control-plane part of PDCP. gNB-CU-UP hosts SDAP and the user-plane part of PDCP.

Why

Signalling load and user-data load grow differently. Separating them lets you add user-plane capacity (more CU-UPs, placed near the edge) without touching the control-plane, and vice versa.

How

A single gNB-CU-CP connects to one or more gNB-CU-UPs over the E1 interface, and to the DUs over F1-C. Each CU-UP talks to the DUs over F1-U.

The relationship is flexible: one CU-CP can control several CU-UPs, and one CU-UP can be connected to several CU-CPs, giving operators freedom to place user-plane termination close to where the traffic breaks out. The CU-CP owns all the signalling — it terminates RRC toward the UE and the control-plane interfaces (NG-C to the AMF, Xn-C to neighbours, F1-C to the DUs) — while the CU-UP terminates the user-plane interfaces (NG-U to the UPF, F1-U to the DUs). The CU-CP orchestrates the CU-UP over E1 using E1AP procedures such as Bearer Context Setup, Modification and Release: it tells the CU-UP which bearers to set up, modify or release, and which security keys to apply. This is what lets an operator, for example, put the CU-CP in a regional data centre for coordination while pushing CU-UP instances out to edge sites so that user traffic reaches the internet with the lowest possible latency.

The interfaces: F1, E1 and the fronthaul

Each cut in the gNB is joined by a defined interface. This is where the "open" in Open RAN lives — publish the interface and any vendor's box can plug in.

InterfaceEndpointsProtocol / transportCarries
F1-CgNB-CU-CPgNB-DUF1AP over SCTPControl signalling
F1-UgNB-CU-UPgNB-DUGTP-U over UDP/IP (+ NR-U DL/UL flow control)User data (PDCP PDUs)
E1gNB-CU-CPgNB-CU-UPE1AP over SCTPControl only (bearer mgmt)
Open fronthaulgNB-DUO-RUO-RAN 7-2x over eCPRI (Ethernet)Frequency-domain IQ (U-plane) + C/M/S-plane

Three things are worth stressing. First, F1 comes in two flavours: F1-C carries signalling (the F1AP application protocol, e.g. F1 Setup, UE Context Setup/Modification, DL/UL RRC Message Transfer) over SCTP, and F1-U carries the actual user packets inside GTP-U tunnels — the same tunnelling used on N3 toward the core, so PDCP PDUs simply ride a tunnel from CU-UP to DU, with the NR User Plane Protocol adding per-bearer downlink/uplink flow-control feedback on top. Second, E1 is control only: it is how the CU-CP tells the CU-UP to set up, modify and release bearers via E1AP; no user data ever crosses E1. Third, the DU-to-RU fronthaul is defined by O-RAN's 7-2x split and transported over eCPRI (enhanced CPRI) on Ethernet, carrying frequency-domain IQ samples (U-plane) plus separate control, management and synchronisation planes (C/M/S-plane) rather than the abstract PDUs of F1. Because the fronthaul carries near-real-time samples, it depends on precise time distribution — typically PTP (IEEE 1588) and SyncE — to keep the O-RU and O-DU aligned.

⚠️

Trap: don't say user data flows over E1. E1 is signalling between CU-CP and CU-UP. User data on the CU–DU link rides F1-U (GTP-U); user data toward the core rides NG-U (also GTP-U).

The 3GPP functional-split options 1–8

Before settling on the CU/DU boundary, 3GPP (TR 38.801) studied eight candidate places to cut the stack. Each option splits at a different layer boundary, and the choice is a straight trade-off: split high and the inter-node link carries near-user-rate PDUs with relaxed latency, so ordinary transport over long distances works; split low and the link must carry raw or semi-raw waveform samples at a fixed, enormous, constant rate under microsecond timing, demanding dedicated fibre — but you get maximal centralization and tight multi-cell coordination.

OptionSplit pointFronthaul rateLatency budgetNote
1RRC / PDCPlowrelaxedCP/UP separation only
2PDCP / RLC~ user raterelaxed (ms)the F1 split — adopted for CU/DU
3intra-RLC (high/low)~ user ratemoderatestudied, not standardized
4RLC / MAC~ user ratetightlittle interest
5intra-MAC> user ratetightlittle interest
6MAC / PHYhighertight (~ hundreds μs)small cell / older split
7intra-PHY (high/low)high, ~ constantvery tight (≤ ~100 μs)the O-RAN 7-2x fronthaul
8PHY / RFvery high, constantvery tightclassic CPRI (raw IQ)

Option 2 (above RLC) is the "higher-layer functional split" adopted for the CU/DU boundary and carried by F1. It hits the sweet spot: enough centralization to pool RRC and PDCP, without punishing transport requirements — the link carries PDCP PDUs at roughly the user's data rate with millisecond-class latency tolerance, so it can even run over a routed IP network. Option 7 is an intra-PHY ("low-layer") split; O-RAN's 7-2x variant keeps FFT/iFFT, cyclic-prefix handling and beamforming in the O-RU and sends frequency-domain IQ over the fronthaul, cutting the bit-rate versus fully raw Option 8 (CPRI) while still demanding a very tight, near-constant, low-jitter link. The two adopted seams therefore sit at opposite ends of the stack — Option 2 for CU/DU, Option 7-2x for DU/RU — and everything in between (Options 3–6) was studied but never widely standardized.

The fronthaul-rate column is not a small effect. A fully raw Option 8 (CPRI) link carries time-domain IQ at a rate that is essentially independent of user traffic — it scales with antenna count, bandwidth and sample width, so a many-antenna FR1 carrier can demand tens of Gbit/s of constant fronthaul whether or not anyone is using the cell. Option 7-2x cuts that by keeping the FFT and beamforming in the O-RU and shipping only frequency-domain subcarriers, which is why it — not Option 8 — became the practical open fronthaul. Option 2, by contrast, carries only what the user actually sends, at millisecond latency, which is why it can share ordinary transport with everything else.

higher layers (central) radio (at the site) RRC PDCP high-RLC low-RLC high-MAC low-MAC high-PHY low-PHY RF Option 1 Option 2 Option 3 Option 4 Option 5 Option 6 Option 7 Option 8 F1 / CU-DU FH / DU-RU
Figure 2. The eight 3GPP split options as cut lines through the stack. Split high (Option 1–2) for a relaxed, near-user-rate link; split low (Option 7–8) for maximal centralization but a fast, constant-rate, low-latency fronthaul. NR adopts Option 2 for the CU/DU (F1) seam and O-RAN's 7-2x variant of Option 7 for the DU/RU fronthaul.

O-RAN vs 3GPP, and how it's deployed

It helps to be precise about who defines what. 3GPP defines the gNB, the CU/DU split (Option 2), the F1 and E1 interfaces, and the list of low-layer split options — but it deliberately did not fully standardize a single low-layer split. The O-RAN Alliance filled that gap: it pinned down the 7-2x DU-to-RU fronthaul (giving the O-DU and O-RU), added the RIC (RAN Intelligent Controller) with its A1 and E2 interfaces for programmable, near-real-time control, and profiled the 3GPP interfaces for genuine multi-vendor interoperability. So the mental model is: 3GPP draws the CU/DU/RU boxes and the F1/E1 seams; O-RAN opens the fronthaul seam and adds the intelligence layer on top.

3GPP

Defines the gNB, gNB-CU/gNB-DU, Option-2 CU/DU split, and the F1/E1 interfaces. Lists split Options 1–8 but leaves the low-layer split open.

O-RAN

Pins the 7-2x fronthaul between O-DU and O-RU, adds the Near-RT RIC (E2) and Non-RT RIC (A1), and profiles the interfaces for multi-vendor use.

Result

A fully open chain: any vendor's CU, DU and RU can interoperate, and third-party xApps/rApps can steer the RAN through the RIC.

Deployment is then a placement question, and the split is what makes placement flexible. In a distributed deployment the CU and DU sit together at or near the cell site — lowest fronthaul cost and simplest transport, but no pooling benefit. In a centralized (C-RAN) deployment the CU — and often the DU too — is pulled back into an edge or regional data centre, so many sites share a compute pool and the CU can coordinate mobility and interference across them; the price is a demanding transport network, especially the tight, low-jitter fronthaul that Option 7-2x requires (typically dark fibre or a dedicated transport slice). Because the CU-UP can be split off and pushed toward the edge independently, an operator can even mix these: a centralized CU-CP for coordination, edge CU-UPs for low-latency breakout, and DUs at the sites. The interfaces stay identical whether two functions are in the same server rack or a hundred kilometres apart — that transport-independence is the whole point of standardizing the seams.

🎯

Bottom line: 3GPP gives you the CU/DU boxes and the F1/E1 split; O-RAN opens the fronthaul and adds the RIC. Centralize to pool and coordinate (harder transport); distribute to keep transport cheap (no pooling). The open interfaces let you slide functions along that line without changing the protocol.

⚠ Common pitfalls / gotchas

  • Saying user data crosses E1. E1 is control-only (E1AP, bearer context); user data on the CU–DU link is F1-U (GTP-U).
  • Confusing the two adopted seams. Option 2 (above RLC) is the F1 CU/DU split; Option 7-2x (intra-PHY) is the O-RAN DU/RU fronthaul. They sit at opposite ends of the stack.
  • Forgetting the fronthaul's timing dependence. Low-layer splits need sub-microsecond time alignment (PTP/SyncE); a jitter or sync fault breaks the O-RU even when the link has bandwidth to spare.
  • Assuming a cell can span DUs. A cell belongs to exactly one gNB-DU; only the CU spans multiple DUs.
  • Treating CPRI and eCPRI as interchangeable. Classic CPRI (Option 8) is raw time-domain IQ at a constant, huge rate; eCPRI 7-2x carries frequency-domain IQ over Ethernet at a much lower rate.

Quick Q&A

The CU/DU/RU split is a favourite interview area because it forces you to know both the layer map and the interfaces — and to keep F1, E1 and the fronthaul straight.

Q&A Quick Q&A

Q. Which layers live in the CU, the DU and the RU?

A. CU: RRC, SDAP, PDCP. DU: RLC, MAC, high-PHY. RU: low-PHY and RF. The CU/DU cut is above RLC — functional-split Option 2 — and the DU/RU cut is inside PHY (Option 7-2x).

Q. What runs on F1-C versus F1-U?

A. F1-C carries F1AP signalling over SCTP; F1-U carries user data in GTP-U over UDP/IP (plus NR-U flow control). Both run between the CU and the DU.

Q. What is the E1 interface for, and does user data cross it?

A. E1 carries E1AP control signalling between gNB-CU-CP and gNB-CU-UP — bearer setup, modification and release. No user data ever crosses E1.

Q. Why is Option 2 used for CU/DU rather than a lower split?

A. Option 2 (above RLC) carries PDCP PDUs at roughly the user data rate with relaxed, millisecond-class latency, so it runs over ordinary/routed transport over long distances — while still centralizing RRC/PDCP. Lower splits carry near-constant waveform-rate data under microsecond timing, needing dedicated fibre.

Q. What is the difference between Option 7 and Option 8?

A. Option 8 is the classic PHY/RF split (raw time-domain IQ over CPRI — huge, constant bit-rate). Option 7 is intra-PHY; O-RAN's 7-2x keeps FFT and beamforming in the O-RU and sends frequency-domain IQ over eCPRI, cutting the fronthaul rate while still needing a tight, low-jitter link.

Q. Who defines the fronthaul split — 3GPP or O-RAN?

A. 3GPP lists the low-layer split options but leaves the choice open; O-RAN standardizes the specific 7-2x fronthaul between O-DU and O-RU, and adds the RIC (A1/E2) on top.

Summary

The gNB is one logical node to the UE but can be disaggregated into a gNB-CU (upper layers: RRC, SDAP, PDCP), one or more gNB-DUs (per-slot layers: RLC, MAC, high-PHY), and RU/O-RUs (low-PHY + RF). The rule of thumb: CU holds the "slow" once-per-connection layers, DU the "fast" once-per-slot layers, RU the "raw" real-time samples. A cell belongs to exactly one DU; a CU spans many.

The seams are exact. The CU/DU boundary is functional-split Option 2 (above RLC), carried by F1F1-C is F1AP/SCTP, F1-U is GTP-U. The CU can split by plane into CU-CP and CU-UP, joined by E1 (E1AP, control only). The DU/RU boundary is O-RAN's 7-2x variant of Option 7, carried on eCPRI/Ethernet with PTP/SyncE timing.

Everything is a trade-off between centralisation and transport: split high for cheap, latency-tolerant links with less pooling; split low for maximal centralisation but fast, constant-rate, tightly-timed fibre. 3GPP draws the boxes and the F1/E1 seams; O-RAN opens the fronthaul and adds the RIC. The published interfaces are what let an operator slide functions between the cell site and the data centre — and mix vendors — without changing the protocol.

Where to go next

You've split the gNB into CU, DU and RU, placed every protocol layer, and mapped the interfaces. Next, dig into the protocols that run across those seams, or into the open fronthaul and the RIC:

F1AP & F1 SetupE1AP & bearer contextO-RAN 7-2x fronthaulRIC & xApps