Open RAN is not a product — it is a refactor of the radio access network. For thirty years, the bond between a base station's brain and its radio was sealed shut by the same vendor. O-RAN breaks that seal. It splits the radio access network into independently deployable pieces, defines open interfaces between them, and — most importantly — invites software running outside the radio itself to influence what the radio does. This is the architecture that makes that possible.

This guide walks through every node, every interface, and every data flow in the O-RAN architecture as defined by the O-RAN ALLIANCE Working Group specifications (latest release tracked: Rel-18, with selected Rel-19 study items where relevant). Eight modules, each with an animated reference diagram you can study scene by scene. By the end, you should be able to draw the full O-RAN architecture from memory — every box, every line, every spec.

01

Why O-RAN? The Problem It Solves

Vendor lock-in, closed interfaces, monolithic gNB — and the economic case for breaking them apart

The old base station is one closed box. Inside that box, baseband processing, radio control, and RF amplification are tightly coupled — and so is the supplier relationship. If your initial 4G rollout was Ericsson, your 5G upgrade is Ericsson. If you want a new traffic-steering algorithm, you wait for Ericsson's roadmap. If a startup invents a brilliant beam-management model, it cannot run on your network unless Ericsson ports it. This is the structural problem the O-RAN ALLIANCE was created to solve.

O-RAN's answer is three changes layered together: (1) disaggregate the gNB into a Central Unit, a Distributed Unit, and a Radio Unit, with the Lower-Layer Split (7.2x) at PHY-Low so each can come from a different vendor; (2) standardize the interfaces between them (E1, F1, Open Fronthaul) so they actually interoperate; (3) introduce a new node — the RAN Intelligent Controller — that runs vendor-neutral software (xApps and rApps) which can optimise the network in real time using AI/ML.

Traditional RAN vs O-RAN
Traditional RAN · Single Vendor VENDOR A · CLOSED Baseband (BBU) PDCP · RLC · MAC · PHY Radio Control RF Front-End No third-party software · No vendor mix O-RAN · Open & Disaggregated O-CU Vendor X O-DU Vendor Y O-RU Vendor Z E1/F1 Open FH RAN Intelligent Controller (RIC) xApp · TS xApp · QoS-ML xApp · A-MIMO rApp · ES CONFORMANCE-TESTED VENDOR MIX Mavenir Rakuten Fujitsu Samsung Multi-vendor · AI-controlled · Software-defined
3GPP / O-RAN refs
  • O-RAN.WG1.O-RAN-Architecture-Description · v11.0 (Rel-18) — the master architecture doc
  • 3GPP TS 38.401 · NG-RAN architecture — defines CU/DU/RU split baseline
  • O-RAN.WG1.OAD · O-RAN Architecture & Use Cases
Takeaway: O-RAN is not about cheap radios. It is about turning the RAN into a software platform — one where the optimisation loop closes inside an operator-controlled controller, not a vendor's firmware.
02

O-CU / O-DU / O-RU Disaggregation

Splitting the gNB protocol stack across 3 physical nodes — the F1 + E1 + 7.2x picture

The monolithic gNB is sliced into three nodes along well-defined protocol-stack boundaries. The O-CU (Central Unit) holds the upper layers — RRC, SDAP, PDCP — and runs in regional or central datacenters; one O-CU typically aggregates many cells. The O-DU (Distributed Unit) hosts the time-critical layers — RLC, MAC, and the upper PHY (High-PHY) — and lives at the edge to meet HARQ deadlines. The O-RU (Radio Unit) handles the rest of PHY (Low-PHY: IFFT/FFT, beamforming) plus the analog RF chain, and sits at the antenna site.

The split between O-CU and O-DU is the F1 interface (3GPP F1-AP, control plane) plus the E1 interface separating CU-CP and CU-UP for service-based control. Between O-DU and O-RU the split is the Open Fronthaul 7.2x — defined by O-RAN WG4 — which carries CUS-Plane (control/user/sync) IQ samples over eCPRI. Splitting at 7.2x rather than the older CPRI Option-8 reduces fronthaul bandwidth from ~25 Gbps to ~2-3 Gbps per cell — that's what makes commodity fibre and white-box radios viable.

