g-Node-B classes » g-Node-B scheduler classes module

NR-enabled schedulers module.

This group contains the copy of FAPI documentation that was included in the original "LTE MAC Scheduler Interface v1.11" document by FemtoForum (Document number: FF_Tech_001_v1.11 , Date issued: 12-10-2010, Document status: Document for public distribution).

Description of the module

This group specifies the MAC Scheduler interface and their implementation. The goal of this interface specification is to allow the use of a wide range of schedulers which can be plugged into the eNodeB and to allow for standardized interference coordination interface to the scheduler.

Not only the interface between the MAC and the scheduler is standardized, but also the internals of the scheduler. The objective is to be able to write new kind of schedulers with minimum efforts and the minimum amount of code, re-using existing classes and methods.

FAPI interface overview

The MAC scheduler is part of MAC from a logical view and the MAC scheduler should be independent from the PHY interface.

The description in this interface does not foresee any specific implementation of the interface. What is specified in the FAPI document is the structure of the parameters. In order to describe the interface in detail the following model is used:

  • The interface is defined as a service access point offered by the MAC scheduler to the remaining MAC functionality, as shown in Figure 1.
  • A _REQ primitive is from MAC to the MAC scheduler.
  • A _IND/_CNF primitives are from the MAC scheduler to the MAC.

The description using primitives does not foresee any specific implementation and is used for illustration purposes. Therefore an implementation could be message-based or function-based interface. Timing constrains applicable to the MAC scheduler are not yet specified.

For the MAC scheduler interface specification a push-based concept is employed, that is all parameters needed by the scheduler are passed to the scheduler at specific times rather than using a pull-based concept (i.e. fetching the parameters from different places as needed). The parameters specified are as far as possible aligned with the 3GPP specifications.

[Figure 1]

Figure 1 shows the functionality split between the MAC scheduler and the remaining MAC. For the purposes of describing the MAC scheduler interface the MAC consists of a control block and a subframe block, which uses the CSCHED and SCHED SAP respectively. The subframe block triggers the MAC scheduler every TTI and receives the scheduler results. The control block forwards control information to the MAC scheduler as necessary.


struct ns3::HarqProcess
The HarqProcess struct.
class ns3::NrMacCschedSapProvider
Provides the CSCHED SAP.
class ns3::NrMacHarqVector
Data structure to save all the HARQ process of an UE.
class ns3::NrMacSchedSapProvider
The SAP interface between MAC and scheduler.
class ns3::NrMacSchedSapUser
The Interface between Scheduler and MAC.
class ns3::NrMacScheduler
Interface for all the nr schedulers.
class ns3::NrMacSchedulerCQIManagement
CQI management for schedulers.
class ns3::NrMacSchedulerHarqRr
Schedule the HARQ retransmission.
class ns3::NrMacSchedulerLC
Represent a DL Logical Channel of an UE.
class ns3::NrMacSchedulerLCG
Represent an UE LCG (can be DL or UL)
class ns3::NrMacSchedulerNs3
A general scheduler for nr in NS3.
class ns3::NrMacSchedulerOfdma
The base for all the OFDMA schedulers.
class ns3::NrMacSchedulerOfdmaMR
Assign frequencies in a maximum-rate fashion.
class ns3::NrMacSchedulerOfdmaPF
Assign frequencies in a proportional fair fashion.
class ns3::NrMacSchedulerOfdmaRR
Assign frequencies in a round-robin fashion.
class ns3::NrMacSchedulerSrs
MAC scheduler SRS interface.
class ns3::NrMacSchedulerTdma
The base for all the TDMA schedulers.
class ns3::NrMacSchedulerTdmaMR
Assign entire symbols in a maximum-rate fashion.
class ns3::NrMacSchedulerTdmaPF
Assign entire symbols in a proportional fair fashion.
class ns3::NrMacSchedulerTdmaRR
Assign entire symbols in a round-robin fashion.
class ns3::NrMacSchedulerUeInfo
The representation of an user for any Mac scheduler.
class ns3::NrMacSchedulerUeInfoMR
UE representation for a maximum rate scheduler.
class ns3::NrMacSchedulerUeInfoPF
UE representation for a proportional fair scheduler.
class ns3::NrMacSchedulerUeInfoRR
UE representation for a round-robin scheduler.


using LCGPtr = std::unique_ptr<NrMacSchedulerLCG>
LCGPtr unique pointer to a LCG.
using LCPtr = std::unique_ptr<NrMacSchedulerLC>
Unique pointer to an instance of NrMacSchedulerLC.