ns3::SatRandomAccess Class Reference

Class for random access algorithms. More...

#include "satellite-random-access-container.h"

+ Inheritance diagram for ns3::SatRandomAccess:
+ Collaboration diagram for ns3::SatRandomAccess:

Classes

struct  RandomAccessTxOpportunities_s
 Random access Tx opportunities. More...
 

Public Types

typedef Callback< bool > AreBuffersEmptyCallback
 Typedef of callback for buffer status. More...
 
typedef Callback< bool > IsDamaAvailableCallback
 Typedef of callback for known DAMA status. More...
 

Public Member Functions

 SatRandomAccess ()
 Constructor. More...
 
 SatRandomAccess (Ptr< SatRandomAccessConf > randomAccessConf, SatEnums::RandomAccessModel_t randomAccessModel)
 Constructor. More...
 
virtual ~SatRandomAccess ()
 Destructor. More...
 
bool CrdsaHasBackoffTimePassed (uint32_t allocationChannel) const
 Function for checking whether the backoff time has passed for this allocation channel. More...
 
SatRandomAccess::RandomAccessTxOpportunities_s DoRandomAccess (uint32_t allocationChannel, SatEnums::RandomAccessTriggerType_t triggerType)
 Main function of this module. More...
 
uint32_t GetCrdsaSignalingOverheadInBytes ()
 Function for getting the CRDSA signaling overhead in bytes. More...
 
uint32_t GetSlottedAlohaSignalingOverheadInBytes ()
 Function for getting the Slotted ALOHA signaling overhead in bytes. More...
 
void SetAreBuffersEmptyCallback (SatRandomAccess::AreBuffersEmptyCallback callback)
 Function for setting the AreBuffersEmpty callback. More...
 
void SetBackoffProbability (uint32_t allocationChannel, uint16_t backoffProbability)
 Function for setting the backoff probability. More...
 
void SetBackoffTime (uint32_t allocationChannel, uint32_t backoffTime)
 Function for setting the backoff time. More...
 
void SetCrdsaBackoffProbability (uint32_t allocationChannel, uint16_t backoffProbability)
 Function for setting the backoff probability. More...
 
void SetCrdsaBackoffTimeInMilliSeconds (uint32_t allocationChannel, uint32_t backoffTimeInMilliSeconds)
 Function for setting the backoff time in milliseconds. More...
 
void SetCrdsaMaximumDataRateLimitationParameters (uint32_t allocationChannel, uint32_t maxUniquePayloadPerBlock, uint32_t maxConsecutiveBlocksAccessed, uint32_t minIdleBlocks)
 Function for setting the maximum rate limitation parameters. More...
 
void SetCrdsaRandomizationParameters (uint32_t allocationChannel, uint32_t minRandomizationValue, uint32_t maxRandomizationValue, uint32_t numOfInstances)
 Function for setting the parameters related to CRDSA randomization. More...
 
void SetFSimBackoffProbability (uint32_t allocationChannel, uint16_t backoffPersistence)
 Function for setting the backoff probability. More...
 
void SetFSimBackoffTimeInFrames (uint32_t allocationChannel, uint32_t backoffTimeInFrames)
 Function for setting the backoff time in frames. More...
 
void SetIsDamaAvailableCallback (SatRandomAccess::IsDamaAvailableCallback callback)
 Function for setting the IsDamaAvailable callback. More...
 
void SetRandomAccessModel (SatEnums::RandomAccessModel_t randomAccessModel)
 Function for setting the used random access model. More...
 
void SetSlottedAlohaControlRandomizationIntervalInMilliSeconds (uint32_t controlRandomizationIntervalInMilliSeconds)
 Function for setting the Slotted ALOHA control randomization interval. More...
 

Static Public Member Functions

static TypeId GetTypeId (void)
 NS-3 type id function. More...
 

Protected Member Functions

void DoDispose ()
 Function for disposing the module and its variables. More...
 

Private Member Functions

bool CrdsaDoBackoff (uint32_t allocationChannel)
 Function for evaluating the backoff for this allocation channel. More...
 
void CrdsaIncreaseConsecutiveBlocksUsed (uint32_t allocationChannel)
 Function for increasing the allocation channel specific count of consecutive used blocks. More...
 
void CrdsaIncreaseConsecutiveBlocksUsedForAllAllocationChannels ()
 Function for increasing the count of consecutive used blocks for all allocation channels. More...
 
bool CrdsaIsAllocationChannelFree (uint32_t allocationChannel)
 Function for checking if the allocation channel is free. More...
 
