Why 2-Step RACH in 5G-NR (3GPP-R16)?

RACH stands for Random Access Channel, which is the first message from UE to base station when it is powered on. In terms of Radio Access Network implementation, handling RACH design can be one of the most important / critical portions.

Traditional Four-Step RACH:

  • UE transmits PRACH preamble (Msg1).
  • gNB responds with random-access response (RAR - Msg2).
  • UE sends scheduled PUSCH (Msg3).
  • gNB replies with contention resolution (Msg4).

Two-Step RACH:

  • Single round trip between UE and gNB
  • UE combines Msg1 and Msg3 into MsgA.
  • gNB combines Msg2 and Msg4 into MsgB.

The four-step random-access procedure requires two round-trip cycles between the UE and the base station, which not only increases the latency but also incurs additional control-signaling overhead.

So, it reduced latency, reduced control-signaling overhead!

Design targets for two-step RACH:

  • Works across cell sizes, with/without uplink time alignment.
  • All triggers for four-step RACH apply to two-step RACH including, Msg3-based SI request and contention-based beam failure recovery (CB BFR).
  • Compatible with RRC states: INACTIVE, CONNECTED, IDLE.

MsgA & MsgB:

  • MsgA comprises PRACH preamble and PUSCH transmission.
  • MsgB combines random-access response and contention resolution.

After the UE transmits MsgA, it waits for the MsgB response from the gNB. There are three possible outcomes:

  • gNB doesn’t detect MsgA PRACH :arrow_right: UE retransmits or falls back to four-step.
  • gNB detects MsgA preamble but fails PUSCH :arrow_right: UE gets fallback RAR for retransmission.
  • gNB successfully decodes MsgA PUSCH :arrow_right: UE completes procedure with success RAR!

This innovation not only reduces latency and control-signaling overhead but also reducing the number of messages transmitted from the UE and the gNB for unlicensed spectrum, reduces the number of LBT (Listen Before Talk) attempts. It’s designed to fit multiple 5G use cases and cell sizes.

LinkedIn (and Credits): :point_down: