5G NRスケジューリング入門

この記事は 3GPP TS38.300(V17.6.0)を読んでいく Advent Calendar 2023の記事として執筆したものです。
その他の記事はQiitaのアドベントカレンダーページからどうぞ！ 
[3GPP TS38.300(V17.6.0)を読んでいくのカレンダー | Advent Calendar 2023 - Qiita](https://qiita.com/advent-calendar/2023/3gpp_ts38300)

# スケジューリングとはなにか？
スケジューリングとは、gNBがどのUEにどれだけの無線リソースを割り当てるか、言い換えればRBを与えるかを決定するプロセスのことです。これは下りと上りの両方が含まれます。
スケジューラは、スケジューリング・アルゴリズム、QoS情報（どの5QI、GBR/N-GBRなど）、チャネル品質情報（CQI、ランク、SINRなど）を考慮してスケジューリングを決定します。

gNBによるUEへの無線リソース割当はリソースブロック（RB:Resource Block）単位で行われます。
リソースブロックってなんだっけ？という方はomusubiさんのブログで復習しておくとよいでしょう。
https://omusubi5g.hatenablog.com/entry/2023/08/10/003337

TS 38.300の10節Schedulingには以下のような記載があります。

スケジューラの動作：
- UE のバッファ・ステータス、各 UE および関連する無線ベアラの QoS 要件を考慮して、スケジューラは UE 間でリソースを割り当てます。
- スケジューラは、gNBで行われた測定値および／またはUEから報告された測定値を通じて特定されたUEの無線状態を考慮して、リソースを割り当てることができます。
- リソースの割り当ては、無線リソース（リソース・ブロック）で構成されます。

スケジューラの決定のシグナリング：
- UEは、スケジューリング（リソース割り当て）チャネルを受信してリソースを特定します。（DCIのこと）

スケジューラ動作をサポートする測定：
- アップリンク・バッファ・ステータス・レポート（UE内の論理チャネル・キューにバッファされているデータを測定）は、QoS対応パケット・スケジューリングのサポートに使用されます。（BSR(Buffer Status Report)と略されます）
- パワー・ヘッドルーム・レポート（UEの公称最大送信電力とアップリンク送信の推定電力 の差を測定）は、パワー・アウェア・パケット・スケジューリングのサポートに使用されます。（PHR(Power Headroom Report)と略されます）

なお、スケジューリングアルゴリズムには代表的なものとして以下が挙げられます。
- ラウンドロビン（Round Robin）：テスト目的で使用され、チャネル条件を考慮せずにすべてのUEに等しいRBを割り当てる
- 比例公平（Proportional Fairness）：QoSの優先順位と総スループットのバランスを取ろうとするもの。商用ネットワークで使われている。
- 遅延制限容量スケジューリング（Scheduling for Delay-Limited Capacity）：MACスケジューラが特定の遅延要件を持つアプリケーションを常に優先することを保証する。
- 最大C/I（Maximum C/I ）：MAC Schedulerが常に最高のチャネル品質を持つUEにリソース・ブロックを割り当てることを保証する。

3GPP仕様では、スケジューリングアルゴリズムは実装依存になっています。より効率的なスケジューリングは製品の差別化につながるため、ネットワークベンダーが研究開発や知財獲得に力を入れている分野になります。
アルゴリズムの標準化は行わない代わりに、3GPP仕様ではスケジューリングの決定をするために必要となる情報をgNBが集められるようにしたり、gNBの決定を効率よくUEに通知するための仕組みなどが標準化されているわけです。

# ダウンリンクスケジューリング
ダウンリンクのスケジューリングには2種類あります。1つはダイナミック・スケジューリングで、もう1つはSPS (Semi Persistent Scheduling)です。

## ダイナミック・スケジューリング
ダイナミック・スケジューリングは、gNBはC-RNTIでUEを指定して**PDCCH**（具体的にはDCI（DCI 1_0またはDCI 1_1））により各PDSCHがスケジューリングされる仕組みです。

UEは、ダウンリンクの受信が有効になっている場合、常にPDCCHを監視します（DRXが設定されている場合、タイミングはDRXによって管理される）。CA（キャリアアグリゲーション）が設定されている場合、同じC-RNTIがすべてのサービング・セルに適用されます。

5Gの特徴として特定の超低遅延が求められるアプリケーションのサポートがありますが、gNBは、ある（通常の）UEへのPDSCH送信を、別のUEへの低遅延が求められる重要な送信で先取りすることができます。これを、プリエンプションと呼びます。

## SPS(Semi Persistent Scheduling)
SPSは、**RRCメッセージ**によってPDSCH送信がスケジューリングされる仕組みです。
SPSにより、gNBはUEへの最初のHARQ送信にダウンリンク・リソースを割り当てることができます。
RRCは、設定されたダウンリンク割り当ての周期性を定義しますが、**CS-RNTI(Configured Scheduling-RNTI)宛てのPDCCHは、設定されたダウンリンク割り当てを通知してアクティブにするかまたは非アクティブにします**(下図)。すなわち、CS-RNTI 宛の PDCCH は、RRC によって定義された周期性に従って、無効化されるまでダウンリンク割り当てを暗黙的に再利用できることを示します。
CS-RNTIはダウンリンクではSPSに使われるUE固有の識別子ですが、アップリンクでもCS(Configured Scheduling)で使われます。

ダイナミックスケジューリングとSPS(Semi Persistent Scheduling)の図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208641/087cc020-8472-26e9-4844-f2c818d05df6.png)
https://www.sharetechnote.com/html/5G/5G_Scheduling.html#High_Level_Factors_for_Scheduling

