>
HomeLTE 4GRRC — Radio Resource ControlHandover Overview
🗂️ RRC — Radio Resource ControlIntermediate

Handover Overview (how mobility is triggered) in LTE 4G

The full mobility chain: measConfig → measurement → MeasurementReport → HO decision → RRCConnectionReconfiguration with mobilityControlInfo.

📚 3GPP-basedTS 36.300TS 36.331

In RRC_CONNECTED an LTE UE never picks its own cell. Mobility is network-controlled but UE-assisted: the source eNB tells the UE what to measure, the UE reports, and the eNB alone decides when to move it and where. Every connected-mode handover, no matter the flavour, runs down one chain — configure measurements, receive a MeasurementReport, decide, prepare the target, then send a handover command carrying mobilityControlInfo. This page walks that spine end to end and shows how the detailed X2 and S1 flows hang off it, following TS 36.300 (overall procedure) and TS 36.331 (RRC).

Introduction

A handover is the procedure that moves a UE in RRC_CONNECTED from one cell (the source) to another (the target) without dropping the RRC connection or the user's data session. It is the connected-mode counterpart of idle-mode cell reselection: in idle the UE chooses for itself, but the moment it has an active connection the network takes the wheel, because only the network knows load, neighbour relations, and bearer state.

Handover happens continuously in a live network — every time a moving user crosses a cell edge, every time a cell sheds load, every time coverage on the serving carrier fades and a better neighbour exists. It is one of the most-executed and most-scrutinised procedures in the RAN, because a handover that fires too late, too early, or to the wrong cell shows up directly as a dropped call or a stall.

The value of learning it as a single spine is that every variant — intra-eNB, X2, S1, inter-frequency, inter-RAT — is the same chain of events with a different node preparing the target. Master the spine and you can debug any of them by asking one question at each link: did this step happen, and did it carry the right IEs?

Why handover is needed

💡

In plain words: a handover is like a relay race baton pass. The runner (the UE) never stops carrying the baton (your data session), but the baton is handed from one runner to the next (source cell to target cell) inside a short, carefully choreographed exchange zone. Fumble the timing — pass too early, too late, or to the wrong runner — and the baton drops (the call fails). Everything in handover design is about making that pass clean.

Concretely, the UE moves and radio quality on the serving cell fades while a neighbour improves. If nothing acted, the serving link would eventually degrade into radio link failure (RLF) and the connection would drop. Handover steers the UE onto the better cell before that happens, keeping the RRC connection alive and user-plane data flowing across the move. It also serves non-coverage goals: load balancing (event A4) pushes users off a congested cell, and inter-RAT handover (B1/B2) moves a UE to UTRAN/GERAN when LTE coverage runs out.

What

A network-controlled procedure that moves a connected UE from a source cell to a target cell while keeping the RRC connection alive and preserving user-plane continuity as far as the radio allows.

Why

The UE moves, radio quality on the serving cell fades, and a neighbour becomes better. Without handover the link would eventually drop into radio link failure; the network steers the UE across before that happens.

How

The source eNB installs measurements, the UE reports an event, the source decides and prepares the target over X2 or S1, then delivers an RRCConnectionReconfiguration carrying mobilityControlInfo — the handover command.

The mobility spine

Learn one chain and you understand every LTE handover variant. The steps repeat whether the target is another cell on the same eNB, a neighbour eNB reachable over X2, or one reachable only through the core over S1. What changes between variants is which node prepares the target and which interface carries that preparation — never the shape of the chain itself.

The links in the chain, in order:

  1. Configure measurements. The source eNB sends an RRCConnectionReconfiguration carrying measConfig. A measObject (the carrier/frequency to watch) and a reportConfig (the event and reporting rules) are bound together by a measId. See Measurements & Events for the full IE tree.
  2. UE measures and reports. The UE filters RSRP/RSRQ on the serving cell and configured neighbours. When an event condition holds for the configured timeToTrigger, the UE sends a MeasurementReport carrying measResults — the measId plus RSRP/RSRQ per physCellId for the serving cell and the best neighbours.
  3. Decide. The source eNB feeds the report into its own radio-resource-management algorithm and selects a target cell. This step is entirely internal and produces no over-the-air message.
  4. Prepare. The source performs handover preparation with the target — directly over the X2 interface, or through the MME over S1 when no X2 exists. The target admits the UE, allocates a C-RNTI and a dedicated preamble, and returns the RRC configuration the UE must apply.
  5. Command & execute. The source sends the UE an RRCConnectionReconfiguration containing mobilityControlInfo. The UE detaches from the source, performs RACH to the target, and confirms with RRCConnectionReconfigurationComplete sent to the target.
