A Discrete-Event Network Simulator
API
ns3::UanMacRcGw Class Reference

Gateway side of RC-MAC. More...

#include "uan-mac-rc-gw.h"

+ Inheritance diagram for ns3::UanMacRcGw:
+ Collaboration diagram for ns3::UanMacRcGw:

Classes

struct  AckData
 Packet ACK data. More...
 
struct  Request
 Reservation request. More...
 

Public Types

typedef void(* CycleCallback) (Time now, Time delay, uint32_t numRts, uint32_t totalBytes, double secs, uint32_t ctlRate, double actualX)
 TracedCallback signature for. More...
 
- Public Types inherited from ns3::UanMac
typedef void(* PacketModeTracedCallback) (Ptr< const Packet > packet, UanTxMode mode)
 TracedCallback signature for packet reception/enqueue/dequeue events. More...
 

Public Member Functions

 UanMacRcGw ()
 Constructor. More...
 
virtual ~UanMacRcGw ()
 Dummy destructor, see DoDispose. More...
 
int64_t AssignStreams (int64_t stream)
 Assign a fixed random variable stream number to the random variables used by this model. More...
 
virtual void AttachPhy (Ptr< UanPhy > phy)
 Attach PHY layer to this MAC. More...
 
virtual void Clear (void)
 Clears all pointer references. More...
 
virtual bool Enqueue (Ptr< Packet > pkt, uint16_t protocolNumber, const Address &dest)
 Enqueue packet to be transmitted. More...
 
virtual void SetForwardUpCb (Callback< void, Ptr< Packet >, uint16_t, const Mac8Address &> cb)
 Set the callback to forward packets up to higher layers. More...
 
- Public Member Functions inherited from ns3::UanMac
 UanMac ()
 Default constructor. More...
 
virtual Address GetAddress (void)
 Get the MAC Address. More...
 
virtual Address GetBroadcast (void) const
 Get the broadcast address. More...
 
uint32_t GetTxModeIndex ()
 Get the Tx mode index (Modulation type). More...
 
virtual void SetAddress (Mac8Address addr)
 Set the address. More...
 
void SetTxModeIndex (uint32_t txModeIndex)
 Set the Tx mode index (Modulation type). More...
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor. More...
 
virtual ~Object ()
 Destructor. More...
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together. More...
 
void Dispose (void)
 Dispose of this Object. More...
 
AggregateIterator GetAggregateIterator (void) const
 Get an iterator to the Objects aggregated to this one. More...
 
virtual TypeId GetInstanceTypeId (void) const
 Get the most derived TypeId for this Object. More...
 
template<typename T >
Ptr< T > GetObject (void) const
 Get a pointer to the requested aggregated Object. More...
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId. More...
 
template<>
Ptr< ObjectGetObject () const
 Specialization of () for objects of type ns3::Object. More...
 
template<>
Ptr< ObjectGetObject (TypeId tid) const
 Specialization of (TypeId tid) for objects of type ns3::Object. More...
 
void Initialize (void)
 Invoke DoInitialize on all Objects aggregated to this one. More...
 
bool IsInitialized (void) const
 Check if the object has been initialized. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 Get the value of an attribute, raising fatal errors if unsuccessful. More...
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising erros. More...
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful. More...
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors. More...
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context. More...
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context. More...
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context. More...
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context. More...
 

Static Public Member Functions

static TypeId GetTypeId (void)
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::UanMac
static TypeId GetTypeId (void)
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 Get the type ID. More...
 

Protected Member Functions

virtual void DoDispose ()
 Destructor implementation. More...
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object. More...
 
virtual void DoInitialize (void)
 Initialize() implementation. More...
 
virtual void NotifyNewAggregate (void)
 Notify all Objects aggregated to this one of a new Object being aggregated. More...
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes. More...
 
virtual void NotifyConstructionCompleted (void)
 Notifier called once the ObjectBase is fully constructed. More...
 

Private Types

enum  State { IDLE, INCYCLE, CTSING }
 Gateway state. More...
 

Private Member Functions

uint32_t CompExpMinIndex (uint32_t n, uint32_t k)
 Index to the k'th expected delay among n nodes. More...
 
double ComputeAlpha (uint32_t totalFrames, uint32_t totalBytes, uint32_t n, uint32_t a, double deltaK)
 Compute alpha parameter. More...
 