# アップリンクスケジューリング
下りリンクのスケジューリングと同様に、上りリンクにも2種類のスケジューリングがあります。1つはダイナミックスケジューリングで、もう1つはCS（Configured Scheduling）です。

## ダイナミックスケジューリング
ダイナミックスケジューリングは、PDCCH（具体的にはDCI（DCI 0_0またはDCI 0_1））によって各PUSCHがスケジューリングされる仕組みです。ダウンリンクと同じく、UEはPDCCHを関しします。

gNBは、遅延が重要となる送信を行う別のUEのために、PUSCH送信、PUSCH送信の繰り返し、またはUEのSRS送信をキャンセルすることがあります。これも、特定の超低遅延が求められるアプリケーションのサポートのための機能といえます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208641/d30f53db-78fb-34b0-8518-f7248ab6b377.png)

## CS(Configured Scheduling)とConfigured Grant
CS(Configured Scheduling)は、RRCメッセージによってPUSCH送信がスケジューリングされる仕組みです。

Configured Grantsを使用すると、gNBは最初のHARQ送信およびHARQ再送信のためのアップリンク・リソースをUEに割り当てることができます。構成済みアップリンク・グラントには、2 つのタイプが定義されています：
- タイプ 1 (下図左):RRC は設定されたアップリンク・グラント（周期性を含む）を直接提供します。
- タイプ 2（下図右）:RRC は設定されたアップリンク・グラントの周期性を定義し、CS-RNTI 宛の PDCCH は設定されたアップリンク・グラントを通知してアクティブにするか、または非アクティブにします。すなわち、CS-RNTI 宛の PDCCH は、RRC によって定義された周期性に従って、無効化されるまで上りリンク・グラントを暗黙的に再利用できることを示す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208641/29da5dbf-9ec2-d48a-423f-c2719e7c6021.png)
https://www.sharetechnote.com/html/5G/5G_Scheduling.html#High_Level_Factors_for_Scheduling

# スケジューリングに関係するMACプロシージャ
MACレイヤはNRプロトコル・スタックの中でも最も機能が多くて複雑です。MACプロシージャの中でも特に以下は、スケジューリングに関係して重要なので解説したいと思います。