🎯

The spine: measConfigMeasurementReport → HO decision → HO preparation → RRCConnectionReconfiguration(mobilityControlInfo) → RACH to target → RRCConnectionReconfigurationComplete → path switch. Memorise this order; every variant is a decoration on it.

What triggers a handover

Nothing inside the UE spontaneously starts a handover. The ignition is a MeasurementReport that satisfies a report configuration the source eNB installed earlier through measConfig. The classic trigger is event A3: a neighbour cell becomes an offset better than the serving cell, sustained for the configured timeToTrigger and beyond a hysteresis margin, so momentary fades do not cause needless handovers. The A3 entering condition is Mn + Ofn + Ocn − Hys > Ms + Ofs + Ocs + Off, where Mn/Ms are the measured neighbour/serving results and the offsets come from the frequency and cell-individual configuration.

Mn + Ofn + OcnHys > Ms + Ofs + Ocs + Off  (A3 entering, sustained for timeToTrigger)
EventFires whenTypical use
A1Serving becomes better than a thresholdStop inter-frequency / gap measurements
A2Serving becomes worse than a thresholdStart measuring / coverage handover trigger
A3Neighbour becomes an offset better than servingIntra- and inter-frequency handover
A4Neighbour becomes better than a thresholdLoad-balancing handover
A5Serving worse than thr1 and neighbour better than thr2Coverage-edge handover
B1 / B2Inter-RAT neighbour crosses a thresholdHandover to UTRAN / GERAN / other RAT

The report is the ignition and the source eNB is the driver: it configured the event via reportConfigEUTRA (or reportConfigInterRAT for B-events), it receives the report on SRB1, and it alone runs the decision. The a3-Offset, hysteresis and timeToTrigger values it chooses are the levers that trade handover promptness against ping-pong resistance. The exact field tree lives on the Measurements & Events page; here it is enough to know the report is what wakes the whole chain.

✅ Debugging steps

  • Confirm the UE was configured with a measConfig containing a reportConfig for the intended event, bound by a measId to the right measObject (frequency).
  • Check the MeasurementReport actually left the UE on SRB1 with the expected measId and neighbour physCellId/RSRP.
  • Verify the A3 entering condition mathematically against the logged RSRP values and the configured a3-Offset/hysteresis.
  • Confirm timeToTrigger is short enough that a fast mover does not leave the cell before the report fires (too-late handover).

⚠ Common causes of failure

  • Neighbour missing from the measObject neighbour list or the ANR table, so the UE never measures it and no report fires.
  • a3-Offset/hysteresis too high, so a genuinely better neighbour never crosses the entering condition (too-late or missing handover).
  • timeToTrigger too long for the UE speed — the UE reaches RLF before the report is sent.
  • Inter-frequency neighbour with no measurement gap configured, so it is never measurable in the first place.

Classifying the handover

The spine is constant, but LTE handovers are classified along several independent axes at once. A single handover is, for example, an inter-eNB, X2-based, intra-frequency handover. Knowing which axis you are on tells you which interface carries preparation and whether the core is involved.

AxisVariantsWhat distinguishes them
Node scopeIntra-eNB vs inter-eNBWhether source and target cells sit on the same eNB (no inter-node signalling) or on different eNBs (X2 or S1 preparation needed).
Preparation interfaceX2-based vs S1-basedX2 when a direct interface exists between the eNBs — the default; S1 (through the MME) when no X2 does. See the X2 Handover and S1 Handover pages.
Frequency relationIntra-frequency vs inter-frequencyWhether the target is on the same EARFCN as the serving cell or a different one (inter-frequency often needs measurement gaps to measure at all).
Radio technologyIntra-RAT vs inter-RATHandover within E-UTRAN vs handover to UTRAN/GERAN/other RAT, triggered by B-events and using a different target-system container.
Core relocationIntra-MME vs inter-MME (and intra/inter-S-GW)Whether the serving MME/S-GW stays the same. X2 handover is always intra-MME; S1 handover can relocate the MME and/or S-GW.