double ComputeExpBOverA (uint32_t n, uint32_t a, uint32_t ldlh, std::vector< double > deltaK)
 Numeric function. More...
 
double ComputeExpS (uint32_t a, uint32_t ld, std::vector< double > exppdk)
 Throughput for a reservations with framesize ld, given expected delays exppdk. More...
 
double ComputeExpS (uint32_t a, uint32_t ld)
 Throughput for a reservations with framesize ld. More...
 
double ComputePiK (uint32_t a, uint32_t n, uint32_t k)
 Numeric function. More...
 
void CycleStarted (void)
 Set state to INCYCLE. More...
 
void EndCycle (void)
 End cycle by scheduling pending ACKs. More...
 
uint32_t FindOptA (void)
 Compute the optimum maximum number of reservations to accept per cycle. More...
 
std::vector< double > GetExpPdk (void)
 Get the expected propagation delay to each node. More...
 
uint64_t NchooseK (uint32_t n, uint32_t k)
 Binomial coefficient. More...
 
void ReceiveError (Ptr< Packet > pkt, double sinr)
 PHY receive error callback. More...
 
void ReceivePacket (Ptr< Packet > pkt, double sinr, UanTxMode mode)
 PHY receive ok callback. More...
 
void SendPacket (Ptr< Packet > pkt, uint32_t rate)
 Send packet on PHY. More...
 
void StartCycle (void)
 Cycle through pending requests. More...
 

Private Attributes

std::map< Mac8Address, AckDatam_ackData
 AckData for each node. More...
 
uint32_t m_ackSize
 Size of UanHeaderCommon and UanHeaderRcAck. More...
 
bool m_cleared
 Flag when we've been cleared. More...
 
uint32_t m_ctsSizeG
 Size of UanHeaderCommon and UanHeaderRcCtsGlobal. More...
 
uint32_t m_ctsSizeN
 Size of UanHeaderRcCts. More...
 
uint32_t m_currentRateNum
 Rate number corresponding to data rate of current cycle. More...
 
uint16_t m_currentRetryRate
 Retry rate number for current cycle. More...
 
TracedCallback< Time, Time, uint32_t, uint32_t, double, uint32_t, double > m_cycleLogger
 A packet was destined for and received at this MAC layer. More...
 
Callback< void, Ptr< Packet >, uint16_t, const Mac8Address & > m_forwardUpCb
 Forwarding up callback. More...
 
uint32_t m_frameSize
 Size of data frames in bytes. More...
 
Time m_maxDelta
 Maximum propagation delay between gateway and non-gateway nodes . More...
 
uint32_t m_maxRes
 Maximum number of reservations to accept per cycle. More...
 
double m_minRetryRate
 Smallest allowed RTS retry rate. More...
 
uint32_t m_numNodes
 Number of non-gateway nodes in this gateway's neighborhood. More...
 
uint32_t m_numRates
 Number of rates per Phy layer. More...
 
Ptr< UanPhym_phy
 PHY layer attached to this MAC. More...
 
std::map< Mac8Address, Timem_propDelay
 Propagation delay to each node. More...
 
uint32_t m_rateStep
 Increments available for rate assignment in bps. More...
 
std::map< Mac8Address, Requestm_requests
 Request for each node. More...
 
double m_retryStep
 Retry rate increment. More...
 
uint32_t m_rtsSize
 Size of UanHeaderCommon and UanHeaderRcRts. More...
 
TracedCallback< Ptr< const Packet >, UanTxModem_rxLogger
 A packet was destined for and received at this MAC layer. More...
 
Time m_sifs
 Spacing between frames to account for timing error and processing delay. More...
 
std::set< std::pair< Time, Mac8Address > > m_sortedRes
 Queued request times. More...
 
State m_state
 Gateway processing state. More...
 
uint32_t m_totalRate
 Total available channel rate in bps (for a single channel, without splitting reservation channel). More...
 

Additional Inherited Members

Detailed Description

Gateway side of RC-MAC.


This MAC protocol assumes a network topology where all traffic is destined for a set of GW nodes which are connected via some out of band (RF?) means. UanMacRcGw is the protocol which runs on the gateway nodes.

This particular implementation assumes that there is only a single gateway.

For more information on class operation email lentr.nosp@m.acy@.nosp@m.u.was.nosp@m.hing.nosp@m.ton.e.nosp@m.du (This work is, as of yet, unpublished)

Config Paths