Protocol stack split across O-CU / O-DU / O-RU
O-CU Central · Cloud / regional DC UPPER LAYERS RRC SDAP PDCP CU-CP / CU-UP separated by E1 CU-CP CU-UP F1 F1-C + F1-U O-DU Edge · time-critical · <1ms HARQ L2 + UPPER PHY RLC MAC High-PHY (LDPC/Polar/Scrambling) Schedules every 1 ms (numerology 1) Runs HARQ loop end-to-end on x86 + DPDK / SmartNIC 7.2x eCPRI · M/CUS-Plane O-RU At-mast · radio site LOW PHY + RF Low-PHY: FFT/IFFT Beamforming DAC/ADC · PA · LNA LATENCY BUDGET F1: 10ms acceptable HARQ: <1ms hard FH: ~100µs
3GPP / O-RAN refs
  • 3GPP TS 38.401 — NG-RAN architecture (CU/DU/RU split, F1, E1 baseline)
  • 3GPP TS 38.470 / 38.473 — F1 general / F1AP
  • O-RAN.WG4.CUS — Open Fronthaul CUS-Plane spec (7.2x)
Takeaway: Each split point is a contract. The 7.2x split is the spicy one — it slashes fronthaul bandwidth by ~10×, which is what makes commodity fibre + white-box radios economically possible.
03

Near-RT RIC & xApps

The 10ms–1s intelligent controller that hosts third-party AI applications

The Near-Real-Time RAN Intelligent Controller — Near-RT RIC — is the most disruptive thing in the entire O-RAN architecture. It is a platform that hosts xApps: vendor-neutral applications that can observe the RAN at a sub-second timescale and influence it through control messages. xApps subscribe to E2 reports, run inference (typically ML), and issue control actions back into the gNB. Examples in production today: traffic-steering xApps that shift UEs between cells based on predicted load; QoS-prediction xApps that pre-emptively boost MCS for video flows; massive-MIMO beam-pattern optimizers.

The Near-RT RIC is a Kubernetes-based platform. xApps are containers. They communicate with the platform via the RIC SDK over the E2 interface. The control loop they run in is bounded: 10 ms ≤ loop time < 1 s. Anything faster than 10 ms stays inside the O-DU's L1/L2 firmware (HARQ, scheduling); anything slower than 1 s belongs in the Non-RT RIC. The 10ms–1s window is where most "operator intelligence" actually lives.

Near-RT RIC — xApps + E2 control loop
Near-RT RIC 10 ms ≤ loop < 1 s Kubernetes platform SUBSCRIPTION · CONFLICT · MGMT xApp · Traffic Steering PCI swap on load xApp · QoS-ML Boost MCS for video xApp · MIMO Beam Codebook tuning xApp · Anomaly Det. PRB outliers → alert gNB (O-CU + O-DU) E2 termination point SUBSCRIBE INDICATION CONTROL E2 Control Loop · SUBSCRIBE → INDICATION → CONTROL
O-RAN refs
  • O-RAN.WG3.RICARCH — Near-RT RIC architecture
  • O-RAN.WG3.E2GAP — E2 general aspects and principles
  • O-RAN.WG3.E2SM-KPM — Service Model: Key Performance Measurements
  • O-RAN.WG3.E2SM-RC — Service Model: RAN Control (the action interface)
Takeaway: An xApp without an E2 Service Model is just a container. The Service Model is the contract that says which RAN measurements the xApp can read and which RAN parameters it can change. RC + KPM are the two you'll see in 95% of real deployments.
04

Non-RT RIC & rApps

Slower (>1s) policy + ML training + lifecycle management — lives inside the SMO

If the Near-RT RIC is a real-time controller, the Non-Real-Time RIC is a strategic planner. It lives inside the SMO (Service Management and Orchestration framework) and runs rApps on a >1 s timescale. rApps do three things the Near-RT RIC can't: (1) train ML models on historical data and deploy them down to xApps; (2) issue policies to the Near-RT RIC over the A1 interface (e.g., "for users in cell 42, optimise for latency over throughput"); (3) orchestrate at the network level — energy savings across thousands of cells, slice SLA assurance, network-wide ANR.

The cleanest mental model: rApps train the models, xApps execute them. An rApp watches the network for weeks, builds a "traffic-steering" model, ships it to an xApp via the AI/ML workflow, the xApp runs inference every 100 ms. Policy from the rApp (via A1) tells the xApp when and where to apply the model. Together they form the closed loop that O-RAN calls "AI-native RAN."

