Buffer Status Reporting (BSR)
BSR is the MAC-layer mechanism by which a UE tells the gNB how much uplink data it has pending across its Logical Channel Groups (LCGs). Covers three trigger types (Regular, Periodic, Padding), four BSR formats (Short, Long, Short Truncated, Long Truncated), BSR index mapping, timer management, and 6G evolution (AI-predictive, compressed BSR, sensing-aware).
#1What Problem Does BSR Solve?
The gNB needs to decide how many bytes to grant the UE. Without BSR, it must guess. With BSR, the UE reports exact buffer sizes per LCG.
Without BSR
gNB guesses → grants too small (data stuck) or too large (wasted resources). No visibility into UE traffic.
With BSR
UE reports: "LCG-0: 200 B, LCG-1: 2000 B, ..." → gNB grants exactly what's needed. Demand-driven scheduling.
Logical Channel Groups (LCGs)
8 LCGs in 5G NR — group LCs with similar QoS to reduce overhead:
8 Logical Channel Groups — each reports total buffer per LCG in the BSR MAC CE
#2Three BSR Trigger Types
Regular BSR
Triggered when: (1) new data arrives at higher priority LC, (2) empty LCG gets new data, or (3) retxBSR-Timer expires with data pending.
Periodic BSR
Triggered when periodicBSR-Timer expires. Regular updates to keep gNB informed. Typical: SF20 (20 ms) for voice/video.
Padding BSR
Triggered when UL grant has leftover padding bytes after data + MAC CEs. Uses otherwise-wasted space for free buffer update.
BSR triggers over time — Regular (new data), Periodic (timer), and Padding (leftover space)
#3BSR Formats
| Format | Size | Reports | When Used |
|---|---|---|---|
| Short BSR | 2 bytes | 1 LCG | Only 1 LCG has data, or truncated |
| Long BSR | 1 + N bytes | Multiple LCGs | 2+ LCGs have data (bitmap + sizes) |
| Short Truncated | 2 bytes | Highest pri LCG | Padding = 2 B, multiple LCGs active |
| Long Truncated | 1 + N bytes | All active LCGs | Padding ≥ Long BSR size |
BSR MAC CE byte-level structure — see how each format encodes LCG and buffer information
#4BSR Index Table
The 8-bit buffer size index maps to buffer ranges using logarithmic spacing:
| Index | Buffer Size (bytes) | Range |
|---|---|---|
| 0 | 0 | Exact: 0 bytes |
| 1 | ≤ 10 | 0 < BS ≤ 10 |
| 10 | ≤ 100 | 90 < BS ≤ 100 |
| 25 | ≤ 800 | 720 < BS ≤ 800 |
| 40 | ≤ 6400 | 5760 < BS ≤ 6400 |
| 60 | ≤ 102400 | 92160 < BS ≤ 102400 |
| 63 | > 150000 | Ceiling |
Key Properties
- Logarithmic spacing — fine granularity for small buffers, coarse for large
- 64 indices (0–63) covering 0 to 150,000+ bytes
- UE reports smallest index whose upper bound ≥ actual buffer
- ~10–20% overestimate (gNB accounts for this in scheduling)
#5BSR Timers & Procedure
BSR timer interaction — periodicBSR-Timer triggers scheduled reports, retxBSR-Timer ensures reliability
BSR Procedure Timeline
TTI 0: Data arrives at UE (LCG-1, higher priority)
→ TRIGGER: Regular BSR
→ TRIGGER: Scheduling Request (SR)
TTI 1: UE sends SR on PUCCH ("I need a grant")
TTI 3: gNB responds with DCI (UL grant: 500 bytes)
TTI 5: UE transmits on PUSCH:
• BSR MAC CE (Short, LCG-1, Index=15 ≈ 200 B)
• User data (498 B from LCP)
→ regularBSR-Timer restarted
→ periodicBSR-Timer restarted
TTI 7: gNB processes BSR → schedules next grant: 250 B
TTI 9: UE sends remaining data + Padding BSR (if padding available)
#6Field Considerations
| Pitfall | Impact | Fix |
|---|---|---|
| periodicBSR-Timer too short | Excessive BSR overhead | Use SF320+ for background |
| retxBSR-Timer too long | Data stuck in buffer | SF40 for latency-sensitive |
| Too many LCGs | Long BSR = 9 bytes | Group similar LCs |
| LCG mapping mismatch | gNB can't distinguish QoS | Separate voice/web LCGs |
| BSR index overestimate | Grant 10-20% too large | gNB accounts for rounding |
LTE vs 5G NR BSR
| Aspect | LTE | 5G NR |
|---|---|---|
| LCGs | 4 | 8 |
| Truncated BSR | Not supported | Supported |
| Timer granularity | Subframes | Slots (SCS-aware) |
| Two-step RACH BSR | No | Yes (Rel-16) |
#76G BSR Evolution
BSR evolution across generations — compare capabilities and architecture
| Dimension | 5G NR | 6G Target |
|---|---|---|
| LCGs | 8 | 16+ (sensing, ML) |
| Formats | Short, Long, Truncated | + Compressed, Differential |
| Overhead | 2–9 bytes | 1–4 bytes (compressed) |
| Trigger | Regular, Periodic, Padding | + AI-augmented, Predictive |
| Buffer range | 0–150 kB | 0–100 MB (extended) |
| Multi-link | DC (2 groups) | Unified (WiFi+cell+sat) |
| Sensing data | N/A | Sensing LCG + metadata |
| Prediction | None | AI predicts buffer at gNB |
6G Key BSR Innovations
- Predictive BSR: AI at gNB predicts future buffer → pre-allocate grants → zero scheduling delay
- Compressed BSR: 1-bit/2-bit per LCG, differential reporting → 50-75% overhead reduction
- AI-Augmented: AI at UE decides when/what to report, skip redundant BSRs
- Multi-Connectivity: Unified BSR across WiFi + cellular + satellite with AI routing
- Sensing-Aware: Sensing LCG with scan rate, urgency, and data type metadata
- Federated Learning: ML LCG with chunk count, extended buffer range (>150 KB)
#8Further Reading
3GPP Specifications
- TS 38.321 — NR MAC Protocol §5.4.5 (Buffer Status Reporting)
- TS 38.331 — NR RRC Protocol (BSR-Config IE)
- TS 38.213 — NR Physical Layer Procedures (SR, PUCCH)