SatRandomAccess::RandomAccessTxOpportunities_s CrdsaPrepareToTransmit (uint32_t allocationChannel)
 Function for evaluating backoff for each unique CRDSA packet and calling the randomization of Tx opportunities if backoff is not triggered. More...
 
std::pair< std::set< uint32_t >, std::set< uint32_t > > CrdsaRandomizeTxOpportunities (uint32_t allocationChannel, std::pair< std::set< uint32_t >, std::set< uint32_t >> slots)
 Function for randomizing the CRDSA Tx opportunities (slots) for each unique packet. More...
 
void CrdsaReduceIdleBlocks (uint32_t allocationChannel)
 Function for reducing the allocation channel specific number of idle blocks in effect. More...
 
void CrdsaReduceIdleBlocksForAllAllocationChannels ()
 Function for reducing the idle blocks in effect for all allocation channels. More...
 
void CrdsaResetConsecutiveBlocksUsed (uint32_t allocationChannel)
 Function for resetting the number of consecutive blocks to zero for a specific allocation channel. More...
 
void CrdsaResetConsecutiveBlocksUsedForAllAllocationChannels ()
 Function for resetting the number of consecutive blocks to zero for all allocation channels. More...
 
void CrdsaSetBackoffTimer (uint32_t allocationChannel)
 Function for setting the allocation channel specific backoff timer. More...
 
SatRandomAccess::RandomAccessTxOpportunities_s DoCrdsa (uint32_t allocationChannel)
 Main function for CRDSA algorithm. More...
 
SatRandomAccess::RandomAccessTxOpportunities_s DoEssa (uint32_t allocationChannel)
 Main function for ESSA. More...
 
SatRandomAccess::RandomAccessTxOpportunities_s DoSlottedAloha ()
 Main function for Slotted ALOHA. More...
 
uint32_t GetConfigurationIdForAllocationChannel (uint32_t allocationChannelId)
 Function to convert a carrier allocation channel ID into its allocation channel configuration ID. More...
 
bool IsCrdsaAllocationChannel (uint32_t allocationChannel)
 Function for checking if the allocation channel is CRDSA allocation channel. More...
 
bool IsEssaAllocationChannel (uint32_t allocationChannel)
 Function for checking if the allocation channel is ESSA allocation channel. More...
 
bool IsSlottedAlohaAllocationChannel (uint32_t allocationChannel)
 Function for checking if the allocation channel is Slotted ALOHA allocation channel. More...
 
void PrintVariables ()
 Function for printing out various module variables to console. More...
 
void SlottedAlohaDoVariableSanityCheck ()
 Function for checking the sanity of Slotted ALOHA related variables. More...
 
uint32_t SlottedAlohaRandomizeReleaseTime ()
 Function for performing the Slotted ALOHA release time randomization, i.e., the time after which the next available slot is selected for Tx opportunity. More...
 

Private Attributes

AreBuffersEmptyCallback m_areBuffersEmptyCb
 Callback for buffer status. More...
 
bool m_crdsaNewData
 A flag defining whether the buffers were emptied the last time RA was evaluated, i.e., is the data now new. More...
 
IsDamaAvailableCallback m_isDamaAvailableCb
 Callback for known DAMA status. More...
 
uint32_t m_numOfAllocationChannels
 Number of allocation channels available. More...
 
Ptr< SatRandomAccessConfm_randomAccessConf
 A pointer to random access configuration. More...
 
SatEnums::RandomAccessModel_t m_randomAccessModel
 The used random access model. More...
 
Ptr< UniformRandomVariable > m_uniformRandomVariable
 Uniform random variable object. More...
 

Detailed Description

Class for random access algorithms.

The purpose of this class is to implement Slotted ALOHA and CRDSA algorithms for randomizing the Tx opportunities. In Slotted ALOHAs case this means randomizing the wait time after which the next slot is selected for transmission. In CRDSAs case this means randomizing the slots within a frame for each unique packet and it's replicas.

Definition at line 48 of file satellite-random-access-container.h.

Member Typedef Documentation

◆ AreBuffersEmptyCallback

Typedef of callback for buffer status.

Returns
Is there data left in the buffers

Definition at line 61 of file satellite-random-access-container.h.

◆ IsDamaAvailableCallback

Typedef of callback for known DAMA status.

Returns
Is there known DAMA allocations

Definition at line 55 of file satellite-random-access-container.h.

Constructor & Destructor Documentation

◆ SatRandomAccess() [1/2]

ns3::SatRandomAccess::SatRandomAccess ( )

