Link Adaptation

../../_images/la_api.png

Link adaptation (LA) optimizes the performance of a single wireless link bydynamically adjusting transmission parameters to match time-varying channelconditions.

The objective is to maximize the achieved throughput while maintaining thetransport block error rate (TBLER) sufficiently low.Typically, this is simplified to maintaining the TBLER close to apredefined target, designed to balance throughput andlatency.

The main challenge lies in handling noisy and sparse SINRfeedback, which is used to estimate the channel quality.

For a usage example of link adaptation in Sionna, we refer to theLink Adaptationnotebook.

classsionna.sys.InnerLoopLinkAdaptation(phy_abstraction,bler_target=0.1,fill_mcs_value=0)[source]

Class for inner loop link adaptation (ILLA). It computes the highestavailable modulation and coding scheme (MCS) whoseassociated transport block error rate (TBLER) does not exceed the specifiedbler_target:

\[\max \left\{ \text{MCS}: \ \text{TBLER}(\text{MCS}, \text{SINR}_{\text{eff}}) \le \text{BLER}_{\text{target}} \right\}\]

where\(\text{SINR}_{\text{eff}}\) is the effective SINR value providedas input.If no such MCS exists, the lowest available MCS index is returned. If a useris not scheduled,fill_mcs_value is returned.

Parameters:
  • phy_abstraction (PHYAbstraction) – An instance ofPHYAbstraction

  • bler_target (float (default: 0.1)) – BLER target

  • fill_mcs_value (int (default: 0)) – MCS value assigned to non-scheduled users

Input:
  • sinr ([…, num_ofdm_symbols, num_subcarriers, num_ut, num_streams_per_ut],tf.float |None (default)) – SINR for each OFDM symbol, subcarrier, user and stream.IfNone, thensinr_eff andnum_allocated_re are bothrequired.

  • sinr_eff ([…, num_ut],tf.float |None (default)) – Estimated effective SINR for each user.IfNone, thensinr is required.

  • num_allocated_re ([…, num_ut],tf.int32 |None (default)) – Number of allocated resources in a slot, computed across OFDM symbols,subcarriers and streams, for each user.IfNone, thensinr is required.

  • mcs_table_index ([…, num_ut],tf.int32 |int (default: 1)) – MCS table index for each user. For further details, refer to theNote.

  • mcs_category ([…, num_ut],tf.int32 |int (default: 0)) – MCS table category for each user. For further details, refer to theNote.

  • return_lowest_available_mcs (bool (default:False)) – IfTrue, the lowest MCS available inphy_abstraction BLER tablesis returned for each user. Only used for internal purposes.

Output:

mcs_index ([…, num_ut]) – Highest available MCS whose BLER does not exceed the target, or thelowest available MCS if no such MCS exists, for each user

Example

fromsionna.sysimportPHYAbstraction,InnerLoopLinkAdaptationbler_target=0.1# Initialize the PHY abstraction objectphy_abs=PHYAbstraction()# Initialize the ILLA objectilla=InnerLoopLinkAdaptation(phy_abs,bler_target=0.1)# Effective SINR for each usersinr_eff=tf.Variable([0.1,10,100])# N. allocated resource elements for each usernum_allocated_re=tf.Variable([20,30,30])# Compute the MCS index for each usermcs_index=illa(sinr_eff=sinr_eff,num_allocated_re=num_allocated_re,mcs_table_index=1,mcs_category=0)print('Selected MCS index =',mcs_index.numpy())%SelectedMCSindex=[31627]
propertybler_target

Get/set the BLER target for each user

Type:

tf.float

classsionna.sys.OuterLoopLinkAdaptation(phy_abstraction,num_ut,bler_target=0.1,delta_up=1.0,batch_size=None,sinr_eff_init=1.0,sinr_eff_init_fill=1.0,offset_min=-20.0,offset_max=20.0)[source]

Class for outer-loop link adaptation (OLLA).The modulation and coding scheme (MCS) index for a user is determined as thehighest index whose corresponding transport block error rate (TBLER) remainsbelow the specifiedbler_target.The SINR value used for TBLER computation is given by the last effectiveSINR feedback,\(\text{SINR}_{\text{eff}}\) [dB], reduced by an offsetvalue,\(\Delta_{\mathrm{offset}}\):

\[\max \left\{ \text{MCS}: \ \text{TBLER}(\text{MCS}, \text{SINR}_{\text{eff}}-\Delta_{\text{offset}}) \le \text{BLER}_{\text{target}} \right\}\]

The value of\(\Delta_{\text{offset}}\) is adjusted depending on the HARQ feedback[Pedersen05]:

