無線の第一歩:PRACHとランダムアクセス手順が織りなすレイヤー1/2のドラマ
こんにちは。日夜、パケットアナライザーの波形と格闘し、基地局と端末(UE)の間を飛び交う無線リソースのスケジュールにロマンを感じているインフラアーキテクトの皆さん。
私たちは普段、何気なくスマートフォンを取り出し、数Gbpsを叩き出す5G回線でコンテナをプルしたり、リモートデスクトップを快適に動かしたりしています。しかし、その華やかな高速通信が確立される「コンマ数秒の間」に、どれほどドラマチックでシビアな物理層の駆け引きが行われているか、意識したことはあるでしょうか?
電源を入れたその瞬間、あるいはセル境界を時速100キロで疾走しながらハンドオーバーを完遂するその瞬間、UEはまだ基地局(gNB/eNB)との間で正確な同期をとっていません。上りリンクのタイミングアドバンス(TA)も定まっておらず、アップリンクの周波数も時間軸も、そのままでは完全にアライメントがズレている状態です。
この「完全な暗闇」の中で、UEが基地局に対して最初に声を上げる手段。それが PRACH(Physical Random Access Channel:物理ランダムアクセスチャネル) を用いた初期接続プロセス、すなわち Random Access Procedure(ランダムアクセス手順) です。
今回は、教科書的な抽象論をすべて剥ぎ取り、レイヤー1の物理的制約からレイヤー2のMAC層による競合解決(Contention Resolution)、そして極限のRTT削減やセキュリティの急所まで、パケットレベルの挙動を徹底的に解剖していきます。
—
1. PRACHプリアンブルの物理構造とタイムアドバンスの泥臭い真実
無線通信において、電波は光速で伝搬します。基地局から1キロ離れた場所にあるUEが送信した信号は、約3.3マイクロ秒の遅延を伴って基地局のアンテナに到達します。もし、複数のUEがバラバラのタイミングで上りリンクの信号を送ってきたらどうなるでしょうか? 基地局の受信側でFFT(高速フーリエ変換)の直交性が完全に崩壊し、シンボル間干渉(ISI)の嵐となってパケットは一網打尽に破棄されます。
これを防ぐ唯一の機構が Timing Advance(TA) です。そして、そのTAを算出するための「最初の狼煙(のろし)」こそが、PRACHで送信される プリアンブル(Preamble) です。
PRACHプリアンブルのフォーマットとZadoff-Chu(ZC)シーケンス
LTE/5GのPRACHプリアンブルには、自己相関特性と相互相関特性が極めて優れた数学的魔法の数列、Zadoff-Chu(ZC)シーケンス が採用されています。
ZCシーケンスは、以下の数式で定義されるルートシーケンス $u$ から、サイクリックシフト(巡回シフト:$C_v$)を施すことで、同一の周波数リソース上で複数の異なるプリアンブルを直交に近い形で多重化します。
$$x_u(n) = e^{-j \frac{\pi u n (n + N_{ZC})}{N_{ZC}}}, \quad 0 \le n \le N_{ZC} – 1$$
ここで $N_{ZC}$ はZCシーケンスの長さ(LTEなら839、5G NRなら839または139)です。
このサイクリックシフトのメカニズムにより、1つのルートシーケンスから複数の識別子(Preamble Index: 0〜63)を生成できます。
基地局の受信機(RX)側では、受信した時間領域の信号に対して、既知のZCシーケンスとの間でスライディング相関(Matched Filtering)を取ります。相関値のピークが立つ「時間位置」を検出することで、 propagation delay(伝搬遅延)をミリ秒単位(正確にはサブキャリア間隔に応じたサンプル単位)で高精度に逆算し、TAの初期値を決定します。
[UE] -- (PRACH Preamble送信) --> [gNB (基地局)]
│
┌───────────────────────────┴───────────────────────────┐
│ 1. マッチドフィルタによる相関ピーク検出 │
│ 2. 伝搬遅延(Propagation Delay)の算出 │
│ 3. タイムアドバンス(TA)の初期値決定 │
└───────────────────────────┬───────────────────────────┘
▼
[UE] <-- (RAR: Timing Advance指令) -- [gNB]
—
2. 4ステップ・ランダムアクセス手順のパケットレベル全解剖
5G NRやLTEにおけるコンテンションベース(競合ベース)の初期接続は、以下の4つのステップで完結します。それぞれのステップがどのレイヤーで処理され、どのようなデータ構造を持つのかをパケットの視点で追ってみましょう。
Step 1: Message 1 (Msg1) – PRACH Preambleの送信
- レイヤー: 物理層 (L1)
- 動作: UEが指定されたPRACHオケージョン(Time-Frequency Resource)でプリアンブル(Preamble Index)を送信。
- ポイント: この時点ではまだ上位レイヤーの識別子(C-RNTIなど)は存在しないため、基地局側は「誰が送ってきたか」を個別には認識できません。ただ「どのPreamble Indexが来たか」と「どのタイミングで来たか」を知るのみです。
Step 2: Message 2 (Msg2) – Random Access Response (RAR)
- レイヤー: MAC層 / 物理下りリンク制御チャネル (PDCCH/PDSCH)
- 動作: 基地局がMsg1の検出に応答し、下りリンクでRARを返送します。
- パケット/MAC PDUの内部構造:
- PDCCHの宛先は RA-RNTI (Random Access RNTI) です。RA-RNTIは、Msg1が送信されたスロットインデックス、周波数リソースの位置、シンボルインデックスから決定論的に算出されます。
- RARのMAC PDUには、複数のUE向けのレスポンス(MAC SubPDU)が詰め込まれます。
- 含まれる主要フィールド:
- Timing Advance Command: 上りリンクの送信タイミング調整値。
- Uplink Grant: 次のStep 3(Msg3)を送信するための無線リソース割り当て情報(MCS、RB割り当てなど)。
- Temporary C-RNTI: この接続手順の間だけUEに仮割り当てされる一時識別子。
Step 3: Message 3 (Msg3) – RRC Connection Request (またはResume Request)
- レイヤー: RRC層 / MAC層 / 物理上りリンク共有チャネル (PUSCH)
- 動作: Msg2のUL Grantに従い、UEが初めてスケジュールされた上りリンクデータ(PUSCH)を送信します。
- 重大な役割: ここで初めて上位レイヤーの制御メッセージ(
RRCSetupRequestなど)が流れます。同時に、UE固有の識別子(グローバル一意識別子である UE Identity、例えばNAS層のグローバルIDやS-TMSI、あるいは前回接続時のC-RNTI)がカプセル化されます。 - セキュリティの急所: Msg3の段階では、まだ完全なAS(Access Stratum)セキュリティキーが確立されていない(または再開途中である)ため、RRCメッセージは基本的に暗号化されていません(完全性保護のみ、あるいは平文の場合もある)。これが初期接続時のシグナリング盗聴や偽装攻撃のターゲットになりやすい所以です。
Step 4: Message 4 (Msg4) – Contention Resolution (競合解決)
- レイヤー: RRC層 / MAC層
- 動作: 基地局がMsg3を受信し、同じPRACHリソースに複数のUEが同時にプリアンブルを撃ち込んで衝突(Contention)が発生していなかったかを解決します。
- パケットの挙動:
- 基地局はPDCCHで TC-RNTI あてに下りリンクデータを送信します。
- その中身(MAC Control Elementとしての
UE Contention Resolution Identity)には、Step 3でUEが送信した識別子そのもの がエコーバックされます。 - 受信したUEは、Msg4に含まれる識別子が自分がMsg3で送信したものと一致するかを検証します。一致すれば「競合勝利(Contention Resolution Success)」となり、Temporary C-RNTIが正式な C-RNTI に昇格します。もし不一致であれば、衝突敗北とみなされ、ランダムアクセスタイマーが期限切れになった後、バックオフバック(Backoff)を挟んでStep 1からやり直しとなります。
—
3. ハンドオーバー時のPRACH:コンテンションベース vs ノンコンテンションベース
時速200キロの新幹線車内や、超高密度なオフィス街で基地局間を移動する際、通話やセッションを途切れさせないために ハンドオーバー(HO) が発生します。このとき、ランダムアクセス手順は通常の「コンテンションベース(CBRA)」ではなく、「ノンコンテンションベース(NCRA)」 という最適化されたモードで実行されます。
ノンコンテンションベース・ランダムアクセス(CBRAの省略)
ハンドオーバーの際、移行先のターゲット基地局(Target gNB)は、ソース基地局からのバックホール経由のコンテキスト転送(Xn/X2インターフェース)により、事前にそのUEの存在とプロファイルを知っています。
そのため、ターゲット基地局は 「専用のPRACHプリアンブルインデックス」 をあらかじめUEに個別割り当て(RRCReconfigurationメッセージ内での RACH-ConfigDedicated)します。
- Msg1 (NCRA): UEは指定された専用プリアンブルを送信。他のUEと競合する余地がゼロ。
- Msg2 (RAR): ターゲット基地局はプリアンブルを即座に特定し、専用のTAとUL Grantを返送。
- 競合解決の省略: Msg3/Msg4の競合解決プロセスが不要になるため、ハンドオーバーの断絶時間(Interruption Time / Handover Latency)を極限まで短縮 できます。
このレイヤー1のミリ秒単位の最適化こそが、VoLTEの音声通話中に基地局を跨いでもパケットロスを感じさせない(パケットが途切れない)秘訣です。
—
4. 極限のパフォーマンス追求:RTT削減とTCPバッファ・トランスポート層のチューニング
インフラアーキテクトやテックリードの視点として、無線区間の初期接続(PRACH〜RRC接続完了)が完了した直後、アプリケーション層(TCP/QUIC)のパフォーマンスをいかに引き出すかという設計思想が極めて重要になります。
無線リンクの初期確立直後は、いわゆる「コールドスタート」の状態です。ここで適切なトランスポート層のチューニングが行われていないと、せっかくの5Gの広帯域(Sub6やミリ波)が宝の持ち腐れになります。
LinuxカーネルにおけるTCP初期接続・バッファ最適化パラメータ
基地局側のUPF(User Plane Function)や、エッジサーバー、あるいはプライベート5Gのローカルコア(Open5GSやfree5GCなど)におけるLinuxカーネルチューニングの推奨設定例を提示します。
# /etc/sysctl.conf
# -------------------------------------------------------------
# 無線網の変動するBDP(Bandwidth-Delay Product)に追従するTCPチューニング
# -------------------------------------------------------------
# BBR混雑制御アルゴリズムの有効化(無線特有のバッファブルート対策、高いスループット維持)
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
# TCPウィンドウサイズの動的スケーリングと最大バッファの拡大
# 高速移動時の急激な遅延変動に対応するため、最大バッファを32MBに設定
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432
# 初期輻輳窓(Initial Congestion Window: initcwnd)の拡大
# 通常のTCPはinitcwnd=10(約15KB)ですが、5Gの広帯域・低遅延を活かすため
# ルート側で初期パケット数を増やし、スロースタートのラウンドトリップを削減する
# (※ルーティングやネットワーク機器のパケットロス率に応じて慎重に調整してください)
# 注:Linuxカーネル4.x以降ではip routeコマンドで個別制御するのが主流です。
さらに、モバイル網のエッジルーターやUPFのルーティングテーブルにおいて、特定のAPNやUPFインターフェースに対して initcwnd を明示的に設定するコマンド例は以下の通りです。
# デフォルトルートに対してTCP初期輻輳ウィンドウ(initcwnd)を16に設定し、
# 初期接続直後のファーストバイトまでのレイテンシ(TTFB)を極限まで圧縮する
sudo ip route change default via 192.168.100.1 dev eth0 proto static initcwnd 16 initrwnd 16
—
5. セキュリティの急所:PRACHおよび初期接続レイヤーにおける脆弱性と対策
セキュリティ専門家の観点から見逃せないのが、PRACHや初期接続フェーズにおける 「無線インターフェース特有の攻撃ベクトル」 です。
1. PRACHリソース枯渇攻撃(Denial of Service)
PRACHプリアンブルは無線リソースの中で有限の資源です。悪意あるアタッカーが、偽装したUE(SDR等を使用)を用いて、特定のセルが持つすべてのPRACHオケージョンおよびプリアンブルインデックスに対して、ランダムかつ高速にMsg1を連続送出(Preamble Flooding)させた場合、どうなるでしょうか?
基地局のランダムアクセス処理バッファが溢れ、RARの生成処理がパンクします。結果として、正当な一般のUEが初期接続(Random Access)を行えなくなる(接続拒否状態に陥る) という深刻なDoS攻撃が成立します。
- 対策:
- 基地局側のMAC/PHYレイヤーにおいて、同一のチャネル状態や異常な頻度で飛来するPRACHリソース要求に対するレートリミット(Preamble Rate Limiting)を実装。
- 機械学習ベースの異常トラフィック検知を基底バンドユニット(BBU / CU-DU)に組み込み、アタッカーの送信パターンを物理層でドロップする。
2. IMSI/SUCIキャッチャとMsg3の盗聴
前述の通り、Msg3(RRC Connection Request)の段階では、暗号化が完全には適用されていない、あるいは古い規格(LTE等)では一時識別子やグローバル識別子(IMSI / 5GのSUCI)が平文、あるいは脆弱な暗号化で空中を飛び交うケースが存在しました。
- 対策:
- 5G NRにおけるSUCI(Subscription Concealed Identifier)の徹底: 5Gでは、永続的識別子であるIMSIをそのまま空中線に流すことは禁止されており、公開鍵暗号化されたSUCIを用いることで、偽基地局(IMSIキャッチャ)による加入者情報のスニッフィングを根本からブロックしています。
- インフラ設計としては、古いLTEへのフォールバック(Fallback)を強制する攻撃(RRC Connection Rejectを利用したダウングレード攻撃)に対するセキュアなポリシー(NAS Layer Securityの厳格化)をMME/AMFに適用することが不可欠です。
—
6. おわりに:パケットの息吹を感じるインフラエンジニアリングへ
普段私たちが何気なくブラウザをリロードし、APIを叩き、クラウドのコンテナをデプロイしているその裏側では、目に見えない電波の海を駆け巡る数々の数学的・物理的プロトコルが、一糸乱れぬタイミングで調和しています。
PRACHというわずか数シンボルのプリアンブル送信から始まったランダムアクセス手順は、レイヤー1の同期、レイヤー2の競合解決、そしてレイヤー3のセキュアなRRC確立を経て、ようやく私たちのアプリケーション層に到達します。
このレイヤー間の緻密な連携の仕組みを深く理解しているか否かで、大規模なプライベート5Gの設計や、エッジコンピューティング環境におけるミリ秒単位のトラブルシューティングの質は劇的に変わります。
パケットアナライザーの波形や、カーネルのログ、そして基地局の統計カウンターの向こう側にある「物理世界のダイナミズム」に思いを馳せながら、明日からのインフラ設計とコード構築を楽しんでいきましょう。それでは、また次回のディープなネットワーク解説でお会いしましょう!
コメント