Non-RT RIC inside SMO — A1 policy + ML lifecycle
SMO · Service Management & Orchestration OPERATOR DOMAIN Non-RT RIC > 1 s control loop rApp · ML Trainer rApp · Policy rApp · Energy rApp · ANR AI/ML LIFECYCLE TRAIN DEPLOY MONITOR →T OAM · FCAPS · Service Catalogue Fault · Config · Acct · Perf · Security Inventory Topology Performance Data Lake · Historical KPIs PM counters · Traces · ML feature store A1 Policy + Enrichment Near-RT RIC 10 ms - 1 s applies policy + runs models gNB (O-CU + O-DU + O-RU) applies xApp + rApp decisions E2 rApps train models & ship policies · A1 carries them · xApps execute · E2 closes the loop
O-RAN refs
  • O-RAN.WG2.Non-RT-RIC-ARCH — Non-RT RIC functional architecture
  • O-RAN.WG2.A1AP — A1 Application Protocol
  • O-RAN.WG2.AIML — AI/ML workflow description and requirements
Takeaway: Non-RT RIC isn't a separate box you buy — it ships inside the SMO. Most operators are integrating Non-RT RIC alongside their existing OSS, not replacing it.
📺 Full Video Course

O-RAN — Open, Disaggregated, AI-Native RAN

Loved this deep dive? The full 24-lesson cinematic video course takes you from architecture to building your first xApp — with animated walkthroughs of every interface, every node, every spec.

24 video lessons 4 hrs 45 min 3 lessons free Lifetime access O-CU / O-DU / O-RU / RIC / xApps / rApps
Explore the course
Used by engineers at Rakuten, Mavenir, NEC, Fujitsu & more
24 LESSONS
05

E2 Interface Deep Dive

The Near-RT RIC ↔ E2-Node protocol — SCTP transport, Service Models, action types

E2 is the southbound interface from the Near-RT RIC to the E2 Nodes (O-CU, O-DU, eNB). It runs over SCTP on top of IP. The application protocol is E2AP — an ASN.1-encoded message set borrowed from 3GPP F1/E1 conventions. On top of E2AP rides one or more E2 Service Models (E2SM): contracts that define what an xApp can observe and what it can control. The two service models you'll meet in every real deployment are E2SM-KPM (Key Performance Measurements — read-only telemetry) and E2SM-RC (RAN Control — the action interface).

Every xApp follows the same dance: it opens an E2 connection, sends an RIC SUBSCRIPTION REQUEST describing which reports it wants and which actions it will issue, the E2 Node responds with RIC SUBSCRIPTION RESPONSE, then asynchronous RIC INDICATION messages stream in carrying telemetry. When the xApp decides to act, it sends a RIC CONTROL REQUEST with a service-model-defined action body, and the E2 Node either applies the change and replies with RIC CONTROL ACKNOWLEDGE, or refuses with RIC CONTROL FAILURE. The whole loop closes in milliseconds.

E2 message flow — SUBSCRIBE → INDICATE → CONTROL
xApp (Near-RT RIC) E2 Node (O-CU/O-DU) ① RIC SUBSCRIPTION REQUEST RAN Function ID · Event Trigger · Action List (KPM/RC) ② RIC SUBSCRIPTION RESPONSE RIC Request ID · Admitted Actions ③ RIC INDICATION (periodic) KPM report · DRB.UEThpDl · RRU.PrbUsedDl … every 1 s … ML inference ④ RIC CONTROL REQUEST E2SM-RC · Service Style 1 · Action: cell handover ⑤ RIC CONTROL ACKNOWLEDGE RIC Call Process ID · Status: SUCCESS ↻ Loop closes in 10 ms – 1 s · transport: SCTP / IP · encoding: ASN.1 aPER t
O-RAN E2 refs
  • O-RAN.WG3.E2AP — E2 Application Protocol (the ASN.1 message set)
  • O-RAN.WG3.E2SM-KPM — KPM service model (TS 28.552 measurement names)
  • O-RAN.WG3.E2SM-RC — RAN Control service model — the action interface
  • RFC 4960 — SCTP transport
Takeaway: Every xApp ever written follows the SUBSCRIBE → INDICATE → CONTROL pattern. Learn that one shape and the rest is just picking the right service model.
06

A1, O1, and O2 Interfaces

The 3 northbound interfaces from SMO to RAN and Cloud

The SMO doesn't talk to the RAN directly — it talks through three carefully-scoped interfaces. A1 carries policies and enrichment data from the Non-RT RIC down to the Near-RT RIC: think "prefer URLLC over eMBB in cell 42 between 18:00-22:00." It is HTTPS + JSON, RESTful, and intentionally high-level — the Non-RT RIC tells the Near-RT RIC what to optimise for, not how to do it.

