A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ns3::UplinkSchedulerMBQoS Class Reference

This class implements a Migration-based Quality of Service uplink scheduler(MBQoS). More...

#include <bs-uplink-scheduler-mbqos.h>

+ Inheritance diagram for ns3::UplinkSchedulerMBQoS:

Public Member Functions

 UplinkSchedulerMBQoS (Time time)
 
void AddUplinkAllocation (OfdmUlMapIe &ulMapIe, const uint32_t &allocationSize, uint32_t &symbolsToAllocation, uint32_t &availableSymbols)
 
void AllocateInitialRangingInterval (uint32_t &symbolsToAllocation, uint32_t &availableSymbols)
 
uint32_t CalculateAllocationStartTime (void)
 
void CheckDeadline (uint32_t &availableSymbols)
 Check deadline from jobs. Migrate requests if necessary. More...
 
void CheckMinimumBandwidth (uint32_t &availableSymbols)
 Check if Minimum bandwidth is guarantee. Migrate requests if necessary. More...
 
uint32_t CountSymbolsJobs (Ptr< UlJob > job)
 
uint32_t CountSymbolsQueue (std::list< Ptr< UlJob > > jobs)
 
Ptr< UlJobCreateUlJob (SSRecord *ssRecord, enum ServiceFlow::SchedulingType schedType, ReqType reqType)
 
Ptr< UlJobDequeueJob (UlJob::JobPriority priority)
 Dequeue a job from a priority queue. More...
 
Time DetermineDeadline (ServiceFlow *serviceFlow)
 Calculates deadline of a request. More...
 
void EnqueueJob (UlJob::JobPriority priority, Ptr< UlJob > job)
 Enqueue a job in a priority queue. More...
 
void GetChannelDescriptorsToUpdate (bool &, bool &, bool &, bool &)
 
uint32_t GetPendingSize (ServiceFlow *serviceFlow)
 
std::list< OfdmUlMapIeGetUplinkAllocations (void) const
 
void InitOnce (void)
 
void OnSetRequestedBandwidth (ServiceFlowRecord *sfr)
 
void ProcessBandwidthRequest (const BandwidthRequestHeader &bwRequestHdr)
 
void Schedule (void)
 
void ServiceBandwidthRequests (const SSRecord *ssRecord, enum ServiceFlow::SchedulingType schedulingType, OfdmUlMapIe &ulMapIe, const WimaxPhy::ModulationType modulationType, uint32_t &symbolsToAllocation, uint32_t &availableSymbols)
 
bool ServiceBandwidthRequests (ServiceFlow *serviceFlow, enum ServiceFlow::SchedulingType schedulingType, OfdmUlMapIe &ulMapIe, const WimaxPhy::ModulationType modulationType, uint32_t &symbolsToAllocation, uint32_t &availableSymbols)
 
bool ServiceBandwidthRequestsBytes (ServiceFlow *serviceFlow, enum ServiceFlow::SchedulingType schedulingType, OfdmUlMapIe &ulMapIe, const WimaxPhy::ModulationType modulationType, uint32_t &symbolsToAllocation, uint32_t &availableSymbols, uint32_t allocationSizeBytes)
 
void ServiceUnsolicitedGrants (const SSRecord *ssRecord, enum ServiceFlow::SchedulingType schedulingType, OfdmUlMapIe &ulMapIe, const WimaxPhy::ModulationType modulationType, uint32_t &symbolsToAllocation, uint32_t &availableSymbols)
 
void SetupServiceFlow (SSRecord *ssRecord, ServiceFlow *serviceFlow)
 
void UplinkSchedWindowTimer (void)
 Reset the current window. According to a configured time, reset the window.
 
- Public Member Functions inherited from ns3::Object
void AggregateObject (Ptr< Object > other)
 
void Dispose (void)
 
AggregateIterator GetAggregateIterator (void) const
 
virtual TypeId GetInstanceTypeId (void) const
 
template<typename T >
Ptr< T > GetObject (void) const
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 
void Initialize (void)
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount (const SimpleRefCount &o)
 
uint32_t GetReferenceCount (void) const
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 
void Ref (void) const
 
void Unref (void) const
 
- Public Member Functions inherited from ns3::ObjectBase
void GetAttribute (std::string name, AttributeValue &value) const
 
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
 
void SetAttribute (std::string name, const AttributeValue &value)
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 

Static Public Member Functions

static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
static void Cleanup (void)
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 

Private Attributes

std::list< OfdmUlMapIem_uplinkAllocations
 
std::list< Ptr< UlJob > > m_uplinkJobs_high
 
std::list< Ptr< UlJob > > m_uplinkJobs_inter
 
std::list< Ptr< UlJob > > m_uplinkJobs_low
 
Time m_windowInterval
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 
virtual void DoDispose (void)
 
virtual void DoInitialize (void)
 
virtual void NotifyNewAggregate (void)
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 
virtual void NotifyConstructionCompleted (void)
 

Detailed Description

This class implements a Migration-based Quality of Service uplink scheduler(MBQoS).