ns3::UanMacRcGw is accessible through the following paths with Config::Set and Config::Connect:

  • "/NodeList/[i]/DeviceList/[i]/$ns3::UanNetDevice/Mac/$ns3::UanMacRcGw"

Attributes

  • MaxReservations: Maximum number of reservations to accept per cycle.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 10
    • Flags: construct write read
  • NumberOfRates: Number of rates per Phy layer.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 1023
    • Flags: construct write read
  • MaxPropDelay: Maximum propagation delay between gateway and non-gateway nodes.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +2e+09ns
    • Flags: construct write read
  • SIFS: Spacing between frames to account for timing error and processing delay.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +2e+08ns
    • Flags: construct write read
  • NumberOfNodes: Number of non-gateway nodes in this gateway's neighborhood.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 10
    • Flags: construct write read
  • MinRetryRate: Smallest allowed RTS retry rate.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 0.01
    • Flags: construct write read
  • RetryStep: Retry rate increment.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 0.01
    • Flags: construct write read
  • TotalRate: Total available channel rate in bps (for a single channel, without splitting reservation channel).
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 4096
    • Flags: construct write read
  • RateStep: Increments available for rate assignment in bps.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 4
    • Flags: construct write read
  • FrameSize: Size of data frames in bytes.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 1000
    • Flags: construct write read

TraceSources

Size of this type is 384 bytes (on a 64-bit architecture).

Definition at line 57 of file uan-mac-rc-gw.h.

Member Typedef Documentation

◆ CycleCallback

typedef void(* ns3::UanMacRcGw::CycleCallback) (Time now, Time delay, uint32_t numRts, uint32_t totalBytes, double secs, uint32_t ctlRate, double actualX)

TracedCallback signature for.

Parameters
[in]now,Thecurrent simulation time.
[in]delayMinimum path delay of first RTS.
[in]numRtsNumber of pending RTS.
[in]totalBytesLength of RTS header.
[in]secsEffective window size for RcCtsGlobal message, or time to next cycle, both in seconds.
[in]ctlRateCTL rate in Bps.
[in]actualXCurrent retry rate.

Definition at line 89 of file uan-mac-rc-gw.h.

Member Enumeration Documentation

◆ State

enum ns3::UanMacRcGw::State
private

Gateway state.

Enumerator
IDLE 

Initial idle state.

INCYCLE 

Cycling through nodes.

CTSING 

Sending CTS.

Definition at line 95 of file uan-mac-rc-gw.h.

Constructor & Destructor Documentation

◆ UanMacRcGw()

◆ ~UanMacRcGw()

ns3::UanMacRcGw::~UanMacRcGw ( )
virtual

Dummy destructor, see DoDispose.

Definition at line 68 of file uan-mac-rc-gw.cc.

Member Function Documentation

◆ AssignStreams()

int64_t ns3::UanMacRcGw::AssignStreams ( int64_t  stream)
virtual

Assign a fixed random variable stream number to the random variables used by this model.

Return the number of streams (possibly zero) that have been assigned.

Parameters
streamFirst stream index to use.
Returns
The number of stream indices assigned by this model.

Implements ns3::UanMac.

Definition at line 719 of file uan-mac-rc-gw.cc.

References NS_LOG_FUNCTION.

◆ AttachPhy()

void ns3::UanMacRcGw::AttachPhy ( Ptr< UanPhy phy)
virtual

Attach PHY layer to this MAC.

Some MACs may be designed to work with multiple PHY layers. Others may only work with one.

Parameters
phyPhy layer to attach to this MAC.

Implements ns3::UanMac.

Definition at line 189 of file uan-mac-rc-gw.cc.

References m_phy, ns3::MakeCallback(), third::phy, ReceiveError(), and ReceivePacket().

+ Here is the call graph for this function:

◆ Clear()

void ns3::UanMacRcGw::Clear ( void  )
virtual

Clears all pointer references.

Implements ns3::UanMac.

Definition at line 73 of file uan-mac-rc-gw.cc.

References m_ackData, m_cleared, m_phy, m_propDelay, m_requests, and m_sortedRes.

Referenced by DoDispose().

+ Here is the caller graph for this function:

◆ CompExpMinIndex()

uint32_t ns3::UanMacRcGw::CompExpMinIndex ( uint32_t  n,
uint32_t  k 
)
private

Index to the k'th expected delay among n nodes.

Parameters
nNumber of nodes.
kTarget index.
Returns
The expected index.

Definition at line 633 of file uan-mac-rc-gw.cc.

