The headline is the workbook's verbatim composite over the three connected legs; the deck adds the per-leg targets and the health guards (ping-pong, RLF-after-HO, execution time):
| KPI | Formula / source | Target (deck) |
|---|---|---|
| LTE Handover Success Rate (%) | (IntraEnbSucc + InterX2OutSucc + InterS1OutSucc) ÷ (IntraEnbAtt + InterX2OutAtt + InterS1OutAtt) × 100 (workbook verbatim) | > 98% |
| Intra-eNB HO Success Rate (%) | IntraEnbSucc ÷ IntraEnbAtt × 100 (workbook verbatim) | > 98% |
| Ping-pong HO rate | Family 415 PINGPONG (8-class classification) ÷ HO attempts | < 5% |
| RLF after HO | RLFs within 10 s of HO (deck definition) — evidence in MRO Fam 26 (retainability page) | < 1% |
| HO execution time | Family 23 HO_TIME: Intra/X2/S1HoTimeAvg/Max/Tot/Cnt | < 50 ms intra |
| Paging success rate | Family 28: successes ÷ AttPaging; discards in DiscardedNbr | ≥ 99.5% · delay ≤ 50 ms |
| Cell reselection fail rate | Idle-mode guard (deck table) | < 5% |
334/19/21) grade the same handovers from the target side — compare both and a systematic gap names the direction of the problem (source preparing badly vs target failing arrivals).Idle: the UE camps and reselects by rule (S-criteria → measurement triggers → R-ranking). Connected: measure (A3/A5 config) → report (unless Family 404 discards it by threshold) → prepare (target admission — CAC) → execute (RRCConnectionReconfiguration + t304) → arrive (incoming families). Load balancing injects synthetic triggers into the same pipe.
Every HO counter is <Scope><Stage> or <Scope><Stage>Fail_<Domain><Cause> — the accessibility prefix grammar, applied to mobility:
| Token | Meaning | First place to look |
|---|---|---|
IntraEnb / InterX2Out|In / InterS1Out|In | The leg: same eNB · X2 inter-eNB · S1 via MME (out=source view, in=target view) | X2 leg failing but S1 healthy = X2 transport/config, not radio |
IntraFreqOut / InterFreqOutWithGap / …WithoutGap (133/134/135) | The same HOs re-counted per frequency relation — with/without measurement gaps | Gap variant failing = gap starvation (scheduling), not coverage |
…PrepSucc / …PrepFail_* | Preparation — target admission + transport before the UE is told | _Cp*CacFail=target CAC · _X2ap*/_S1ap*=interface · _CpCcTo=peer silent |
…Succ / …Fail_* (after prep) | Execution — the UE moves (t304 window) | _RrcSigTo=UE lost mid-air · _UpGtpFail/_UpPdcpFail=forwarding path · _CpCcTo=completion timeout |
Pingpong1…8 (415) | The ping-pong classifier — 8 pattern classes per cell pair | Trigger tuning (hysteresis/TTT) on the named pair |
DiscardA3/A4/A5byRsrp|RsrqThreshold (404) | MRs discarded by the eNB's own HO threshold — the report arrived and was ignored | Threshold vs event config mismatch; also DiscardbyVoiceCongestionAvoidance |
Three legs, one grammar. The deck's per-leg guidance, condensed — every counter verbatim:
| Leg | Counters (att → prep → succ) | Signature failures |
|---|---|---|
| Intra-eNB (17 out · 334 in) | IntraEnbAtt → IntraEnbPrepSucc → IntraEnbSucc | PrepFail_CpCapaCacFail/_CpQosCacFail (own CAC!) · Fail_UpMacFail (board) · Fail_CpCcTo |
| X2 (18 out · 19 in) | InterX2OutAtt → InterX2OutPrepSucc → InterX2OutSucc | PrepFail_X2apLinkFail/_X2apRpTo/_X2apSigFail (the X2 itself) · Fail_UpGtpFail/_UpPdcpFail (data forwarding) |
| S1 (20 out · 21 in) | InterS1OutAtt → InterS1OutPrepSucc → InterS1OutSucc | PrepFail_S1ap* (MME path) · exec Fail_RrcSigFail — S1 is the slow path: expect worse numbers |
| Timing (23) | IntraHoTimeAvg/Max · X2HoTimeAvg · S1HoTimeAvg | Deck: intra <50 ms; X2 ≪ S1 by design — an S1-dominant cell needs X2/ANR work, not timer work |
| Symptom | Diagnosis | Lever (deck values) |
|---|---|---|
Prep fails _Cp*CacFail at target | Target admission — LB problem wearing an HO costume | Target CAC headroom; target-cell-load-threshold (70–80%) if MLB; offload the target first |
Prep fails _X2ap* | X2 transport/config | X2 SON/auto-setup, NRT audit; S1 fallback masks it — check the leg mix |
Exec fails _RrcSigTo / RLF-after-HO | Too-late trigger or weak target | a3-offset 4 dB default → tune ±1; hysteresis 1–3 dB; TTT 40–80 ms intra (deck), 320–512 ms X2; t304 |
Exec fails _UpGtpFail/_UpPdcpFail | Data-forwarding path broken | LTE-SW1006 Data Forwarding config (direct vs indirect), GTP path health; PDCP loss target <0.5%, in-order ≥99% |
| S1 share high | Missing X2 to real neighbours | ANR + X2 whitelist — every S1-only pair adds latency and failure surface |
Before any HO counter moves, the trigger layer decides. Family 212/213 records the actual RSRP/RSRQ of source and target at triggering — the ground truth for every offset debate. Family 404 counts reports the eNB chose to ignore. Family 415 classifies ping-pong into 8 patterns. Families 133/134/135 re-count HOs per frequency relation — the with/without measurement-gap split isolates gap starvation from real coverage issues.
212/213 first: if targets are triggered at healthy RSRP but exec still fails, the problem is t304/target-side, not the offset. DiscardA3byRsrpThreshold climbing = your event config and HO threshold disagree — the UE reports, the eNB bins it. Inter-freq failing only with gap (134 vs 135) = the scheduler is starving measurement gaps under load, tune gap pattern not thresholds. Ping-pong classes (415) name the oscillation pattern per pair — pair-level hysteresis/TTT, and remember the idle twin q-hyst.Idle mobility is rule-setting, not commanding: the UE runs S-criteria and R-ranking from SIB parameters. The deck's verbatim reselection table plus the paging machine:
| Parameter | Typical (deck) | Recommendation (verbatim) |
|---|---|---|
| s-intra-search | 31 (62 dB) | Reduce if UE delays intra-frequency measurement |
| s-non-intra-search | 7 (14 dB) | Optimize based on coverage planning |
| q-rxlevmin | −126 dBm | Adjust for better cell-edge performance |
| q-hyst | 3–6 dB | Increase to reduce unnecessary reselections (idle ping-pong) |
| q-offset-freq | 0 dB | Adjust based on inter-frequency behaviour |
| t-reselection | 1–5 s | Increase for better UE stability |
| Cell reselection fail rate | < 5% | Reduce q-hyst or optimize q-offset-freq (deck guard) |
| Item | Value / counter | Guidance (verbatim) |
|---|---|---|
| default-paging-cycle ([ENB] scheduling-config/pcch-config-logic) | 32 / 64 / 128 ms | 32 ms low latency · 128 ms battery savings; align with peak/off-peak traffic |
| nb | Four-t … Quarter-t | Paging frame/occasion as a multiple of the cycle — optimize for efficient frame selection |
| AttPaging / DiscardedNbr (Fam 28) | SR ≥ 99.5% · delay ≤ 50 ms | Optimize tracking areas to stop paging unnecessary cells; low-latency S-GW↔MME transport; avoid paging in SDL/LAA/DL-only |
q-hyst ↔ hysteresis, t-reselection ↔ time-to-trigger, reselection priorities ↔ FPHO (Fam 695). Tune them as pairs — a UE that camps on the wrong layer in idle starts every call with a handover debt. (LTE-SW1002 Idle Mobility Support owns the idle side.)MLB reuses the HO machinery with load as the trigger. Family 156's design is unusually honest — it counts why MLB did NOT fire: MlbNotTriggered_LoadCondition (load never crossed the threshold) vs MlbNotTriggered_RadioCondition (load crossed, but no UE had a radio-viable target). That one split separates threshold tuning from RF reality.
| Counter | Family | Meaning |
|---|---|---|
| MlbHOAtt / MlbHOSucc / MlbHOPrepAtt | 156 | Load-balancing handovers — the active-mode output |
| MlbHOPrepFailureNoResource | 156 | The target refused the LB handover — congestion moved, not solved |
| MlbNotTriggered_LoadCondition / _RadioCondition | 156 | Why MLB stayed silent: threshold vs RF viability |
| IdleLbCnt / UECount / IdleLbTargetEarfcnDL | 217 | Idle-mode steering — UEs redistributed before they connect |
| MCLB_CA (Fam 408) | 408 | Multi-carrier LB by CA — balancing via SCell configuration instead of HO |
| Fam 155 LOAD · 281 LOAD_HISTOGRAM | 155/281 | The load evidence the triggers read |
| Lever | Typical (deck) | Deck guidance (condensed verbatim) |
|---|---|---|
| load-equalization-enable + equal-threshold0/equal-delta0 | enable · ~60–70% · Δ20–30% | Co-sited inter-freq equalization — threshold high enough to mean real load, delta big enough to mean real difference |
| intra/inter-group-offloading-enable + thresholds | enable if groups defined | Offload within/between carrier groups; target group must have coverage for the offloaded UEs |
| target-cell-load-threshold | 70–80% | Stops LB from moving congestion to an equally-congested target — watch MlbHOPrepFailureNoResource |
| rate-load-balancing-candidate / -target | 10–30% / 5–15% | Aggressiveness dials: too few LB HOs → raise; ping-pong → lower |
| idle-mode-load-balancing-enable | auto-mode-by-carrier-load | Pre-balance in idle so connected LB has less to do; tune weight-in-auto-mode, per-FA capacity class |
| load-shedding-enable (overload) | last resort | Shortens inactivity timers under overload — frees slots, costs re-setup signalling |
| anchor-selection-enable / scg-band-selection-mode | EN-DC deployments | Balances the EN-DC anchor and SCG band choice — detailed on the NSA mobility page (no overlap) |
NotTriggered_LoadCondition dominant = thresholds too high (or genuinely no congestion — check 155/281). NotTriggered_RadioCondition dominant = RF can't support balancing — no parameter will move UEs that have no viable target; that's a coverage/carrier plan issue. PrepFailureNoResource climbing = the whole cluster is full — capacity, not balancing. Voice: Family 897 (forced HO for voice congestion) and 404 DiscardbyVoiceCongestionAvoidance show the voice-protection machinery acting.| Family | What it counts | Optimization note |
|---|---|---|
75/76 HO_INTER_RAT_UTRAN_OUT/IN | PS handover to/from 3G | Legacy escape path — A5-style B-thresholds; shrinking traffic, keep clean not fast |
120 HO_UTRAN_SRVCC_OUT | SRVCC voice fallback to UTRAN | Voice continuity guard — failures here are dropped calls, audit with VoLTE team |
850/824 HO_INTER_RAT_NR_OUT/IN | LTE↔NR SA inter-RAT handover | The SA coverage-edge escape — pairs with the SA mobility page's 5211/5212 (their view of the same HO) |
265/304 VOLTE_HO (+time) | QCI-1 handovers counted separately | Voice gets its own SR and timing — hold it to the >98% bar independently |
695 FPHO_OUT | Frequency-priority-based HO | The connected twin of idle priorities — layer-strategy steering, not coverage |
347 INTER_RAT_HO_CANCELLATION · 536 HO_RA | Cancellations · HO random-access preambles | Exec-phase evidence: HO RACH failing = target RACH config, not source trigger |
Two RSRP tracks — serving falling, neighbour rising. Drag a3-offset, hysteresis and TTT and watch where the handover fires — and whether it lands too late (RLF risk) or oscillates (ping-pong). The entire trigger debate in one picture.
Enter the busy-hour leg counters plus the guards; the studio computes the composite and per-leg SRs against the deck bands and routes the fix.
Every mobility counter routed from its root-cause domain to the stage where it books. Click a domain, stage, scenario, or any counter chip for its optimization card.
The deck documents each mobility feature with its own parameters, counters and optimization pages. Click any node for the full card — activation, key parameters with recommended values, watch-counters.
Baseline all legs, both directions
17/334, 18/19, 20/21 with the prep/exec split; 23 timing; 415 ping-pong; 156 MLB; 28 paging. Compute the composite and per-leg SRs.
out AND in — the quadrant view Skip this and a bad-target cell hides behind healthy source stats.Foundation check — PCI · ANR · X2
PCI conflicts, missing neighbours, S1-only pairs, no-handover/locked cells. Deck: this is the #1 priority before any parameter.
Split prep vs exec
Prep-heavy = target/CAC/interface (fix admission or transport). Exec-heavy = trigger timing or forwarding (A3/TTT/t304 or SW1006). Fam 404 discards = config self-contradiction.
the four-quadrant cut If wrong: offset tuning for a CAC problem.Read the trigger ground truth
Fam 212/213: at what RSRP/RSRQ do HOs actually trigger? Fam 415: which pairs oscillate? Then — and only then — move a3-offset/hysteresis/TTT on the named pairs, or hand it to MRO (son-auto-apply).
212/213 before every offset debate If wrong: network-wide offset moves for a 3-pair problem.Balance load — in the right order
Idle steering (217) first, active MLB (156) second, shedding last. Read the NotTriggered split: RadioCondition-bound = carrier-plan work, not thresholds.
156's three-way story If wrong: MLB thresholds tuned while RF forbids balancing.Verify with the guards
Same hour before/after: leg SRs up, ping-pong <5%, RLF-after-HO <1% (MRO Fam 26 — retainability page), paging ≥99.5%, VoLTE HO (265) held. One lever per soak.
HO SR >98% + the four guards If wrong: an SR gain bought with ping-pong is a loss.LTE mobility is three disciplines, one grammar, four quadrants.
Idle rules · connected commands · load steering — decoded by out/in × prep/exec. Fix the foundation, read the ground truth, then tune. Continue to the 5G twins.
Sources: Samsung eNB Counter Description via the operator KPI workbook (Families 17/334 HO_INTRA, 18/19 HO_X2, 20/21 HO_S1, 23 HO_TIME, 28 PAGING, 133/134/135 per-frequency HO, 155/156/217/408 load balancing, 212/213 HO_TRIGGERING, 404 DISCARD_MR, 415 PINGPONG, 695 FPHO, 265/304 VOLTE_HO, 75/76/120/850/824 IRAT, 347, 536, 897 — names verbatim; HO SR formulas from the "LTE KPI" sheet verbatim) · Samsung LTE Mobility Optimization deck (LTE-SW1001 Paging, SW1002 Idle Mobility, SW1003 Intra-eNB, SW1004 S1, SW1005 X2, SW1006 Data Forwarding, SW1007 Inter-Frequency, SW1008 HeNB Inbound, SW1010 Redirection — parameters, targets and recommendations verbatim) · LB parameter stack from the LTE Throughput Optimization deck's Load Balancing chapter. Events per 3GPP TS 36.331 §5.5.4. MRO RLF classification (Fam 26) lives on the retainability page — cross-referenced, not duplicated.