This uplink scheduler uses three queues, the low priority queue, the intermediate queue and the high priority queue. The scheduler serves the requests in strict priority order from the high priority queue to the low priority queue. The low priority queue stores the bandwidth requests of the BE service flow. The intermediate queue holds bandwidth requests sent by rtPS and by nrtPS connections. rtPS and nrtPS requests can migrate to the high priority queue to guarantee that their QoS requirements are met. Besides the requests migrated from the intermediate queue, the high priority queue stores periodic grants and unicast request opportunities that must be scheduled in the following frame. To guarantee the maximum delay requirement, the BS assigns a deadline to each rtPS bandwidth request in the intermediate queue. The minimum bandwidth requirement of both rtPS and nrtPS connections is guaranteed over a window of duration T . Implementation of uplink scheduler: Freitag, J.; da Fonseca, N.L.S., "Uplink Scheduling with Quality of Service in IEEE 802.16 Networks," Global Telecommunications Conference, 2007. GLOBECOM '07. IEEE , vol., no., pp.2503-2508, 26-30 Nov. 2007 URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4411386&isnumber=4410910

Config Paths

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

  • /NodeList/[i]/DeviceList/[i]/$ns3::BaseStationNetDevice/UplinkScheduler/$ns3::UplinkSchedulerMBQoS
  • /NodeList/[i]/DeviceList/[i]/$ns3::WimaxNetDevice/$ns3::BaseStationNetDevice/UplinkScheduler/$ns3::UplinkSchedulerMBQoS

Attributes

  • WindowInterval: The time to wait to reset window
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +1000000000.0ns
    • Flags: construct write read

No TraceSources are defined for this type.

Definition at line 69 of file bs-uplink-scheduler-mbqos.h.

Member Function Documentation

void ns3::UplinkSchedulerMBQoS::CheckDeadline ( uint32_t &  availableSymbols)

Check deadline from jobs. Migrate requests if necessary.

Parameters
availableSymbolsavailable symbols in the uplink frame This method verifies for each rtPS request whether it should be migrated to the high priority queue or not. The conditions for migration are: request deadline expires in the frame following the next one, and the amount of bandwidth requested is less than or equal to the amount of available bytes in the next uplink frame.

Definition at line 648 of file bs-uplink-scheduler-mbqos.cc.

References EnqueueJob(), ns3::Simulator::Now(), and NS_LOG_DEBUG.

void ns3::UplinkSchedulerMBQoS::CheckMinimumBandwidth ( uint32_t &  availableSymbols)

Check if Minimum bandwidth is guarantee. Migrate requests if necessary.

Parameters
availableSymbolsavailable symbols in the uplink frame. This method first calculate a priority value for each request in the intermediate queue. Then, sorts the intermediate queue according to the priority values. Finally, while there is available bandwidth, the scheduler migrate the requests to the high priority queue.

Definition at line 736 of file bs-uplink-scheduler-mbqos.cc.

References CountSymbolsJobs(), and EnqueueJob().

uint32_t ns3::UplinkSchedulerMBQoS::CountSymbolsJobs ( Ptr< UlJob job)
Parameters
jobjob

Count the amount of symbols of a job.

Definition at line 570 of file bs-uplink-scheduler-mbqos.cc.

References ns3::ServiceFlowRecord::GetGrantTimeStamp(), and ns3::Simulator::Now().

Referenced by CheckMinimumBandwidth(), and CountSymbolsQueue().

uint32_t ns3::UplinkSchedulerMBQoS::CountSymbolsQueue ( std::list< Ptr< UlJob > >  jobs)
Parameters
jobsList of jobs

Sum the amount of symbols of each job of a queue

Definition at line 545 of file bs-uplink-scheduler-mbqos.cc.

References CountSymbolsJobs().

Ptr< UlJob > ns3::UplinkSchedulerMBQoS::CreateUlJob ( SSRecord ssRecord,
enum ServiceFlow::SchedulingType  schedType,
ReqType  reqType 
)
Parameters
ssRecordSubscriber station record
schedTypeService flow type
reqTypeType of packet

Create and fill information of a job.

Definition at line 559 of file bs-uplink-scheduler-mbqos.cc.

Ptr< UlJob > ns3::UplinkSchedulerMBQoS::DequeueJob ( UlJob::JobPriority  priority)

Dequeue a job from a priority queue.

Parameters
priorityPriority of queue

Definition at line 627 of file bs-uplink-scheduler-mbqos.cc.

Time ns3::UplinkSchedulerMBQoS::DetermineDeadline ( ServiceFlow serviceFlow)

Calculates deadline of a request.

Parameters
serviceFlowService flow of connection

Definition at line 1145 of file bs-uplink-scheduler-mbqos.cc.

References ns3::MilliSeconds().

void ns3::UplinkSchedulerMBQoS::EnqueueJob ( UlJob::JobPriority  priority,
Ptr< UlJob job 
)

Enqueue a job in a priority queue.

Parameters
priorityPriority of queue
jobjob information

Definition at line 611 of file bs-uplink-scheduler-mbqos.cc.

Referenced by CheckDeadline(), and CheckMinimumBandwidth().

void ns3::UplinkSchedulerMBQoS::GetChannelDescriptorsToUpdate ( bool &  updateDcd,
bool &  updateUcd,
bool &  sendDcd,
bool &  sendUcd 
)
virtual

Determines if channel descriptors sent in the current frame are required to be updated

Implements ns3::UplinkScheduler.

Definition at line 82 of file bs-uplink-scheduler-mbqos.cc.

References ns3::Simulator::Now().

void ns3::UplinkSchedulerMBQoS::InitOnce ( void  )
virtual

This method is called once to initialize window.

Implements ns3::UplinkScheduler.

Definition at line 70 of file bs-uplink-scheduler-mbqos.cc.

References UplinkSchedWindowTimer().


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