References sample-rng-plot::n, and NchooseK().

Referenced by GetExpPdk().

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

◆ ComputeAlpha()

double ns3::UanMacRcGw::ComputeAlpha ( uint32_t  totalFrames,
uint32_t  totalBytes,
uint32_t  n,
uint32_t  a,
double  deltaK 
)
private

Compute alpha parameter.

Parameters
totalFramesTotal number of frames in m_requests.
totalBytesTotal number of bytes in m_requests.
nNumber of nodes.
am_maxRes, or optimal A value.
deltaKPropagation delay.
Returns
Alpha parameter.

Definition at line 539 of file uan-mac-rc-gw.cc.

References sample-rng-plot::alpha, ns3::Time::GetSeconds(), m_ctsSizeG, m_maxDelta, m_rtsSize, m_sifs, m_totalRate, sample-rng-plot::n, NS_ASSERT_MSG, and NS_UNUSED.

Referenced by ComputeExpBOverA(), ComputeExpS(), and StartCycle().

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

◆ ComputeExpBOverA()

double ns3::UanMacRcGw::ComputeExpBOverA ( uint32_t  n,
uint32_t  a,
uint32_t  ldlh,
std::vector< double >  deltaK 
)
private

Numeric function.

Parameters
nNumber of nodes.
aNumber of reservations.
ldlhSum of common header length and frame size.
deltaKResult of GetExpPdk
Returns
value.

Definition at line 653 of file uan-mac-rc-gw.cc.

References ComputeAlpha(), ComputePiK(), m_ackSize, m_ctsSizeG, m_ctsSizeN, m_totalRate, and sample-rng-plot::n.

Referenced by ComputeExpS().

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

◆ ComputeExpS() [1/2]

double ns3::UanMacRcGw::ComputeExpS ( uint32_t  a,
uint32_t  ld,
std::vector< double >  exppdk 
)
private

Throughput for a reservations with framesize ld, given expected delays exppdk.

Parameters
aNumber of reservations.
ldFrame size.
exppdkExpected delays, given by GetExpPdk.
Returns
Expected throughput.

Definition at line 598 of file uan-mac-rc-gw.cc.

References ComputeAlpha(), ComputeExpBOverA(), ComputePiK(), ns3::Time::GetSeconds(), ns3::UanHeaderCommon::GetSerializedSize(), m_ctsSizeG, m_maxDelta, m_numNodes, m_rtsSize, m_sifs, m_totalRate, sample-rng-plot::n, and NS_LOG_DEBUG.

Referenced by ComputeExpS(), and FindOptA().

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

◆ ComputeExpS() [2/2]

double ns3::UanMacRcGw::ComputeExpS ( uint32_t  a,
uint32_t  ld 
)
private

Throughput for a reservations with framesize ld.

Parameters
aNumber of reservations.
ldFrame size.
Returns
Expected throughput.

Definition at line 627 of file uan-mac-rc-gw.cc.

References ComputeExpS(), and GetExpPdk().

+ Here is the call graph for this function:

◆ ComputePiK()

double ns3::UanMacRcGw::ComputePiK ( uint32_t  a,
uint32_t  n,
uint32_t  k 
)
private

Numeric function.

Parameters
aNumber of reservations.
nnumber of nodes.
kK'th node.
Returns
Value.

Definition at line 646 of file uan-mac-rc-gw.cc.

References sample-rng-plot::n, and NchooseK().

Referenced by ComputeExpBOverA(), and ComputeExpS().

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

◆ CycleStarted()

void ns3::UanMacRcGw::CycleStarted ( void  )
private

Set state to INCYCLE.

Definition at line 456 of file uan-mac-rc-gw.cc.

References INCYCLE, and m_state.

Referenced by StartCycle().

+ Here is the caller graph for this function:

◆ DoDispose()

void ns3::UanMacRcGw::DoDispose ( void  )
protectedvirtual

Destructor implementation.

This method is called by Dispose() or by the Object's destructor, whichever comes first.

Subclasses are expected to implement their real destruction code in an overridden version of this method and chain up to their parent's implementation once they are done. i.e, for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose() method.

It is safe to call GetObject() from within this method.

Reimplemented from ns3::Object.

Definition at line 97 of file uan-mac-rc-gw.cc.

References Clear(), and ns3::Object::DoDispose().

+ Here is the call graph for this function:

◆ EndCycle()

◆ Enqueue()