O1 is the operations & maintenance interface from the SMO down to all RAN nodes (O-CU, O-DU, O-RU, and even the Near-RT RIC itself). It carries FCAPS — Fault, Configuration, Accounting, Performance, Security — and uses NETCONF + YANG, the same stack the IETF uses for routers and switches. O2 is the interface from the SMO to the O-Cloud — the Kubernetes-based infrastructure that hosts the virtualised RAN functions. O2 handles lifecycle management of the O-Cloud itself: "deploy this O-DU container on this site's compute pool."

A1 + O1 + O2 — SMO's three northbound contracts
SMO Non-RT RIC · FCAPS · Catalog · Inventory A1 HTTPS / JSON policy + enrichment O1 NETCONF / YANG FCAPS to RAN + RIC O2 REST · k8s API O-Cloud lifecycle Near-RT RIC applies A1 policies into xApp behaviour POST /a1-p/policytypes/qos/policies/42 {"scope":{"ueId":"*","cellId":42},...} 200 OK · policy enforced O-CU + O-DU + O-RU FCAPS managed via O1 Fault: PA over-temp Config: SIB1 update Acct: usage record Perf: 15-min KPI dump Sec: cert rotation O-Cloud Kubernetes + CNI · hosts O-DU/O-CU/RIC containers POST /o2dms/.../deploymentmanagers {"oduImage":"oran-odu:v3.1",...} 202 Accepted · pod scheduled A1 — policy, ML enrichment, AI guidance O1 — FCAPS for RAN O2 — O-Cloud lifecycle
O-RAN refs
  • O-RAN.WG2.A1AP / WG2.A1TD — A1 application + type definitions
  • O-RAN.WG10.O1-Interface — O1 NETCONF/YANG specs
  • O-RAN.WG6.O2-GAnP / O2ims — O2 general aspects + Infrastructure Mgmt Service
Takeaway: Three interfaces, three transports, three jobs. A1 = policy (HTTPS/JSON). O1 = ops (NETCONF/YANG). O2 = cloud (REST/k8s). If you see them mixed up in a diagram, the diagram is wrong.
07

Open Fronthaul · 7.2x Split

Where O-DU and O-RU meet — the 4 planes (M/CUS+S) over eCPRI

The Open Fronthaul interface is what makes the "any O-DU with any O-RU" promise real. It defines a single split point between High-PHY (in the O-DU) and Low-PHY (in the O-RU) — known as Lower-Layer Split 7.2x. The split happens after the resource-element mapping and just before the IFFT. By that point, the data has been channel-coded, modulated, and laid out on the resource grid — but it has not yet been turned into time-domain samples. That's the magic: you transport frequency-domain IQ samples over the fibre instead of time-domain samples, which is roughly an order of magnitude less data.

Four planes ride on the fibre: the User Plane carries the IQ data, the Control Plane tells the O-RU which resource elements to transmit in each symbol, the Synchronization Plane distributes PTP (IEEE 1588v2) so the O-RU's RF clock locks to the O-DU's frame timing, and the Management Plane handles config/inventory/alarms over NETCONF. The transport itself is eCPRI (Common Public Radio Interface — enhanced) over Ethernet, typically 10/25/100 Gbps depending on cell capacity and MIMO order.

Open Fronthaul 7.2x — M/CUS+S planes over eCPRI
O-DU at edge site RLC MAC + Scheduler Coding (LDPC/Polar) Modulation + Layer Map Resource-Element Map ↓ 7.2x SPLIT ↓ freq-domain IQ leaves O-DU eCPRI · Ethernet · 10–100 Gbps M-Plane NETCONF/YANG · config, alarms, inventory C-Plane scheduling commands (per slot) U-Plane freq-domain IQ samples · TX/RX S-Plane PTP/SyncE · 1588v2 timing BANDWIDTH COMPARISON CPRI (Option-8): ~25 Gbps per cell · time-domain 7.2x (freq-domain): ~2-3 Gbps O-RU at antenna mast ↑ freq-domain IQ arrives ↑ Precoding Beamforming IFFT CP insertion DAC + PA + Antenna
O-RAN refs
  • O-RAN.WG4.CUS — Control/User/Sync plane spec
  • O-RAN.WG4.MP — Management plane spec
  • O-RAN.WG4.CONF — Conformance test for O-RU interoperability
  • eCPRI Specification V2.0 — Common Public Radio Interface Industry Initiative
Takeaway: "Freq-domain IQ, not time-domain" — that one sentence is what makes 7.2x viable. It cuts fronthaul bandwidth by ~10×, which is the entire economic case for white-box O-RUs.
08

Real-World Deployments

Who is actually running O-RAN in production, and what they've learned