Constructor.

Definition at line 42 of file satellite-random-access-container.cc.

◆ SatRandomAccess() [2/2]

ns3::SatRandomAccess::SatRandomAccess ( Ptr< SatRandomAccessConf randomAccessConf,
SatEnums::RandomAccessModel_t  randomAccessModel 
)

Constructor.

Definition at line 56 of file satellite-random-access-container.cc.

References m_randomAccessConf, m_uniformRandomVariable, and SetRandomAccessModel().

+ Here is the call graph for this function:

◆ ~SatRandomAccess()

ns3::SatRandomAccess::~SatRandomAccess ( )
virtual

Member Function Documentation

◆ CrdsaDoBackoff()

bool ns3::SatRandomAccess::CrdsaDoBackoff ( uint32_t  allocationChannel)
private

Function for evaluating the backoff for this allocation channel.

Parameters
allocationChannelallocation channel
Returns
Was backoff performed or not

Definition at line 812 of file satellite-random-access-container.cc.

References m_randomAccessConf, and m_uniformRandomVariable.

Referenced by CrdsaPrepareToTransmit(), and DoCrdsa().

+ Here is the caller graph for this function:

◆ CrdsaHasBackoffTimePassed()

bool ns3::SatRandomAccess::CrdsaHasBackoffTimePassed ( uint32_t  allocationChannel) const

Function for checking whether the backoff time has passed for this allocation channel.

Parameters
allocationChannelallocation channel
Returns
Has backoff time passed

Definition at line 730 of file satellite-random-access-container.cc.

References m_randomAccessConf.

Referenced by DoRandomAccess().

+ Here is the caller graph for this function:

◆ CrdsaIncreaseConsecutiveBlocksUsed()

void ns3::SatRandomAccess::CrdsaIncreaseConsecutiveBlocksUsed ( uint32_t  allocationChannel)
private

Function for increasing the allocation channel specific count of consecutive used blocks.

If the maximum number of consecutive blocks is reached, this function triggers the call of idle period.

Parameters
allocationChannelallocation channel

Definition at line 901 of file satellite-random-access-container.cc.

References CrdsaResetConsecutiveBlocksUsedForAllAllocationChannels(), and m_randomAccessConf.

Referenced by CrdsaIncreaseConsecutiveBlocksUsedForAllAllocationChannels().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CrdsaIncreaseConsecutiveBlocksUsedForAllAllocationChannels()

void ns3::SatRandomAccess::CrdsaIncreaseConsecutiveBlocksUsedForAllAllocationChannels ( )
private

Function for increasing the count of consecutive used blocks for all allocation channels.

Definition at line 930 of file satellite-random-access-container.cc.

References CrdsaIncreaseConsecutiveBlocksUsed(), and m_numOfAllocationChannels.

Referenced by DoCrdsa().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CrdsaIsAllocationChannelFree()

bool ns3::SatRandomAccess::CrdsaIsAllocationChannelFree ( uint32_t  allocationChannel)
private

Function for checking if the allocation channel is free.

Parameters
allocationChannelallocation channel
Returns
Is the allocation channel free

Definition at line 797 of file satellite-random-access-container.cc.

References m_randomAccessConf.

Referenced by CrdsaPrepareToTransmit().

+ Here is the caller graph for this function:

◆ CrdsaPrepareToTransmit()

SatRandomAccess::RandomAccessTxOpportunities_s ns3::SatRandomAccess::CrdsaPrepareToTransmit ( uint32_t  allocationChannel)
private

Function for evaluating backoff for each unique CRDSA packet and calling the randomization of Tx opportunities if backoff is not triggered.

Parameters
allocationChannelallocation channel
Returns
Tx opportunities for all unique packets

TODO when multiple overlapping allocation channels for a single UT needs to be supported slots.first can be updated to take into account the reserved RA slots from MAC. For this the logic for determining the reserved slots needs to be implemented in UT MAC and the slots should be passed as parameter to RA logic and used instead of slots.first

This should be done by including the list of used slots in this SF as a parameter for the random access algorithm call. This functionality is needed with, e.g., multiple allocation channels

randomize instance slots for this unique packet

save the packet specific Tx opportunities into a vector

save the rest of the CRDSA Tx opportunity results

Definition at line 842 of file satellite-random-access-container.cc.