bool ns3::UanMacRcGw::Enqueue ( Ptr< Packet pkt,
uint16_t  protocolNumber,
const Address dest 
)
virtual

Enqueue packet to be transmitted.

Parameters
pktPacket to be transmitted.
destDestination address.
protocolNumberThe type of the packet.
Returns
True if packet was successfully enqueued.

Implements ns3::UanMac.

Definition at line 174 of file uan-mac-rc-gw.cc.

References NS_LOG_WARN, and NS_UNUSED.

◆ FindOptA()

uint32_t ns3::UanMacRcGw::FindOptA ( void  )
private

Compute the optimum maximum number of reservations to accept per cycle.

Returns
Optimum number.

Definition at line 695 of file uan-mac-rc-gw.cc.

References ComputeExpS(), m_frameSize, ns3::Now(), NS_LOG_DEBUG, and ns3::Time::S.

Referenced by StartCycle().

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

◆ GetExpPdk()

std::vector< double > ns3::UanMacRcGw::GetExpPdk ( void  )
private

Get the expected propagation delay to each node.

Returns
Vector of expected propagation delays.

Definition at line 570 of file uan-mac-rc-gw.cc.

References CompExpMinIndex(), ns3::Time::GetSeconds(), m_maxDelta, m_numNodes, m_propDelay, and sample-rng-plot::n.

Referenced by ComputeExpS().

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

◆ GetTypeId()

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

◆ NchooseK()

uint64_t ns3::UanMacRcGw::NchooseK ( uint32_t  n,
uint32_t  k 
)
private

Binomial coefficient.

Parameters
nPool size.
kSelection size.
Returns
Binomial coefficient n choose k.

Definition at line 672 of file uan-mac-rc-gw.cc.

References sample-rng-plot::n.

Referenced by CompExpMinIndex(), and ComputePiK().

+ Here is the caller graph for this function:

◆ ReceiveError()

void ns3::UanMacRcGw::ReceiveError ( Ptr< Packet pkt,
double  sinr 
)
private

PHY receive error callback.

Parameters
pktThe failed packet.
sinrThe SINR value on the channel.

Definition at line 197 of file uan-mac-rc-gw.cc.

References NS_UNUSED.

Referenced by AttachPhy().

+ Here is the caller graph for this function:

◆ ReceivePacket()

◆ SendPacket()

void ns3::UanMacRcGw::SendPacket ( Ptr< Packet pkt,
uint32_t  rate 
)
private

Send packet on PHY.

Parameters
pktThe Packet.
rateThe UanTxMode number, m_currentRateNum.

Definition at line 507 of file uan-mac-rc-gw.cc.

References ns3::UanHeaderCommon::GetDest(), ns3::Packet::GetSize(), ns3::UanHeaderCommon::GetType(), m_phy, ns3::Now(), NS_LOG_DEBUG, ns3::Packet::PeekHeader(), ns3::Time::S, ns3::UanMacRc::TYPE_ACK, ns3::UanMacRc::TYPE_CTS, ns3::UanMacRc::TYPE_DATA, ns3::UanMacRc::TYPE_GWPING, and ns3::UanMacRc::TYPE_RTS.

Referenced by EndCycle(), and StartCycle().

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

◆ SetForwardUpCb()

void ns3::UanMacRcGw::SetForwardUpCb ( Callback< void, Ptr< Packet >, uint16_t, const Mac8Address &>  cb)
virtual

Set the callback to forward packets up to higher layers.

Parameters
cbThe callback. packet The packet. address The source address.

Implements ns3::UanMac.

Definition at line 183 of file uan-mac-rc-gw.cc.

References m_forwardUpCb.

◆ StartCycle()

void ns3::UanMacRcGw::StartCycle ( void  )
private

Cycle through pending requests.

Definition at line 288 of file uan-mac-rc-gw.cc.

