Link Adaptation
Link adaptation in 5G networks refers to the process of dynamically adjusting transmission parameters, such as modulation, coding, and transmit power, to optimize the communication link between the base station (gNodeB) and the user equipment (UE). The goal of link adaptation is to maximize spectral efficiency, throughput, and reliability while adapting to changing channel conditions and user requirements.
Key aspects of link adaptation in 5G networks include:
Modulation and Coding Scheme (MCS) Selection: Link adaptation involves selecting the appropriate modulation and coding scheme based on channel conditions, signal-to-noise ratio (SNR), and interference levels. Higher modulation schemes offer higher data rates but require better channel conditions, while lower modulation schemes provide greater robustness in adverse conditions.
Transmit Power Control: Link adaptation also includes adjusting the transmit power level to optimize signal quality and coverage while minimizing interference and power consumption. Transmit power control helps maintain a balance between signal strength and interference levels, particularly in dense network deployments.
Channel Quality Feedback: Link adaptation relies on feedback mechanisms to provide information about channel conditions, such as channel state information (CSI), received signal strength (RSSI), and signal-to-interference-plus-noise ratio (SINR). This feedback allows the gNodeB to make informed decisions about modulation, coding, and power adjustments.
Adaptive Modulation and Coding (AMC): AMC is a key feature of link adaptation that dynamically adjusts modulation and coding parameters based on real-time channel conditions. By adapting to variations in channel quality, AMC maximizes data rate and spectral efficiency while ensuring reliable communication.
Fast Link Adaptation: In fast-changing channel environments, such as high-mobility scenarios or fading channels, fast link adaptation techniques are employed to quickly adjust transmission parameters in response to channel fluctuations. This helps maintain a stable and reliable communication link despite varying channel conditions.
Overall, link adaptation plays a crucial role in optimizing the performance of wireless communication systems by continuously adjusting transmission parameters to match the prevailing channel conditions and user requirements. By maximizing spectral efficiency and reliability, link adaptation contributes to achieving high data rates, low latency, and seamless connectivity in 5G networks.
Important
Currently, link adaptation doesn’t support power control.
- class toolkit5G.Scheduler.LinkAdaptation(mcsTable='pdschtable1')[source]
This module estimates the best modulation and code rate from a list of
mcsIndices
that adapts best to a given link based on post processing signal to noise ratio or signal to noise plus interference ratio (SNRdB
) for a given block error rate (BLER) requirement. The implementation is dual purpose and descibed in 2nd note.- Parameters:
mcsTable (string) – This parameter describes the table for mcs selection for PDSCH transmission. It can take a value from the set {“pdschtable1”, “pdschtable2”, “pdchtable3”}. For more details refer Table 5.1.3.1 in 38.214. Default value is ‘pdschtable1’.
Note
The post processing SNR/SINR can be estimated using the eigen/singular values \(\sigma\) of channel estimates as \(\sigma^2 \frac{P_t}{N_0}\).
- Input:
blerTarget (float) – This parameter describes the target Block Error Rate (BLER) value aimed to be achieved during data transmission. This value is derived from the Quality of Service (QoS) requirement and must fall within the range of 0 and 1 i.e.
blerTarget
\(\in (0,1)\). The default value for the parameter is 0.1 (10%).SNRdB (float or numpy array of float) – Defines the post-processing Signal-to-Noise Ratio (SNR) or Signal-to-Interference-plus-Noise Ratio (SINR) in decibels for the links for which the MCS index or indices are to be selected. Default value is None.
This parameter is optional for computing the minimum SINR required for decoding a certain MCS value but
This parameter is mandatory for MCS estimation/selection.
mcsIndices (numpy array) – This parameter defines the list of MCS indices from which the final optimal link-adapted MCS index is selected. It assists the user in reducing the search space for selecting the MCS index. The default value is None. When the parameter is not passed (or set to None), the MCS index is selected from all the values of the MCS index specified in table 5.1.3.x in 38.214.
blerMargin (int/float) – This parameter describes the margin of safety to be considered in the BLER target for MCS selection. Given that communication involves numerous random physical phenomena that may lead to decoding failures, this parameter offers protection against such uncertainties. For a more detailed understanding, please refer to the diagram above. It is a percentage value that aims for
blerTarget
(\(\times\) (\(1-\)blerMargin
) for users which are in highly uncertain region of bler graphs. The default value for the parameter is 0.When this parameter is 0,
blerTarget
is considered for mcs estimation.When this parameter is 0.9, (\(1-0.9\)) \(\times\)
blerTarget
= 0.1 \(\times\)blerTarget
is considered for mcs estimation.
- Output:
(k,) numpy array of integer – Returns an array of MCS indices that adapt to the link conditions and satisfy the BLER target, where “k” is the length of “SNRdB”. Additionally, the returned array may contain -1 for links for which no MCS index meets the BLER target due to either,
very low
SNRdB
(indicating poor link conditions) and/orvery low
blerTarget
value (indicating ambitious QoS requirements).
Note
This is a dual function module which can be used in following ways:
For MCS Estimation: The user is expected to provide
blerTarget
andSNRdB
. Additionally, the user can inputmcsIndices
andblerMargin
if interested in utilizing the features offered by these parameters.For Estimation of Minimum SINR for decoding the specific mcs index: The user is expected to pass
mcsIndices
andblerTarget
. This module is used joint selection of rank (rank adaptation), transmit power (power control), and mcs selection (link adaptation).
- Raises:
ValueError – “[Error-RankAdaptation]: ‘SNRdB’ is not inputted!”
Warning – “[Error-RankAdaptation]: Ignoring ‘mcsIndices’ values. Calculating best MCS indices for given ‘SNRdB’.”
Warning – “[Error-RankAdaptation]: ‘SNRdB’ = {self.SNRdB[i]} is very low for a reliable transmission with bler target of {self.blerTarget}. Returning mcs Index = 0”
ValueError – “If
strategy
is not a string taking values other than from the set {Conservative, Aggressive, Random}.”ValueError – “[Error-RankAdaptation]: ‘blerTarget’ must be a float between 0 and 1”
ValueError – “[Error-RankAdaptation]: ‘blerTarget’ must be a float between 0 and 1”
ValueError – “[Error-RankAdaptation]: ‘blerMargin’ must be a float between 0 and 1”
ValueError – “[Error-RankAdaptation]: ‘blerMargin’ must be a float between 0 and 1”
ValueError – “[Error-RankAdaptation]: ‘SNRdB’ must be an ndarray of int/floats”
ValueError – “[Error-RankAdaptation]: ‘SNRdB’ must be an int/float or ndarray of int/float”
ValueError – “[Error-RankAdaptation]: ‘mcsTable’ must be in [‘pdschtable1’, ‘pdschtable2’, ‘pdschtable3’]”
ValueError – “[Error-RankAdaptation]: ‘mcsIndex’ for pdschtable1 and pdschtable3 must be in [0,28]”
ValueError – “[Error-RankAdaptation]: ‘mcsIndex’ for pdschtable2 must be in [0, 27]”
ValueError – “[Error-RankAdaptation]: ‘mcsIndex’ for table1 and table3 must be in [0,28]”
ValueError – “[Error-RankAdaptation]: ‘mcsIndex’ for pdschtable2 must be in [0, 27]”
- LinkAdaptation.minSNRvalue()[source]
Returns the minimum
SNRdB
value required to decode the symbols with the specifiedblerTarget
when modulated and coded using the inputmcsIndices
.