References CrdsaDoBackoff(), CrdsaIsAllocationChannelFree(), CrdsaRandomizeTxOpportunities(), CrdsaSetBackoffTimer(), ns3::SatRandomAccess::RandomAccessTxOpportunities_s::crdsaTxOpportunities, m_areBuffersEmptyCb, m_crdsaNewData, m_randomAccessConf, ns3::SatEnums::RA_TX_OPPORTUNITY_CRDSA, ns3::SatEnums::RA_TX_OPPORTUNITY_DO_NOTHING, and ns3::SatRandomAccess::RandomAccessTxOpportunities_s::txOpportunityType.

Referenced by DoCrdsa().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CrdsaRandomizeTxOpportunities()

std::pair< std::set< uint32_t >, std::set< uint32_t > > ns3::SatRandomAccess::CrdsaRandomizeTxOpportunities ( uint32_t  allocationChannel,
std::pair< std::set< uint32_t >, std::set< uint32_t >>  slots 
)
private

Function for randomizing the CRDSA Tx opportunities (slots) for each unique packet.

Parameters
allocationChannelallocation channel
slotsa set of reserved slots
Returns
a set of reserved slots updated with the results of the latest randomization

Definition at line 1030 of file satellite-random-access-container.cc.

References m_randomAccessConf, and m_uniformRandomVariable.

Referenced by CrdsaPrepareToTransmit().

+ Here is the caller graph for this function:

◆ CrdsaReduceIdleBlocks()

void ns3::SatRandomAccess::CrdsaReduceIdleBlocks ( uint32_t  allocationChannel)
private

Function for reducing the allocation channel specific number of idle blocks in effect.

Parameters
allocationChannelallocation channel

Definition at line 749 of file satellite-random-access-container.cc.

References m_randomAccessConf.

Referenced by CrdsaReduceIdleBlocksForAllAllocationChannels().

+ Here is the caller graph for this function:

◆ CrdsaReduceIdleBlocksForAllAllocationChannels()

void ns3::SatRandomAccess::CrdsaReduceIdleBlocksForAllAllocationChannels ( )
private

Function for reducing the idle blocks in effect for all allocation channels.

Definition at line 766 of file satellite-random-access-container.cc.

References CrdsaReduceIdleBlocks(), and m_numOfAllocationChannels.

Referenced by DoCrdsa(), and DoRandomAccess().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CrdsaResetConsecutiveBlocksUsed()

void ns3::SatRandomAccess::CrdsaResetConsecutiveBlocksUsed ( uint32_t  allocationChannel)
private

Function for resetting the number of consecutive blocks to zero for a specific allocation channel.

Parameters
allocationChannelallocation channel

Definition at line 777 of file satellite-random-access-container.cc.

References m_randomAccessConf.

Referenced by CrdsaResetConsecutiveBlocksUsedForAllAllocationChannels().

+ Here is the caller graph for this function:

◆ CrdsaResetConsecutiveBlocksUsedForAllAllocationChannels()

void ns3::SatRandomAccess::CrdsaResetConsecutiveBlocksUsedForAllAllocationChannels ( )
private

Function for resetting the number of consecutive blocks to zero for all allocation channels.

Definition at line 786 of file satellite-random-access-container.cc.

References CrdsaResetConsecutiveBlocksUsed(), and m_numOfAllocationChannels.

Referenced by CrdsaIncreaseConsecutiveBlocksUsed(), DoCrdsa(), and DoRandomAccess().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CrdsaSetBackoffTimer()

void ns3::SatRandomAccess::CrdsaSetBackoffTimer ( uint32_t  allocationChannel)
private

Function for setting the allocation channel specific backoff timer.

Parameters
allocationChannelallocation channel

Definition at line 831 of file satellite-random-access-container.cc.

References m_randomAccessConf.

Referenced by CrdsaPrepareToTransmit(), and DoCrdsa().

+ Here is the caller graph for this function:

◆ DoCrdsa()

◆ DoDispose()

void ns3::SatRandomAccess::DoDispose ( void  )
protected

Function for disposing the module and its variables.

Definition at line 97 of file satellite-random-access-container.cc.

References m_areBuffersEmptyCb, m_isDamaAvailableCb, m_randomAccessConf, and m_uniformRandomVariable.

◆ DoEssa()

SatRandomAccess::RandomAccessTxOpportunities_s ns3::SatRandomAccess::DoEssa ( uint32_t  allocationChannel)
private

Main function for ESSA.

Parameters
allocationChannelallocation channel
Returns
ESSA algorithm results (Tx opportunity)

TODO: take into account inter-packet time ?

Calculate how many backoff slots must wait TODO: this should be done in a semi-periodic way: each time a backoff time has passed, check if we can send or not (the back-off time and probability may have changed in between).