The two rows that matter most for the signalling are node scope and preparation interface. In an intra-eNB handover the eNB simply reconfigures the UE onto another of its own cells — no X2, no S1, no path switch. In an X2-based inter-eNB handover the source and target eNBs talk directly with X2AP HANDOVER REQUEST / HANDOVER REQUEST ACKNOWLEDGE, and the core is touched only at the very end via a Path Switch Request. In an S1-based handover, used when no X2 exists between the eNBs, the MME is involved from the start and relays preparation with S1AP Handover Required / Handover Command, driving the bearer switch itself. Both inter-eNB flavours are broken out in full on their own pages; this overview is the map that ties them together.

Three phases: preparation, execution, completion

However you classify it, an inter-eNB handover always factors into three phases. Keeping them separate is the cleanest way to reason about what has and has not yet happened at any point in the flow.

  • Preparation. Everything before the UE is told to move. The source decides, then negotiates with the target: the target performs admission control, reserves radio resources, allocates the C-RNTI and dedicated RACH preamble, and hands back the ready-made RRCConnectionReconfiguration (as a transparent container). No user-plane break yet — the UE is still happily on the source.
  • Execution. The window in which the UE actually moves. The source delivers the handover command over the air, transfers PDCP status and forwards buffered data for lossless bearers, and the UE detaches, performs RACH to the target, and confirms. This is where the radio-link interruption lives.
  • Completion. Everything after the UE is on the target. The target switches the core user-plane path (the path switch) so downlink data flows to the new eNB, and the source is told to release the UE context and free its resources.

The diagram below shows the high-level flow across the actors, coloured by phase. Every arrow is labelled with the message and the IEs that matter. This is intra-eNB or X2-based inter-eNB at a glance; the inter-node detail (X2AP or S1AP messages, SN Status Transfer, GTP-U forwarding, path switch) is on the linked pages.

UE Source eNB Target eNB MME / S-GW Prep RRCConnectionReconfiguration (measConfig) MeasurementReport (event A3, measResults) HO decision HO preparation (X2 / S1) admission control HO ack (target RRC config) Exec RRCConnectionReconfiguration (mobilityControlInfo, t304) SN Status Transfer + data forwarding detach + T304 RACH (dedicated preamble) RAR + UL grant RRCConnectionReconfigurationComplete (stops T304) Compl Path Switch UE Context Release → source frees resources
Figure 1. LTE handover across UE, source eNB, target eNB and core, split into preparation, execution and completion phases.

Inside the handover command

The single most important message on the spine is the RRCConnectionReconfiguration that carries mobilityControlInfo. This is what people mean when they say "handover command." Its presence is exactly what turns an ordinary reconfiguration into a handover — per TS 36.331, a reconfiguration containing mobilityControlInfo instructs the UE to perform a synchronised reconfiguration (a handover) to the cell named inside it. The fields you must know:

IE / fieldMeaning
targetPhysCellIdThe PCI of the target cell the UE must retune to and synchronise with.
carrierFreqThe target's downlink (and, for FDD, uplink) EARFCN — only present for an inter-frequency handover; omitted when the target is on the serving frequency.
newUE-IdentityThe C-RNTI the UE will adopt in the target cell, allocated by the target during admission control.
rach-ConfigDedicatedA dedicated preamble (ra-PreambleIndex) and PRACH mask reserved for contention-free RACH at the target — no contention resolution, so access is fast and deterministic. Absent means the UE falls back to contention-based RACH.
t304The handover supervision timer. It starts the instant the UE applies the command and stops on successful access to the target. If it expires first, the handover has failed.
radioResourceConfigCommonThe target cell's common configuration (PRACH, PUSCH/PUCCH, etc.) so the UE can access it before it has any dedicated setup there.