O-RAN is no longer a slideware initiative. As of 2026, multiple Tier-1 operators run live O-RAN cells at meaningful scale. The frontier is led by Rakuten Mobile (Japan), who built a greenfield cloud-native O-RAN network from day one — currently ~50,000 cells, virtually all O-RAN, vendor mix dominated by Symphony, Mavenir, and NEC. DISH (United States) followed a similar greenfield path. 1&1 (Germany) is Europe's first fully O-RAN network, with Rakuten Symphony as the systems integrator.

Brownfield operators take the cautious path: starting with O-RAN trials in rural / low-density sites where the risk is low and the cost savings are highest. Vodafone (UK) committed to 30% O-RAN by 2030. AT&T (US) signed a $14B Ericsson deal that includes Open Fronthaul-compliant cells. Reliance Jio (India) has the largest stated O-RAN ambitions of any operator outside Rakuten — full O-RAN 5G build-out across 100,000+ cells. Across all of these, the consistent learning is: RIC + xApps are the part that delivers the operational savings; the disaggregation alone barely moves CapEx.

O-RAN deployments — selected operators (2026)
Rakuten · JP ~50k cells · greenfield DISH · US greenfield · Mavenir + Samsung AT&T · US Ericsson Open FH 1&1 · DE first full Euro O-RAN Vodafone · UK 30% O-RAN by 2030 Reliance Jio · IN 100k+ cells planned KDDI Vi BT TIM ~150k O-RAN cells live globally 30+ operators with O-RAN trials $50B+ cumulative O-RAN spend by 2030 15-30% CapEx + OpEx savings O-RAN deployment status — May 2026 snapshot
Takeaway: The CapEx win for O-RAN is real but modest (~15-30%). The bigger prize is the OpEx win from automation — and that only materialises if you actually deploy xApps + rApps. Without the RIC layer, O-RAN is just expensive disaggregation.
🎯 Next step

Ready to go from reader to practitioner?

You've just covered the architecture. The full O-RAN video course takes you through real xApp development, RIC integration, conformance testing & live deployment patterns — with cinematic explainer animations on every lesson.

Lifetime access Free preview · 3 lessons O-RAN ALLIANCE Rel-18 aligned
Start the course
RIC

Final Assessment

10 questions · click an answer · then hit Submit for your score

1. O-RAN splits the gNB into which components?
AO-CU, O-DU, O-RU
BeNB, gNB, ng-eNB
CUPF, AMF, SMF
DBBU, RRH only
Correct!
O-RAN splits into O-CU, O-DU, and O-RU.
2. Near-RT RIC operates in which time range?
A10ms to 1 second
B<1ms
C>1 minute
D24 hours
Correct!
Near-RT RIC: 10ms to 1 second.
3. xApps run on which RIC?
ANear-RT RIC
BNon-RT RIC
CBoth
DO-DU
Correct! xApps = Near-RT RIC. rApps = Non-RT RIC.
xApps run on Near-RT RIC. rApps run on Non-RT RIC.
4. E2SM-RC is used for:
ACollecting KPIs
BSending control actions to RAN
CCloud management
DTiming sync
Correct!
E2SM-RC = RAN Control (actions from xApp to RAN).
5. A1 interface connects:
ANon-RT RIC to Near-RT RIC
BNear-RT RIC to O-DU
CO-DU to O-RU
DSMO to O-Cloud
Correct!
A1: Non-RT RIC to Near-RT RIC.
6. Open Fronthaul uses which split?
A7.2x
BOption 2
COption 8
DOption 1
Correct!
7.2x split (low-PHY/high-PHY).
7. O2 interface manages:
AO-Cloud infrastructure (Kubernetes)
BRadio units
CML models
DSubscriber data
Correct!
O2 manages O-Cloud infrastructure.
8. MAC scheduler runs in:
AO-RU
BO-DU
CO-CU
DRIC
Correct! MAC is part of the O-DU.
MAC scheduler runs in the O-DU.
9. Non-RT RIC sends ML models to xApps via:
AA1 interface
BE2 interface
CO1 interface
DOpen Fronthaul
Correct!
ML models flow from Non-RT RIC to Near-RT RIC via A1.
10. Which operator runs the largest fully virtualized O-RAN network?
ARakuten Mobile
BVerizon
CVodafone
DOrange
Correct!
Rakuten Mobile (Japan).

Master O-RAN & Modern Telecom

Start with the flagship O-RAN video course — or explore our full catalog

Browse All Courses
AK
Abhijeet Kumar
Telecom AI Researcher · CafeTele

Comments