Definition at line 578 of file satellite-random-access-container.cc.

References m_randomAccessConf, m_uniformRandomVariable, ns3::SatEnums::RA_TX_OPPORTUNITY_ESSA, ns3::SatRandomAccess::RandomAccessTxOpportunities_s::slottedAlohaTxOpportunity, and ns3::SatRandomAccess::RandomAccessTxOpportunities_s::txOpportunityType.

Referenced by DoRandomAccess().

+ Here is the caller graph for this function:

◆ DoRandomAccess()

SatRandomAccess::RandomAccessTxOpportunities_s ns3::SatRandomAccess::DoRandomAccess ( uint32_t  allocationChannel,
SatEnums::RandomAccessTriggerType_t  triggerType 
)

Main function of this module.

This will be called from outside and it is responsible for selecting the appropriate RA algorithm

Parameters
allocationChannelallocation channel
triggerTypeRA trigger type
Returns
RA algorithm results (Tx opportunities)

return variable initialization

Do CRDSA (MARSALA being a special form of CRDSA)

Do ESSA

Do Slotted ALOHA

If all RA based on RCS2 specification is enabled, CRDSA is used if the RA parameter number of instances is set >= 2. Otherwise SA is used.

For logging/debugging purposes TODO: This if statement is utilized only for logging, and thus could be optimized to be enabled only with debug build.

Definition at line 155 of file satellite-random-access-container.cc.

References ns3::SatRandomAccess::RandomAccessTxOpportunities_s::allocationChannel, CrdsaHasBackoffTimePassed(), CrdsaReduceIdleBlocksForAllAllocationChannels(), CrdsaResetConsecutiveBlocksUsedForAllAllocationChannels(), ns3::SatRandomAccess::RandomAccessTxOpportunities_s::crdsaTxOpportunities, DoCrdsa(), DoEssa(), DoSlottedAloha(), GetConfigurationIdForAllocationChannel(), ns3::SatEnums::GetRandomAccessTriggerTypeName(), IsCrdsaAllocationChannel(), IsEssaAllocationChannel(), IsSlottedAlohaAllocationChannel(), m_randomAccessConf, m_randomAccessModel, ns3::SatEnums::RA_MODEL_CRDSA, ns3::SatEnums::RA_MODEL_ESSA, ns3::SatEnums::RA_MODEL_MARSALA, ns3::SatEnums::RA_MODEL_RCS2_SPECIFICATION, ns3::SatEnums::RA_MODEL_SLOTTED_ALOHA, ns3::SatEnums::RA_TRIGGER_TYPE_CRDSA, ns3::SatEnums::RA_TRIGGER_TYPE_ESSA, ns3::SatEnums::RA_TRIGGER_TYPE_SLOTTED_ALOHA, ns3::SatEnums::RA_TX_OPPORTUNITY_CRDSA, ns3::SatEnums::RA_TX_OPPORTUNITY_DO_NOTHING, ns3::SatEnums::RA_TX_OPPORTUNITY_ESSA, ns3::SatEnums::RA_TX_OPPORTUNITY_SLOTTED_ALOHA, ns3::SatRandomAccess::RandomAccessTxOpportunities_s::slottedAlohaTxOpportunity, and ns3::SatRandomAccess::RandomAccessTxOpportunities_s::txOpportunityType.

+ Here is the call graph for this function:

◆ DoSlottedAloha()

SatRandomAccess::RandomAccessTxOpportunities_s ns3::SatRandomAccess::DoSlottedAloha ( )
private

Main function for Slotted ALOHA.

Returns
Slotted ALOHA algorithm results (Tx opportunity)

Check if we have known DAMA allocations

Randomize Tx opportunity release time

Definition at line 483 of file satellite-random-access-container.cc.

References m_isDamaAvailableCb, m_randomAccessConf, ns3::SatEnums::RA_TX_OPPORTUNITY_DO_NOTHING, ns3::SatEnums::RA_TX_OPPORTUNITY_SLOTTED_ALOHA, SlottedAlohaRandomizeReleaseTime(), ns3::SatRandomAccess::RandomAccessTxOpportunities_s::slottedAlohaTxOpportunity, and ns3::SatRandomAccess::RandomAccessTxOpportunities_s::txOpportunityType.

Referenced by DoRandomAccess().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetConfigurationIdForAllocationChannel()

uint32_t ns3::SatRandomAccess::GetConfigurationIdForAllocationChannel ( uint32_t  allocationChannelId)
private