\[\begin{split}\Delta_{\mathrm{offset}} = \left\{\begin{array}{l} \Delta_{\mathrm{offset}} - \Delta_{\mathrm{down}} \quad \text{if HARQ=ACK} \\ \Delta_{\mathrm{offset}} + \Delta_{\mathrm{up}} \quad \text{if HARQ=NACK}\end{array}\right.\end{split}\]

where the relationship between\(\Delta_{\mathrm{up}}\) and\(\Delta_{\mathrm{down}}\) is given by[Sampath97]:

\[\frac{\Delta_{\mathrm{up}}}{\Delta_{\mathrm{down}}} = \frac{1 - \mathrm{BLER}_{\mathrm{target}}}{\mathrm{BLER}_{\mathrm{target}}}.\]
Parameters:
  • phy_abstraction (PHYAbstraction) – An instance ofPHYAbstraction

  • num_ut (int) – Number of user terminals

  • bler_target (float (default: 0.1)) – BLER target value, within 0 and 1

  • delta_up (float (default: 1.)) – Increment applied to the SINR offset [dB] when a NACK is received for auser

  • batch_size (list |int |None (default)) – Batch size or shape. It accounts for multiple users for which linkadaptation is performed simultaneously. IfNone, the batch size isset to [].

  • sinr_eff_init ([…, num_ut],tf.float |float (default: 1.)) – Initial value of effective SINR for each user. Non-positive values aretreated as missing and replaced bysinr_eff_init_fill.Iffloat, the same value is assigned to all users.

  • sinr_eff_init_fill (float (default: 1.)) – Value replacing non-positivesinr_eff_init values

  • offset_min (float (default: -20.)) – Minimum SINR [dB] offset value

  • offset_max (float (default: 20.)) – Maximum SINR [dB] offset value

Input:
  • num_allocated_re ([…, num_ut],tf.int32) – Number of allocated resources in the upcoming slot, computed across OFDMsymbols, subcarriers and streams, for each user

  • harq_feedback ([…, num_ut], -1 | 0 | 1) – If 0 (1, resp.), then a NACK (ACK, resp.) is received. If -1, feedbackis missing.

  • sinr_eff ([…, num_ut],tf.float |None (default)) – Estimated effective SINR for each user. Non-positive values are treated asmissing.

  • mcs_table_index ([…, num_ut],tf.int32 |int (default: 1)) – MCS table index for each user. For further details, refer to theNote.

  • mcs_category ([…, num_ut],tf.int32 |int (default: 0)) – MCS table category for each user. For further details, refer to theNote.

Output:

mcs_index ([…, num_ut]) – Selected MCS index for each user

propertybler_target

Get/set the BLER target for each user

Type:

tf.float

propertydelta_down

Decrement applied to the SINR offset when anACK is received for a user. Computed asdelta_up*bler_target/(1-bler_target).

Type:

float (read-only)

propertydelta_up

Get/set the increment applied to the SINR offset when aNACK is received for a user

Type:

float

propertyoffset

Effective SINR [dB] offset for each user

Type:

[…, num_ut],tf.float (read-only)

propertyoffset_max

Get/set the maximumoffset value

Type:

tf.float

propertyoffset_min

Get/set the minimumoffset value

Type:

tf.float

reset(sinr_eff_init=1.0,sinr_eff_init_fill=0.1)[source]

Resets the values ofsinr_eff_db_last andoffset

propertysinr_eff_db_last

Get/set the last observed effective SINR[dB] value for each user

Type:

[…, num_ut],tf.float

Note

The concepts of MCS table index, category, code block and transport blocksare inspired by but not necessarily tied to 3GPP standards.It is assumed that:

  • Each MCS category has multiple table indices, each defining the mappingbetween MCS indices and their corresponding modulation orders and coding rates.Such relationships are defined bysinr_effective_fun;

  • The transport block, which serves as main data unit, is divided into multiplecode blocks. The number and size of these code blocks are computed bytransport_block_fun.

Yet, if neithersinr_effective_fun nortransport_block_fun is provided,this class aligns with 3GPP TS 38.214 ([3GPP38214]),specifically Section 5.1.3 (PUSCH) and Section 6.1.4 (PDSCH).In this case, the MCS category refers to PDSCH (category = 1) and PUSCH (0).Valid tableindices are {1, 2} for PUSCH and {1, 2, 3, 4} for PDSCH.For more information, refer toTBConfig.

References:
[Pedersen05]

K. I. Pedersen, G. Monghal, I. Z. Kovacs, T. E. Kolding, A.Pokhariyal, F. Frederiksen, P. Mogensen. “Frequency domain schedulingfor OFDMA with limited and noisy channel feedback,” IEEEVehicular Technology Conference (VTC), pp. 1792-1796, Sep. 2007.

[Sampath97]

A. Sampath K. P. Sarath, J. M. Holtzman. “Onsetting reverse link target SIR in a CDMA system.” 1997 IEEE 47th VehicularTechnology Conference. Technology in Motion. Vol. 2. IEEE, 1997.