References ns3::Packet::AddHeader(), ns3::Time::As(), ComputeAlpha(), ns3::Mac8Address::ConvertFrom(), CTSING, CycleStarted(), EndCycle(), ns3::UanMacRcGw::AckData::expFrames, FindOptA(), ns3::UanMacRcGw::Request::frameNo, ns3::UanMacRcGw::AckData::frameNo, ns3::UanMac::GetAddress(), ns3::Mac8Address::GetBroadcast(), ns3::Time::GetSeconds(), INCYCLE, ns3::UanMacRcGw::Request::length, m_ackData, m_ackSize, m_ctsSizeG, m_ctsSizeN, m_currentRateNum, m_currentRetryRate, m_cycleLogger, m_maxDelta, m_maxRes, m_minRetryRate, m_numNodes, m_numRates, m_phy, m_rateStep, m_requests, m_retryStep, m_rtsSize, m_sifs, m_sortedRes, m_state, m_totalRate, max, ns3::Now(), ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_WARN, ns3::UanMacRcGw::Request::numFrames, ns3::UanMacRcGw::Request::retryNo, ns3::UanMacRcGw::Request::rxTime, ns3::Time::S, ns3::Simulator::Schedule(), ns3::Seconds(), SendPacket(), ns3::UanHeaderRcCts::SetAddress(), ns3::UanHeaderRcCts::SetDelayToTx(), ns3::UanHeaderCommon::SetDest(), ns3::UanHeaderRcCts::SetFrameNo(), ns3::UanHeaderCommon::SetProtocolNumber(), ns3::UanHeaderRcCtsGlobal::SetRateNum(), ns3::UanHeaderRcCts::SetRetryNo(), ns3::UanHeaderRcCtsGlobal::SetRetryRate(), ns3::UanHeaderRcCts::SetRtsTimeStamp(), ns3::UanHeaderCommon::SetSrc(), ns3::UanHeaderRcCtsGlobal::SetTxTimeStamp(), ns3::UanHeaderCommon::SetType(), ns3::UanHeaderRcCtsGlobal::SetWindowTime(), and ns3::UanMacRc::TYPE_CTS.

Referenced by EndCycle(), and ReceivePacket().

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

Member Data Documentation

◆ m_ackData

std::map<Mac8Address, AckData> ns3::UanMacRcGw::m_ackData
private

AckData for each node.

Definition at line 151 of file uan-mac-rc-gw.h.

Referenced by Clear(), EndCycle(), ReceivePacket(), and StartCycle().

◆ m_ackSize

uint32_t ns3::UanMacRcGw::m_ackSize
private

Size of UanHeaderCommon and UanHeaderRcAck.

Definition at line 136 of file uan-mac-rc-gw.h.

Referenced by ComputeExpBOverA(), EndCycle(), StartCycle(), and UanMacRcGw().

◆ m_cleared

bool ns3::UanMacRcGw::m_cleared
private

Flag when we've been cleared.

Definition at line 159 of file uan-mac-rc-gw.h.

Referenced by Clear().

◆ m_ctsSizeG

uint32_t ns3::UanMacRcGw::m_ctsSizeG
private

◆ m_ctsSizeN

uint32_t ns3::UanMacRcGw::m_ctsSizeN
private

Size of UanHeaderRcCts.

Definition at line 134 of file uan-mac-rc-gw.h.

Referenced by ComputeExpBOverA(), StartCycle(), and UanMacRcGw().

◆ m_currentRateNum

uint32_t ns3::UanMacRcGw::m_currentRateNum
private

Rate number corresponding to data rate of current cycle.

Definition at line 138 of file uan-mac-rc-gw.h.

Referenced by EndCycle(), and StartCycle().

◆ m_currentRetryRate

uint16_t ns3::UanMacRcGw::m_currentRetryRate
private

Retry rate number for current cycle.

Definition at line 137 of file uan-mac-rc-gw.h.

Referenced by StartCycle().

◆ m_cycleLogger

TracedCallback<Time, Time, uint32_t, uint32_t, double, uint32_t, double> ns3::UanMacRcGw::m_cycleLogger
private

A packet was destined for and received at this MAC layer.

Start time min propagation delay reservations frames bytes window size CTS rate retry rate

Definition at line 176 of file uan-mac-rc-gw.h.

Referenced by GetTypeId(), and StartCycle().

◆ m_forwardUpCb

Callback<void, Ptr<Packet>, uint16_t, const Mac8Address&> ns3::UanMacRcGw::m_forwardUpCb
private

Forwarding up callback.

Definition at line 126 of file uan-mac-rc-gw.h.

Referenced by ReceivePacket(), and SetForwardUpCb().

◆ m_frameSize

uint32_t ns3::UanMacRcGw::m_frameSize
private

Size of data frames in bytes.

Definition at line 142 of file uan-mac-rc-gw.h.

Referenced by FindOptA(), and GetTypeId().

◆ m_maxDelta

Time ns3::UanMacRcGw::m_maxDelta
private

Maximum propagation delay between gateway and non-gateway nodes .