Function to convert a carrier allocation channel ID into its allocation channel configuration ID.

Parameters
allocationChannelIdThe carrier allocation channel ID
Returns
The carrier allocation channel configuration ID

Definition at line 397 of file satellite-random-access-container.cc.

References m_randomAccessConf.

Referenced by DoRandomAccess().

+ Here is the caller graph for this function:

◆ GetCrdsaSignalingOverheadInBytes()

uint32_t ns3::SatRandomAccess::GetCrdsaSignalingOverheadInBytes ( )

Function for getting the CRDSA signaling overhead in bytes.

Returns
CRDSA signaling overhead in bytes

Definition at line 722 of file satellite-random-access-container.cc.

References m_randomAccessConf.

◆ GetSlottedAlohaSignalingOverheadInBytes()

uint32_t ns3::SatRandomAccess::GetSlottedAlohaSignalingOverheadInBytes ( )

Function for getting the Slotted ALOHA signaling overhead in bytes.

Returns
Slotted ALOHA signaling overhead in bytes

Slotted ALOHA related methods

Definition at line 453 of file satellite-random-access-container.cc.

References m_randomAccessConf.

◆ GetTypeId()

TypeId ns3::SatRandomAccess::GetTypeId ( void  )
static

NS-3 type id function.

Returns
type id

Definition at line 35 of file satellite-random-access-container.cc.

◆ IsCrdsaAllocationChannel()

bool ns3::SatRandomAccess::IsCrdsaAllocationChannel ( uint32_t  allocationChannel)
private

Function for checking if the allocation channel is CRDSA allocation channel.

Parameters
allocationChannelallocation channel
Returns
Is CRDSA allocation channel

Definition at line 128 of file satellite-random-access-container.cc.

References m_randomAccessConf.

Referenced by DoRandomAccess().

+ Here is the caller graph for this function:

◆ IsEssaAllocationChannel()

bool ns3::SatRandomAccess::IsEssaAllocationChannel ( uint32_t  allocationChannel)
private

Function for checking if the allocation channel is ESSA allocation channel.

Parameters
allocationChannelallocation channel
Returns
Is ESSA allocation channel

Definition at line 146 of file satellite-random-access-container.cc.

References m_randomAccessConf.

Referenced by DoRandomAccess().

+ Here is the caller graph for this function:

◆ IsSlottedAlohaAllocationChannel()

bool ns3::SatRandomAccess::IsSlottedAlohaAllocationChannel ( uint32_t  allocationChannel)
private

Function for checking if the allocation channel is Slotted ALOHA allocation channel.

Parameters
allocationChannelallocation channel
Returns
Is Slotted ALOHA allocation channel

Definition at line 137 of file satellite-random-access-container.cc.

References m_randomAccessConf.

Referenced by DoRandomAccess().

+ Here is the caller graph for this function:

◆ PrintVariables()

void ns3::SatRandomAccess::PrintVariables ( )
private

Function for printing out various module variables to console.

Definition at line 357 of file satellite-random-access-container.cc.

References m_crdsaNewData, m_numOfAllocationChannels, and m_randomAccessConf.

Referenced by DoCrdsa().

+ Here is the caller graph for this function:

◆ SetAreBuffersEmptyCallback()

void ns3::SatRandomAccess::SetAreBuffersEmptyCallback ( SatRandomAccess::AreBuffersEmptyCallback  callback)

Function for setting the AreBuffersEmpty callback.

Parameters
callbackcallback

Definition at line 1089 of file satellite-random-access-container.cc.

References m_areBuffersEmptyCb.

◆ SetBackoffProbability()

void ns3::SatRandomAccess::SetBackoffProbability ( uint32_t  allocationChannel,
uint16_t  backoffProbability 
)

Function for setting the backoff probability.

Parameters
allocationChannelallocation channel
backoffProbabilitybackoff probability

Definition at line 426 of file satellite-random-access-container.cc.

References m_randomAccessModel, ns3::SatEnums::RA_MODEL_CRDSA, ns3::SatEnums::RA_MODEL_ESSA, ns3::SatEnums::RA_MODEL_RCS2_SPECIFICATION, SetCrdsaBackoffProbability(), and SetFSimBackoffProbability().

+ Here is the call graph for this function:

◆ SetBackoffTime()

void ns3::SatRandomAccess::SetBackoffTime ( uint32_t  allocationChannel,
uint32_t  backoffTime 
)

Function for setting the backoff time.

Parameters
allocationChannelallocation channel
backoffTimebackoff time

Definition at line 403 of file satellite-random-access-container.cc.