Alongside mobilityControlInfo, the same reconfiguration carries a radioResourceConfigDedicated holding the target's prepared SRB/DRB, MAC and PHY setup, and a securityConfigHO whose nextHopChainingCount tells the UE how to derive the fresh access-stratum keys for the target. On receiving it the UE stops using the source, applies the target configuration, derives the target keys, starts t304, and does RACH to the target. Because rach-ConfigDedicated gives it a reserved preamble, the target recognises the UE immediately and returns an uplink grant; the UE then sends RRCConnectionReconfigurationComplete on the target C-RNTI, which stops t304 and completes the radio-side handover.

🎯

Which channel carries the confirm: at the target the UE's contention-free RACH gets a Random Access Response on PDSCH scheduled by DCI format 1_0 with CRC scrambled by the RA-RNTI (Type1-PDCCH common search space). The RAR's Temporary C-RNTI equals the newUE-Identity already assigned in mobilityControlInfo, so there is no contention-resolution step; the UE sends RRCConnectionReconfigurationComplete on SRB1 as its first uplink under the target C-RNTI.

📘

Per TS 36.331: in an inter-eNB handover the target eNB builds this entire RRCConnectionReconfiguration and hands it to the source inside a transparent container during preparation. The source forwards it to the UE unmodified — it cannot rewrite the target's radio configuration, only deliver it.

✅ Debugging steps

  • Confirm the RRCConnectionReconfiguration actually contained mobilityControlInfo — without it the message is an ordinary reconfiguration, not a handover.
  • Check targetPhysCellId (and carrierFreq for inter-frequency) match the intended target cell.
  • Verify rach-ConfigDedicated is present so the UE does contention-free RACH; its absence forces slower contention-based access.
  • Confirm securityConfigHO.nextHopChainingCount is the value the target expects, or the UE will derive keys the target cannot verify.

⚠ Common causes of failure

  • Wrong targetPhysCellId/carrierFreq, so the UE synchronises to the wrong cell (wrong-cell handover).
  • rach-ConfigDedicated preamble not actually reserved at the target, so the dedicated RACH collides or goes unanswered.
  • nextHopChainingCount mismatch, so target integrity check of RRCConnectionReconfigurationComplete fails and the UE is rejected.
  • Command lost on a fading source downlink, so the UE never applies it and eventually hits RLF.

Hard handover, interruption and lossless delivery

LTE uses hard handover — break-before-make. The UE releases the source radio link before it accesses the target, so there is always a brief interruption during which the UE can neither transmit nor receive user data on either cell: the gap runs from when the UE detaches from the source to when it completes RACH and confirms on the target. There is no soft handover (no simultaneous connection to two cells) as there was in UMTS. Two mechanisms keep that gap from hurting: the dedicated (contention-free) RACH from rach-ConfigDedicated shortens the interruption, and data forwarding keeps packets from being lost during it.

Data forwarding. During preparation the source begins tunnelling downlink packets it has buffered — and packets that keep arriving from the core before the path is switched — to the target eNB. On X2 these travel over a GTP-U forwarding tunnel directly between the eNBs (X2-U); on S1 they are relayed through the Serving Gateway. The target buffers them and delivers them once the UE arrives, so nothing is dropped even though the radio link broke.

SN Status Transfer. Forwarding alone is not enough for acknowledged-mode (RLC-AM) bearers, where every PDCP SDU is numbered and must be delivered exactly once, in order. So the source also sends an SN Status Transfer (X2AP over X2, or embedded in the S1AP flow over S1) conveying, per AM bearer, the uplink PDCP receiver status (the next expected UL PDCP SN plus a bitmap of already-received out-of-order SDUs) and the downlink COUNT the target should assign to the first forwarded or new DL SDU. COUNT is HFN concatenated with PDCP SN. With this the target resumes PDCP numbering at the exact next value, reorders uplink correctly, and avoids both loss and duplication. Unacknowledged-mode (RLC-UM) bearers do not get this treatment — a few packets may be lost across a handover, which is acceptable for the delay-sensitive traffic that uses UM.

🎯

Break-before-make: LTE handover always has an interruption gap. Contention-free RACH shortens it; data forwarding plus SN Status Transfer make it lossless for AM bearers. Together they let a hard handover behave, from the application's point of view, almost like a seamless one.