Definition at line 129 of file uan-mac-rc-gw.h.

Referenced by ComputeAlpha(), ComputeExpS(), GetExpPdk(), GetTypeId(), ReceivePacket(), and StartCycle().

◆ m_maxRes

uint32_t ns3::UanMacRcGw::m_maxRes
private

Maximum number of reservations to accept per cycle.

Definition at line 131 of file uan-mac-rc-gw.h.

Referenced by GetTypeId(), and StartCycle().

◆ m_minRetryRate

double ns3::UanMacRcGw::m_minRetryRate
private

Smallest allowed RTS retry rate.

Definition at line 144 of file uan-mac-rc-gw.h.

Referenced by GetTypeId(), and StartCycle().

◆ m_numNodes

uint32_t ns3::UanMacRcGw::m_numNodes
private

Number of non-gateway nodes in this gateway's neighborhood.

Definition at line 139 of file uan-mac-rc-gw.h.

Referenced by ComputeExpS(), GetExpPdk(), GetTypeId(), and StartCycle().

◆ m_numRates

uint32_t ns3::UanMacRcGw::m_numRates
private

Number of rates per Phy layer.

Definition at line 132 of file uan-mac-rc-gw.h.

Referenced by GetTypeId(), and StartCycle().

◆ m_phy

Ptr<UanPhy> ns3::UanMacRcGw::m_phy
private

PHY layer attached to this MAC.

Definition at line 128 of file uan-mac-rc-gw.h.

Referenced by AttachPhy(), Clear(), EndCycle(), SendPacket(), and StartCycle().

◆ m_propDelay

std::map<Mac8Address, Time> ns3::UanMacRcGw::m_propDelay
private

Propagation delay to each node.

Definition at line 148 of file uan-mac-rc-gw.h.

Referenced by Clear(), GetExpPdk(), and ReceivePacket().

◆ m_rateStep

uint32_t ns3::UanMacRcGw::m_rateStep
private

Increments available for rate assignment in bps.

Definition at line 141 of file uan-mac-rc-gw.h.

Referenced by GetTypeId(), and StartCycle().

◆ m_requests

std::map<Mac8Address, Request> ns3::UanMacRcGw::m_requests
private

Request for each node.

Definition at line 154 of file uan-mac-rc-gw.h.

Referenced by Clear(), ReceivePacket(), and StartCycle().

◆ m_retryStep

double ns3::UanMacRcGw::m_retryStep
private

Retry rate increment.

Definition at line 145 of file uan-mac-rc-gw.h.

Referenced by GetTypeId(), and StartCycle().

◆ m_rtsSize

uint32_t ns3::UanMacRcGw::m_rtsSize
private

Size of UanHeaderCommon and UanHeaderRcRts.

Definition at line 133 of file uan-mac-rc-gw.h.

Referenced by ComputeAlpha(), ComputeExpS(), StartCycle(), and UanMacRcGw().

◆ m_rxLogger

TracedCallback<Ptr<const Packet>, UanTxMode > ns3::UanMacRcGw::m_rxLogger
private

A packet was destined for and received at this MAC layer.

Definition at line 162 of file uan-mac-rc-gw.h.

Referenced by GetTypeId(), and ReceivePacket().

◆ m_sifs

Time ns3::UanMacRcGw::m_sifs
private

Spacing between frames to account for timing error and processing delay.

Definition at line 130 of file uan-mac-rc-gw.h.

Referenced by ComputeAlpha(), ComputeExpS(), EndCycle(), GetTypeId(), and StartCycle().

◆ m_sortedRes

std::set<std::pair<Time, Mac8Address> > ns3::UanMacRcGw::m_sortedRes
private

Queued request times.

Definition at line 156 of file uan-mac-rc-gw.h.

Referenced by Clear(), ReceivePacket(), and StartCycle().

◆ m_state

State ns3::UanMacRcGw::m_state
private

Gateway processing state.

Definition at line 100 of file uan-mac-rc-gw.h.

Referenced by CycleStarted(), ReceivePacket(), and StartCycle().

◆ m_totalRate

uint32_t ns3::UanMacRcGw::m_totalRate
private

Total available channel rate in bps (for a single channel, without splitting reservation channel).

Definition at line 140 of file uan-mac-rc-gw.h.

Referenced by ComputeAlpha(), ComputeExpBOverA(), ComputeExpS(), GetTypeId(), and StartCycle().


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