References m_randomAccessModel, ns3::SatEnums::RA_MODEL_CRDSA, ns3::SatEnums::RA_MODEL_ESSA, ns3::SatEnums::RA_MODEL_RCS2_SPECIFICATION, SetCrdsaBackoffTimeInMilliSeconds(), and SetFSimBackoffTimeInFrames().

+ Here is the call graph for this function:

◆ SetCrdsaBackoffProbability()

void ns3::SatRandomAccess::SetCrdsaBackoffProbability ( uint32_t  allocationChannel,
uint16_t  backoffProbability 
)

Function for setting the backoff probability.

Parameters
allocationChannelallocation channel
backoffProbabilitybackoff probability

Definition at line 642 of file satellite-random-access-container.cc.

References m_randomAccessConf, m_randomAccessModel, ns3::SatEnums::RA_MODEL_CRDSA, ns3::SatEnums::RA_MODEL_MARSALA, and ns3::SatEnums::RA_MODEL_RCS2_SPECIFICATION.

Referenced by SetBackoffProbability().

+ Here is the caller graph for this function:

◆ SetCrdsaBackoffTimeInMilliSeconds()

void ns3::SatRandomAccess::SetCrdsaBackoffTimeInMilliSeconds ( uint32_t  allocationChannel,
uint32_t  backoffTimeInMilliSeconds 
)

Function for setting the backoff time in milliseconds.

Parameters
allocationChannelallocation channel
backoffTimeInMilliSecondsbackoff time

CRDSA related methods

Definition at line 619 of file satellite-random-access-container.cc.

References m_randomAccessConf, m_randomAccessModel, ns3::SatEnums::RA_MODEL_CRDSA, ns3::SatEnums::RA_MODEL_MARSALA, and ns3::SatEnums::RA_MODEL_RCS2_SPECIFICATION.

Referenced by SetBackoffTime().

+ Here is the caller graph for this function:

◆ SetCrdsaMaximumDataRateLimitationParameters()

void ns3::SatRandomAccess::SetCrdsaMaximumDataRateLimitationParameters ( uint32_t  allocationChannel,
uint32_t  maxUniquePayloadPerBlock,
uint32_t  maxConsecutiveBlocksAccessed,
uint32_t  minIdleBlocks 
)

Function for setting the maximum rate limitation parameters.

Parameters
allocationChannelallocation channel
maxUniquePayloadPerBlockmaximum number of unique payloads per block
maxConsecutiveBlocksAccessedmaximum number of consecutive blocks accessed
minIdleBlocksminimum number of idle blocks

Definition at line 693 of file satellite-random-access-container.cc.

References m_randomAccessConf, m_randomAccessModel, ns3::SatEnums::RA_MODEL_CRDSA, ns3::SatEnums::RA_MODEL_MARSALA, and ns3::SatEnums::RA_MODEL_RCS2_SPECIFICATION.

◆ SetCrdsaRandomizationParameters()

void ns3::SatRandomAccess::SetCrdsaRandomizationParameters ( uint32_t  allocationChannel,
uint32_t  minRandomizationValue,
uint32_t  maxRandomizationValue,
uint32_t  numOfInstances 
)

Function for setting the parameters related to CRDSA randomization.

Parameters
allocationChannelallocation channel
minRandomizationValueminimum randomization value
maxRandomizationValuemaximum randomization value
numOfInstancesnumber of packet instances (packet replicas)

Definition at line 664 of file satellite-random-access-container.cc.

References m_randomAccessConf, m_randomAccessModel, ns3::SatEnums::RA_MODEL_CRDSA, ns3::SatEnums::RA_MODEL_MARSALA, and ns3::SatEnums::RA_MODEL_RCS2_SPECIFICATION.

◆ SetFSimBackoffProbability()

void ns3::SatRandomAccess::SetFSimBackoffProbability ( uint32_t  allocationChannel,
uint16_t  backoffPersistence 
)

Function for setting the backoff probability.

Parameters
allocationChannelallocation channel
backoffPersistencebackoff persistence

NOTE: this could be done with the same functions for Crdsa (SetCrdsaBackOffProbabaility) but changing the name of the function. The NCC should then send the backoff probability and not the persistence.

Definition at line 558 of file satellite-random-access-container.cc.

References m_randomAccessConf, m_randomAccessModel, and ns3::SatEnums::RA_MODEL_ESSA.

Referenced by SetBackoffProbability().

+ Here is the caller graph for this function:

◆ SetFSimBackoffTimeInFrames()