When handover fails

The execution phase is supervised by t304. The UE starts it the moment it applies the handover command and stops it when it successfully completes access to the target (i.e. when it sends RRCConnectionReconfigurationComplete). If the UE cannot reach the target before t304 expires — the dedicated preamble goes unanswered, the target is unreachable, or the radio simply fails on the way in — the UE declares handover failure.

On t304 expiry the UE does not silently drop the call. It reverts to the source configuration it saved before the handover, then initiates RRC connection re-establishment: it performs cell selection, camps on the best suitable cell (which may be the original source, the intended target, or a third cell), and sends an RRCConnectionReestablishmentRequest. If the cell it lands on has a prepared UE context (for example the source, or a target that had been prepared), re-establishment succeeds and the connection continues with minimal disruption; if not, the request is rejected and the UE must fall all the way back to a full RRCConnectionSetup from RRC_IDLE, which the user perceives as a dropped connection. Handover failures are also what the network watches to detect too-early, too-late or wrong-cell handovers, feeding mobility robustness optimisation (MRO) so the eNB can retune its A3 offsets and timeToTrigger.

Radio link failure (RLF) on the source before any handover command is a related but distinct case: there the UE never received a mobilityControlInfo at all, and it goes straight into re-establishment. t304 expiry is specifically failure of a handover already in progress.

✅ Debugging steps

  • Determine which step broke: was the command received, did RACH to the target start, did the RAR come back, did RRCConnectionReconfigurationComplete go out before t304?
  • Check t304 value against the observed access time; a too-short t304 aborts otherwise-recoverable accesses.
  • Correlate the failure timing with the A3 report timing — a report that fired late (too-late HO) vs one that fired with the target already fading (wrong-cell HO).
  • Look for a following RRCConnectionReestablishmentRequest and whether it was accepted (prepared context) or rejected (full setup from idle).

⚠ Common causes of failure

  • Too-late handover: serving already too weak when the command is sent, so the UE cannot decode it or cannot reach the target.
  • Too-early / ping-pong: handover fires on a momentary neighbour peak; the target fades and the UE bounces back or fails.
  • Wrong-cell handover: the reported/selected target is not the cell the UE can actually camp on.
  • Dedicated preamble unanswered or target admission not honoured, so RACH to target fails and t304 expires.

Reading a handover in the logs

On the UE side, a successful handover is a compact, recognisable sequence of RRC and MAC events: the report goes up, the command comes down with mobilityControlInfo, t304 starts, RACH to the target succeeds, the complete goes up, and t304 stops. Walking these in order is the fastest way to localise a failure.

Representative UE log — illustrative, values vary by vendor/build:

RRC UL-DCCH MeasurementReport measId=1, servPCI=150 RSRP=-95, neighPCI=288 RSRP=-85 (A3) RRC DL-DCCH RRCConnectionReconfiguration mobilityControlInfo: targetPCI=288, EARFCN=1850, C-RNTI=0x5C7A, t304=ms1000 MOB T304 START (1000 ms), detach from source PCI 150 MAC RACH target PCI 288: preamble=34 (dedicated), RAR rxd, TA=31, TC-RNTI=0x5C7A RRC UL-DCCH RRCConnectionReconfigurationComplete C-RNTI=0x5C7A MOB T304 STOP -> handover SUCCESS on PCI 288
FieldMeaningExample (from log)Check
MeasurementReport / measIdThe triggering report and which measurement fired it.measId=1, A3Confirm the event, the neighbour PCI, and that neighbour RSRP genuinely beat serving by the offset.
mobilityControlInfo.targetPCITarget cell the UE is told to move to.288Must be the reported/intended neighbour; a mismatch is a wrong-cell handover.
newUE-Identity (C-RNTI)C-RNTI the UE adopts at the target.0x5C7AShould reappear as the RAR TC-RNTI and on the completion message.
t304Handover supervision timer; START on apply, STOP on success.ms1000If it STOPs, HO succeeded; if it expires, HO failed and re-establishment follows.
RACH preambleDedicated preamble for contention-free access to the target.34Must match rach-ConfigDedicated.ra-PreambleIndex; an unanswered preamble stalls the HO.
RRCConnectionReconfigurationCompleteUE confirms it applied the target config, on the target C-RNTI.C-RNTI=0x5C7AIts presence (and t304 STOP) is the definitive success marker.

