This class implements a simple downlink scheduler for rtPS flows. More...
#include "bs-scheduler-rtps.h"
Public Member Functions | |
BSSchedulerRtps () | |
BSSchedulerRtps (Ptr< BaseStationNetDevice > bs) | |
Constructor. | |
~BSSchedulerRtps () override | |
void | AddDownlinkBurst (Ptr< const WimaxConnection > connection, uint8_t diuc, WimaxPhy::ModulationType modulationType, Ptr< PacketBurst > burst) override |
This function adds a downlink burst to the list of downlink bursts scheduled for the next downlink sub-frame. | |
void | BSSchedulerBasicConnection (uint32_t &availableSymbols) |
schedules the basic connections | |
void | BSSchedulerBEConnection (uint32_t &availableSymbols) |
schedules the BE connection | |
void | BSSchedulerBroadcastConnection (uint32_t &availableSymbols) |
schedules the broadcast connections | |
void | BSSchedulerInitialRangingConnection (uint32_t &availableSymbols) |
schedules the IR connections | |
void | BSSchedulerNRTPSConnection (uint32_t &availableSymbols) |
schedules the NRTPS connections | |
void | BSSchedulerPrimaryConnection (uint32_t &availableSymbols) |
schedules the primary connection | |
void | BSSchedulerRTPSConnection (uint32_t &availableSymbols) |
Downlink Scheduler for rtPS connections. | |
void | BSSchedulerUGSConnection (uint32_t &availableSymbols) |
schedules the UGS connection | |
Ptr< PacketBurst > | CreateUgsBurst (ServiceFlow *serviceFlow, WimaxPhy::ModulationType modulationType, uint32_t availableSymbols) override |
Creates a downlink UGS burst. | |
std::list< std::pair< OfdmDlMapIe *, Ptr< PacketBurst > > > * | GetDownlinkBursts () const override |
This function returns all the downlink bursts scheduled for the next downlink sub-frame. | |
void | Schedule () override |
Schedule function. | |
bool | SelectBEConnection (Ptr< WimaxConnection > &connection) |
Check for BE connections that have packets to transmit. | |
bool | SelectConnection (Ptr< WimaxConnection > &connection) override |
Selects a connection from the list of connections having packets to be sent . | |
bool | SelectIRandBCConnection (Ptr< WimaxConnection > &connection) |
Check for IR and Broadcast connections that have packets to transmit. | |
bool | SelectMenagementConnection (Ptr< WimaxConnection > &connection) |
Check for Basic and Primary connections that have packets to transmit. | |
bool | SelectNRTPSConnection (Ptr< WimaxConnection > &connection) |
Check for nrtPS connections that have packets to transmit. | |
bool | SelectRTPSConnection (Ptr< WimaxConnection > &connection) |
Check for rtPS connections that have packets to transmit. | |
bool | SelectUGSConnection (Ptr< WimaxConnection > &connection) |
Check for UGS connections that have packets to transmit. | |
Public Member Functions inherited from ns3::BSScheduler | |
BSScheduler () | |
BSScheduler (Ptr< BaseStationNetDevice > bs) | |
Constructor. | |
~BSScheduler () override | |
virtual void | AddDownlinkBurst (Ptr< const WimaxConnection > connection, uint8_t diuc, WimaxPhy::ModulationType modulationType, Ptr< PacketBurst > burst)=0 |
This function adds a downlink burst to the list of downlink bursts scheduled for the next downlink sub-frame. | |
bool | CheckForFragmentation (Ptr< WimaxConnection > connection, int availableSymbols, WimaxPhy::ModulationType modulationType) |
Check if the packet fragmentation is possible for transport connection. | |
virtual Ptr< PacketBurst > | CreateUgsBurst (ServiceFlow *serviceFlow, WimaxPhy::ModulationType modulationType, uint32_t availableSymbols)=0 |
Creates a downlink UGS burst. | |
virtual Ptr< BaseStationNetDevice > | GetBs () |
Get the base station. | |
virtual std::list< std::pair< OfdmDlMapIe *, Ptr< PacketBurst > > > * | GetDownlinkBursts () const =0 |
This function returns all the downlink bursts scheduled for the next downlink sub-frame. | |
virtual void | Schedule ()=0 |
the scheduling function for the downlink subframe. | |
virtual bool | SelectConnection (Ptr< WimaxConnection > &connection)=0 |
Selects a connection from the list of connections having packets to be sent . | |
virtual void | SetBs (Ptr< BaseStationNetDevice > bs) |
Set the base station. | |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. | |
~Object () override | |
Destructor. | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. | |
void | Dispose () |
Dispose of this Object. | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. | |
bool | IsInitialized () const |
Check if the object has been initialized. | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. | |
void | Ref () const |
Increment the reference count. | |
void | Unref () const |
Decrement the reference count. | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. | |
virtual TypeId | GetInstanceTypeId () const =0 |
Get the most derived TypeId for this Object. | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Get the type ID. | |
Static Public Member Functions inherited from ns3::BSScheduler | |
static TypeId | GetTypeId () |
Get the type ID. | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId () |
Register this type. | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. | |
Private Attributes | |
std::list< std::pair< OfdmDlMapIe *, Ptr< PacketBurst > > > * | m_downlinkBursts |
down link bursts | |
Additional Inherited Members | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. | |
virtual void | DoDispose () |
Destructor implementation. | |
virtual void | DoInitialize () |
Initialize() implementation. | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. | |
This class implements a simple downlink scheduler for rtPS flows.
The DL-rtPS-Scheduler assigns the available bandwidth the service flows in the following order: IR Connections, Broadcast Connections, Basic and Primary Connections, UGS Connections, rtPS Connections, nrtPS Connections, BE Connections. The IR, Broadcast and Basic/Primary Connections must transmit all packet in the queue. The UGS flows can transmit the quota of date equal to the "Grant Size" (that is one of service flows QoS parameters) according to their requested MaxLatency (another QoS parameter). All rtPS flows are able to transmit all packet in the queue according to the available bandwidth. The bandwidth saturation control has been implemented to redistribute the effective available bandwidth to all rtPS flows that have at least one packet to transmit. The remaining bandwidth is allocated to rntPS and BE Connections.
ns3::BSSchedulerRtps is accessible through the following paths with Config::Set and Config::Connect:
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 60 of file bs-scheduler-rtps.h.
ns3::BSSchedulerRtps::BSSchedulerRtps | ( | ) |
Definition at line 57 of file bs-scheduler-rtps.cc.
References ns3::BSScheduler::SetBs().
ns3::BSSchedulerRtps::BSSchedulerRtps | ( | Ptr< BaseStationNetDevice > | bs | ) |
Constructor.
bs | base station device |
Definition at line 63 of file bs-scheduler-rtps.cc.
References ns3::BSScheduler::SetBs().
|
override |
Definition at line 71 of file bs-scheduler-rtps.cc.
References m_downlinkBursts, and ns3::BSScheduler::SetBs().
|
overridevirtual |
This function adds a downlink burst to the list of downlink bursts scheduled for the next downlink sub-frame.
connection | a pointer to connection in which the burst will be sent |
diuc | downlink iuc |
modulationType | the modulation type of the burst |
burst | the downlink burst to add to the downlink sub frame |
Implements ns3::BSScheduler.
Definition at line 94 of file bs-scheduler-rtps.cc.
References m_downlinkBursts, NS_LOG_INFO, ns3::OfdmDlMapIe::SetCid(), ns3::OfdmDlMapIe::SetDiuc(), and ns3::Cid::TRANSPORT.
Referenced by BSSchedulerBasicConnection(), BSSchedulerBEConnection(), BSSchedulerBroadcastConnection(), BSSchedulerInitialRangingConnection(), BSSchedulerNRTPSConnection(), BSSchedulerPrimaryConnection(), BSSchedulerRTPSConnection(), and BSSchedulerUGSConnection().
void ns3::BSSchedulerRtps::BSSchedulerBasicConnection | ( | uint32_t & | availableSymbols | ) |
schedules the basic connections
availableSymbols | the remaining free OFDM symbols in the current subframe |
Definition at line 312 of file bs-scheduler-rtps.cc.
References AddDownlinkBurst(), ns3::Cid::BASIC, ns3::BSScheduler::CheckForFragmentation(), ns3::WimaxNetDevice::DIRECTION_DOWNLINK, ns3::OfdmDlBurstProfile::DIUC_BURST_PROFILE_1, ns3::BSScheduler::GetBs(), ns3::GenericMacHeader::GetCid(), ns3::MacHeaderType::HEADER_TYPE_GENERIC, ns3::WimaxPhy::MODULATION_TYPE_BPSK_12, and NS_ASSERT_MSG.
Referenced by Schedule().
void ns3::BSSchedulerRtps::BSSchedulerBEConnection | ( | uint32_t & | availableSymbols | ) |
schedules the BE connection
availableSymbols | the remaining free OFDM symbols in the current subframe |
Definition at line 695 of file bs-scheduler-rtps.cc.
References AddDownlinkBurst(), ns3::WimaxNetDevice::DIRECTION_DOWNLINK, ns3::BSScheduler::GetBs(), ns3::GenericMacHeader::GetCid(), ns3::WimaxPhy::MODULATION_TYPE_BPSK_12, ns3::Cid::MULTICAST, NS_ASSERT_MSG, and ns3::ServiceFlow::SF_TYPE_BE.
Referenced by Schedule().
void ns3::BSSchedulerRtps::BSSchedulerBroadcastConnection | ( | uint32_t & | availableSymbols | ) |
schedules the broadcast connections
availableSymbols | the remaining free OFDM symbols in the current subframe |
Definition at line 217 of file bs-scheduler-rtps.cc.
References AddDownlinkBurst(), ns3::BSScheduler::CheckForFragmentation(), ns3::OfdmDlBurstProfile::DIUC_BURST_PROFILE_1, ns3::BSScheduler::GetBs(), ns3::GenericMacHeader::GetCid(), ns3::Cid::GetIdentifier(), ns3::MacHeaderType::HEADER_TYPE_GENERIC, ns3::WimaxPhy::MODULATION_TYPE_BPSK_12, and NS_ASSERT_MSG.
Referenced by Schedule().
void ns3::BSSchedulerRtps::BSSchedulerInitialRangingConnection | ( | uint32_t & | availableSymbols | ) |
schedules the IR connections
availableSymbols | the remaining free OFDM symbols in the current subframe |
Definition at line 264 of file bs-scheduler-rtps.cc.
References AddDownlinkBurst(), ns3::BSScheduler::CheckForFragmentation(), ns3::OfdmDlBurstProfile::DIUC_BURST_PROFILE_1, ns3::BSScheduler::GetBs(), ns3::GenericMacHeader::GetCid(), ns3::MacHeaderType::HEADER_TYPE_GENERIC, ns3::WimaxPhy::MODULATION_TYPE_BPSK_12, and NS_ASSERT_MSG.
Referenced by Schedule().
void ns3::BSSchedulerRtps::BSSchedulerNRTPSConnection | ( | uint32_t & | availableSymbols | ) |
schedules the NRTPS connections
availableSymbols | the remaining free OFDM symbols in the current subframe |
Definition at line 637 of file bs-scheduler-rtps.cc.
References AddDownlinkBurst(), ns3::WimaxNetDevice::DIRECTION_DOWNLINK, ns3::BSScheduler::GetBs(), ns3::GenericMacHeader::GetCid(), ns3::WimaxPhy::MODULATION_TYPE_BPSK_12, ns3::Cid::MULTICAST, NS_ASSERT_MSG, and ns3::ServiceFlow::SF_TYPE_NRTPS.
Referenced by Schedule().
void ns3::BSSchedulerRtps::BSSchedulerPrimaryConnection | ( | uint32_t & | availableSymbols | ) |
schedules the primary connection
availableSymbols | the remaining free OFDM symbols in the current subframe |
Definition at line 374 of file bs-scheduler-rtps.cc.
References AddDownlinkBurst(), ns3::BSScheduler::CheckForFragmentation(), ns3::WimaxNetDevice::DIRECTION_DOWNLINK, ns3::BSScheduler::GetBs(), ns3::GenericMacHeader::GetCid(), ns3::MacHeaderType::HEADER_TYPE_GENERIC, ns3::WimaxPhy::MODULATION_TYPE_BPSK_12, NS_ASSERT_MSG, and ns3::Cid::PRIMARY.
Referenced by Schedule().
void ns3::BSSchedulerRtps::BSSchedulerRTPSConnection | ( | uint32_t & | availableSymbols | ) |
Downlink Scheduler for rtPS connections.
availableSymbols | available symbols for rtPS flows |
This method represent the DL Scheduler for rtPS connections. The scheduler is designed to serve all rtPS connections that have at least one packet to transmit, every DL Subframe. To each rtPS connections are allocated, at the beginning, the bandwidth to transmit a quota of data equal to the queue length. If the sum of all pre-allocated bandwidth exceed the available symbols for rtPS connections, the Channel Saturation Control function is called to redistribute the available bandwidth.
Definition at line 496 of file bs-scheduler-rtps.cc.
References AddDownlinkBurst(), ns3::BSScheduler::CheckForFragmentation(), ns3::WimaxNetDevice::DIRECTION_DOWNLINK, ns3::BSScheduler::GetBs(), ns3::GenericMacHeader::GetCid(), ns3::MacHeaderType::HEADER_TYPE_GENERIC, ns3::Cid::MULTICAST, ns3::Simulator::Now(), NS_ASSERT_MSG, NS_LOG_INFO, ns3::ServiceFlowRecord::SetDlTimeStamp(), and ns3::ServiceFlow::SF_TYPE_RTPS.
Referenced by Schedule().
void ns3::BSSchedulerRtps::BSSchedulerUGSConnection | ( | uint32_t & | availableSymbols | ) |
schedules the UGS connection
availableSymbols | the remaining free OFDM symbols in the current subframe |
Definition at line 435 of file bs-scheduler-rtps.cc.
References AddDownlinkBurst(), CreateUgsBurst(), ns3::WimaxNetDevice::DIRECTION_DOWNLINK, ns3::BSScheduler::GetBs(), ns3::ServiceFlowRecord::GetDlTimeStamp(), ns3::MilliSeconds(), ns3::WimaxPhy::MODULATION_TYPE_BPSK_12, ns3::Cid::MULTICAST, ns3::Simulator::Now(), ns3::ServiceFlowRecord::SetDlTimeStamp(), and ns3::ServiceFlow::SF_TYPE_UGS.
Referenced by Schedule().
|
overridevirtual |
Creates a downlink UGS burst.
serviceFlow | the service flow of the burst |
modulationType | the modulation type to be used for the burst |
availableSymbols | maximum number of OFDM symbols to be used by the burst |
Implements ns3::BSScheduler.
Definition at line 171 of file bs-scheduler-rtps.cc.
References ns3::BSScheduler::CheckForFragmentation(), ns3::BSScheduler::GetBs(), ns3::ServiceFlow::GetConnection(), ns3::ServiceFlow::HasPackets(), and ns3::MacHeaderType::HEADER_TYPE_GENERIC.
Referenced by BSSchedulerUGSConnection().
|
overridevirtual |
This function returns all the downlink bursts scheduled for the next downlink sub-frame.
Implements ns3::BSScheduler.
Definition at line 88 of file bs-scheduler-rtps.cc.
References m_downlinkBursts.
|
static |
Get the type ID.
Definition at line 48 of file bs-scheduler-rtps.cc.
References ns3::TypeId::SetParent().
|
overridevirtual |
Schedule function.
A DownLink Scheduler for rtPS Flows.
The DL Scheduler assigns the available bandwidth in the following order:
Implements ns3::BSScheduler.
Definition at line 132 of file bs-scheduler-rtps.cc.
References ns3::Cid::BASIC, BSSchedulerBasicConnection(), BSSchedulerBEConnection(), BSSchedulerBroadcastConnection(), BSSchedulerInitialRangingConnection(), BSSchedulerNRTPSConnection(), BSSchedulerPrimaryConnection(), BSSchedulerRTPSConnection(), BSSchedulerUGSConnection(), ns3::BSScheduler::GetBs(), ns3::GetSize(), m_downlinkBursts, NS_LOG_DEBUG, ns3::Cid::PRIMARY, ns3::ServiceFlow::SF_TYPE_ALL, ns3::ServiceFlow::SF_TYPE_NONE, and ns3::Cid::TRANSPORT.
bool ns3::BSSchedulerRtps::SelectBEConnection | ( | Ptr< WimaxConnection > & | connection | ) |
Check for BE connections that have packets to transmit.
connection | will point to a connection that has packets to be sent |
|
overridevirtual |
Selects a connection from the list of connections having packets to be sent .
connection | will point to a connection that has packets to be sent |
Implements ns3::BSScheduler.
Definition at line 211 of file bs-scheduler-rtps.cc.
bool ns3::BSSchedulerRtps::SelectIRandBCConnection | ( | Ptr< WimaxConnection > & | connection | ) |
Check for IR and Broadcast connections that have packets to transmit.
connection | will point to a initial ranging or broadcast connection which have packets to transmit |
bool ns3::BSSchedulerRtps::SelectMenagementConnection | ( | Ptr< WimaxConnection > & | connection | ) |
Check for Basic and Primary connections that have packets to transmit.
connection | will point to a basic or primary connection which have packets to transmit |
bool ns3::BSSchedulerRtps::SelectNRTPSConnection | ( | Ptr< WimaxConnection > & | connection | ) |
Check for nrtPS connections that have packets to transmit.
connection | will point to a connection that has packets to be sent |
bool ns3::BSSchedulerRtps::SelectRTPSConnection | ( | Ptr< WimaxConnection > & | connection | ) |
Check for rtPS connections that have packets to transmit.
connection | will point to a connection that has packets to be sent |
bool ns3::BSSchedulerRtps::SelectUGSConnection | ( | Ptr< WimaxConnection > & | connection | ) |
Check for UGS connections that have packets to transmit.
The method return the UGS connection that have packets to transmits, according to the MaxLatency specifications.
connection | will point to a connection that has packets to be sent |
|
private |
down link bursts
Definition at line 221 of file bs-scheduler-rtps.h.
Referenced by ~BSSchedulerRtps(), AddDownlinkBurst(), GetDownlinkBursts(), and Schedule().