5G-LENA nr-v3.3-67-g8257369a
The 5G/NR module for the ns-3 simulator
|
This class is the interface for the creation of various scheduling algorithms for the distribution of the assigned bytes to the different LCGs/LCs of a UE. More...
#include "nr-mac-scheduler-lc-alg.h"
Classes | |
struct | Assignation |
Represent an assignation of bytes to a LCG/LC. More... | |
Public Member Functions | |
NrMacSchedulerLcAlgorithm () | |
NrMacSchedulerLcAlgorithm constructor. | |
~NrMacSchedulerLcAlgorithm () override | |
~NrMacSchedulerLc deconstructor | |
virtual std::vector< Assignation > | AssignBytesToDlLC (const std::unordered_map< uint8_t, LCGPtr > &ueLCG, uint32_t tbs, Time slotPeriod) const =0 |
Method to decide how to distribute the assigned bytes to the different LCs for the DL direction. Notice that in the DL more sophisticated algorithms can be applied since there is no limitation in the distinction among the various LCs as there is in the UL (in the UL the scheduler considers only the first created LC inside the same LCG). | |
virtual std::vector< Assignation > | AssignBytesToUlLC (const std::unordered_map< uint8_t, LCGPtr > &ueLCG, uint32_t tbs) const =0 |
Method to decide how to distribute the assigned bytes to the different LCs for the UL direction. Notice that in the UL there is a limitation in the distinction among the various LCs since the scheduler considers only the first created LC inside the same LCG. | |
TypeId | GetInstanceTypeId () const override |
Get the type ID of this instance. | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
GetTypeId. | |
This class is the interface for the creation of various scheduling algorithms for the distribution of the assigned bytes to the different LCGs/LCs of a UE.
Notice that in the past, the AssignBytesToLC was a method of NrMacSchedulerNs3. This however, did not allow other algorithms to be used for the byte distribution. For this, we have moved it to a class and defined the NrMacSchedulerLcRR as the default type so that the default distribution will be done in a Round Robin manner. Other algorithms can be included by implementing additional classes.
Moreover, we have separated the function call into DL and UL direction, due to the scheduler limitation to distinguish among the various LCs of an LCG (it considers only the first LC of an LCG). This way we can allow more sophisticated algorithms to be applied in the DL direction, while the UL can be kept simpler.
Introspection did not find any typical Config paths.
No Attributes are defined for this type.
No TraceSources are defined for this type.
Size of this type is 56 bytes (on a 64-bit architecture).
Definition at line 36 of file nr-mac-scheduler-lc-alg.h.
ns3::NrMacSchedulerLcAlgorithm::NrMacSchedulerLcAlgorithm | ( | ) |
NrMacSchedulerLcAlgorithm constructor.
Definition at line 15 of file nr-mac-scheduler-lc-alg.cc.
|
override |
~NrMacSchedulerLc deconstructor
Definition at line 21 of file nr-mac-scheduler-lc-alg.cc.
|
pure virtual |
Method to decide how to distribute the assigned bytes to the different LCs for the DL direction. Notice that in the DL more sophisticated algorithms can be applied since there is no limitation in the distinction among the various LCs as there is in the UL (in the UL the scheduler considers only the first created LC inside the same LCG).
ueLCG | LCG of an UE |
tbs | TBS to divide between the LCG/LC |
Implemented in ns3::NrMacSchedulerLcQos, and ns3::NrMacSchedulerLcRR.
|
pure virtual |
Method to decide how to distribute the assigned bytes to the different LCs for the UL direction. Notice that in the UL there is a limitation in the distinction among the various LCs since the scheduler considers only the first created LC inside the same LCG.
ueLCG | LCG of an UE |
tbs | TBS to divide between the LCG/LC |
Implemented in ns3::NrMacSchedulerLcQos, and ns3::NrMacSchedulerLcRR.
|
override |
Get the type ID of this instance.
Definition at line 33 of file nr-mac-scheduler-lc-alg.cc.
References GetTypeId().
|
static |
GetTypeId.
Definition at line 26 of file nr-mac-scheduler-lc-alg.cc.
Referenced by GetInstanceTypeId().