Summary

Every LTE connected-mode handover is the same spine: measConfigMeasurementReport → HO decision → preparation → RRCConnectionReconfiguration(mobilityControlInfo) → RACH to target → RRCConnectionReconfigurationComplete → path switch. The variants (intra-eNB, X2, S1, inter-frequency, inter-RAT) differ only in which node prepares the target and which interface carries preparation — never in the shape of the chain.

The mobilityControlInfo IE is what turns a reconfiguration into a handover; the target builds it and the source forwards it unmodified. LTE handover is hard (break-before-make), so it always has an interruption gap, made short by contention-free RACH and lossless (for AM bearers) by data forwarding plus SN Status Transfer. When it fails, t304 expiry drives the UE into re-establishment. To debug, walk the spine in the logs and find the first link that did not happen or carried the wrong IE — that link names the cause.

Quick Q&A

Q&A Quick Q&A

Q. What actually triggers a handover in RRC_CONNECTED?

A. A MeasurementReport from the UE that satisfies a report configuration the source eNB installed via measConfig — commonly event A3, a neighbour becoming an offset better than the serving cell for the whole timeToTrigger. The eNB, not the UE, then makes the decision.

Q. What single element turns a reconfiguration into a handover, and what are its key fields?

A. The mobilityControlInfo IE inside RRCConnectionReconfiguration. Key fields: targetPhysCellId (target PCI), newUE-Identity (C-RNTI at the target), t304 (HO supervision timer), rach-ConfigDedicated (contention-free RACH), and, for inter-frequency, carrierFreq plus the target radioResourceConfigCommon.

Q. How do X2-based and S1-based handover differ?

A. Same spine, different preparation path. X2 is used when a direct interface exists between the eNBs: source and target talk directly and the core is touched only at the final path switch. S1 is used when there is no X2: the MME relays preparation and drives the bearer switch, and it may relocate the MME/S-GW. X2 is always intra-MME.

Q. Why is LTE handover called "hard" and how is data loss avoided?

A. It is break-before-make — the UE drops the source before accessing the target, so there is an interruption gap and no soft (dual-cell) connection. Data forwarding from source to target (over X2-U, or via the S-GW on S1) buffers packets, and SN Status Transfer resumes PDCP numbering exactly, making AM bearers lossless.

Q. What happens when t304 expires?

A. The UE declares handover failure, reverts to its saved source configuration and starts RRC connection re-establishment via RRCConnectionReestablishmentRequest. If it lands on a cell with a prepared context the connection resumes; otherwise it drops to a full connection setup from idle.

Q. Who builds the RRC configuration the UE applies at the target?

A. The target eNB, during preparation. It returns the complete RRCConnectionReconfiguration in a transparent container, and the source forwards it to the UE unmodified — the source cannot rewrite the target's radio setup.

🔀

LTE ↔ NR: the spine is nearly identical, but the names change. NR carries the handover command in RRCReconfiguration with reconfigurationWithSync (the NR equivalent of mobilityControlInfo), the timer is T304 still, inter-node preparation runs over Xn (XnAP HANDOVER REQUEST) or NG instead of X2/S1, and the core node is the AMG/AMF + UPF rather than MME/S-GW, with the path switch done via NGAP Path Switch/PDU Session update. NR also adds mobility not present in LTE: conditional handover (CHO), where the UE is pre-armed with a target and executes autonomously when a condition is met, and DAPS handover, which keeps the source link up during access to the target to shrink the interruption toward zero — a partial answer to LTE's hard-handover gap.

Where to go next

With the spine in hand, dig into the exact inter-node signalling. The X2 Handover page walks the X2AP preparation, SN Status Transfer and path switch message by message; the S1 Handover page shows the same relocation driven through the MME; and Measurements & Events unpacks the measConfig tree and the A3 event that starts it all.

X2 HandoverS1 HandoverMeasurements & Events