* SR - Scheduling Request (UE): UL Grant (ULの送信許可)をNWから得るリクエスト。MACで制御、PHYメッセージ。
* BSR - Buffer Status Report (UE)：送信したいデータがどれだけバッファに溜まってるかのレポート。MACで制御、MAC CEで送信。
* PHR - Power Headroom Report (UE)：nominal UE Tx powerとestimated power for UL-SCH transmission間の差分の情報

以下の図では以下のサイトを参考にしています。
[4G/LTE - Protocol Stack MAC](https://www.sharetechnote.com/html/MAC_LTE.html)

## SR - Scheduling Request (UE)
最初に詳解するのはSR(Scheduling Request)です。
今思い返せば私がLTEの基礎を勉強し始めたときに不思議に思ったことの一つに、「UEはeNBから許可を得てからしかデータを送信できないらしいけど、そもそもeNBはUEがアップリンクのデータ送信をしたがっていることをどうやって知るのだろうか？」というものです。その答えがその名の通り、Scheduling Requestなのです。

SRはデータを送る用のPUSCHとは異なりPUCCHで送られます。UEはgNB/eNBからの許可がなくともPUCCHでSRを送ることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208641/866a21f0-8331-6869-debb-21589dc706d9.png)

なお、SRメッセージそのものはPHYレイヤーのメッセージではありますが、MACレイヤーに制御されています。他のPHYレイヤーのメッセージも同様で、MACとPHYは一緒に理解する必要があります。

https://www.sharetechnote.com/html/Handbook_LTE_SR.html

## BSR - Buffer Status Report (UE)
次は、BSR(Buffer Status Report)です。送信したいデータがどれだけバッファに溜まってるかをgNBにレポートするもので、用途的にはSRと似ています。こちらは、MAC CEで送信されます。
gNBからしたら、UEがどれだけのデータを送りたいかが分かれば、そのデータを送るのに必要十分なPUSCHリソースを割り当てたらいいわけです。こうすることで、無駄にリソースを割り当てるということを避けることができます。

https://www.sharetechnote.com/html/Handbook_LTE_BSR.html

## SRとBSRとの違いは？
SRとBSRの両方とも、UEからgNBに送信したいデータがあり、gNBにPUSCHリソースをスケジューリングしてもらうことを目的としているので、違いが分かりづらく感じるかもしれません。
SRはPHYメッセージで最小限のリソースしかUEのに与えません。UEがULデータを送りはじめたら上位のMACヘッダがあるので、MAC CEにBSRを含めることで、継続的にULデータ送信の許可をもらいます。
ですので、端的に言うと、一番最初はSRで、その後継続してる間はBSRで許可をもらう、と使い分けます。

https://www.telecomhall.net/t/why-do-we-need-sr-and-bsr-both/12493

## PHR - Power Headroom Report (UE)
Power Headroomとは、UE Max Transmission PowerからPUSCH Powerを引いたものです。
最大送信電力から現在PUSCH送信に使ってる電力を引くので、どれだけ送信電力が残っているかの指標になります。「俺はまだこれだけの余力を残している」的なものです。
このPHR(Power Headroom Report)もBSRと同じくMAC CEで送信されます。
gNBはPHRに基づいてUEのパワーコントロールをしたりスケジューリングをしたりします。

https://www.sharetechnote.com/html/Handbook_LTE_PHR.html

# 物理レイヤーのスケジューリングの仕組み
物理レイヤーのスケジューリングの仕組みについては、本記事の範疇を超えます。NTTドコモのテクノロジーレポートに詳しい解説がありますので、詳しく知りたい方は、[この記事](https://www.docomo.ne.jp/binary/pdf/corporate/technology/rd/technical_journal/bn/vol26_3/vol26_3_008jp.pdf)の「5．スケジューリング・HARQ」をご確認下さい。