void ns3::SatRandomAccess::SetFSimBackoffTimeInFrames ( uint32_t  allocationChannel,
uint32_t  backoffTimeInFrames 
)

Function for setting the backoff time in frames.

Parameters
allocationChannelallocation channel
backoffTimeInFramesbackoff time

ESSA related methods

NOTE: this could be done with the same functions for Crdsa (SetCrdsaBackOffTime) but changing the name of the function. The NCC should then send the backofftime in ms, and not in frames.

Definition at line 537 of file satellite-random-access-container.cc.

References m_randomAccessConf, m_randomAccessModel, and ns3::SatEnums::RA_MODEL_ESSA.

Referenced by SetBackoffTime().

+ Here is the caller graph for this function:

◆ SetIsDamaAvailableCallback()

void ns3::SatRandomAccess::SetIsDamaAvailableCallback ( SatRandomAccess::IsDamaAvailableCallback  callback)

Function for setting the IsDamaAvailable callback.

Parameters
callbackcallback

Definition at line 1081 of file satellite-random-access-container.cc.

References m_isDamaAvailableCb.

◆ SetRandomAccessModel()

void ns3::SatRandomAccess::SetRandomAccessModel ( SatEnums::RandomAccessModel_t  randomAccessModel)

Function for setting the used random access model.

Parameters
randomAccessModelrandom access model

General random access related methods

Definition at line 120 of file satellite-random-access-container.cc.

References ns3::SatEnums::GetRandomAccessModelName(), and m_randomAccessModel.

Referenced by SatRandomAccess().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetSlottedAlohaControlRandomizationIntervalInMilliSeconds()

void ns3::SatRandomAccess::SetSlottedAlohaControlRandomizationIntervalInMilliSeconds ( uint32_t  controlRandomizationIntervalInMilliSeconds)

Function for setting the Slotted ALOHA control randomization interval.

Parameters
controlRandomizationIntervalInMilliSecondsControl randomization interval in milliseconds

Definition at line 459 of file satellite-random-access-container.cc.

References m_randomAccessConf, m_randomAccessModel, ns3::SatEnums::RA_MODEL_RCS2_SPECIFICATION, and ns3::SatEnums::RA_MODEL_SLOTTED_ALOHA.

◆ SlottedAlohaDoVariableSanityCheck()

void ns3::SatRandomAccess::SlottedAlohaDoVariableSanityCheck ( )
private

Function for checking the sanity of Slotted ALOHA related variables.

◆ SlottedAlohaRandomizeReleaseTime()

uint32_t ns3::SatRandomAccess::SlottedAlohaRandomizeReleaseTime ( )
private

Function for performing the Slotted ALOHA release time randomization, i.e., the time after which the next available slot is selected for Tx opportunity.

Control randomization interval defines the maximum release time.

Returns
randomized time

Definition at line 518 of file satellite-random-access-container.cc.

References m_randomAccessConf, and m_uniformRandomVariable.

Referenced by DoSlottedAloha().

+ Here is the caller graph for this function:

Member Data Documentation

◆ m_areBuffersEmptyCb

AreBuffersEmptyCallback ns3::SatRandomAccess::m_areBuffersEmptyCb
private

Callback for buffer status.

Definition at line 403 of file satellite-random-access-container.h.

Referenced by ~SatRandomAccess(), CrdsaPrepareToTransmit(), DoCrdsa(), DoDispose(), and SetAreBuffersEmptyCallback().

◆ m_crdsaNewData

bool ns3::SatRandomAccess::m_crdsaNewData
private

A flag defining whether the buffers were emptied the last time RA was evaluated, i.e., is the data now new.

Definition at line 393 of file satellite-random-access-container.h.

Referenced by CrdsaPrepareToTransmit(), DoCrdsa(), and PrintVariables().

◆ m_isDamaAvailableCb

IsDamaAvailableCallback ns3::SatRandomAccess::m_isDamaAvailableCb
private

Callback for known DAMA status.

Definition at line 398 of file satellite-random-access-container.h.

Referenced by ~SatRandomAccess(), DoCrdsa(), DoDispose(), DoSlottedAloha(), and SetIsDamaAvailableCallback().

◆ m_numOfAllocationChannels

uint32_t ns3::SatRandomAccess::m_numOfAllocationChannels
private

◆ m_randomAccessConf

◆ m_randomAccessModel

◆ m_uniformRandomVariable

Ptr<UniformRandomVariable> ns3::SatRandomAccess::m_uniformRandomVariable
private

The documentation for this class was generated from the following files: