QoSAwareScheduler Class Reference

Simu5G: QoSAwareScheduler Class Reference
Simu5G
QoSAwareScheduler Class Reference

#include <QoSAwareScheduler.h>

Static Public Member Functions

static std::vector< const DrbQosProfile * > collectUlGroupMembers (const std::map< DrbKey, DrbQosProfile > &drbQosMap, LteMacBase *mac, MacNodeId ueId, Lcg lcg)
static DrbQosProfile aggregateQosProfiles (const std::vector< const DrbQosProfile * > &members)

Detailed Description

QoS-aware proportional-fair scheduler: scores active CIDs with QoS weights derived from the per-DRB QoS profile. The weight reads the GBR flag, the packet delay budget and the priority level; the profile's packet error rate reaches the scheduler and is carried through a group's aggregate, but does not enter the weight. The profiles come from the MAC's DRB QoS map (see LteMacEnb::getDrbQosMap()), which RRC fills from the bearer configuration delivered to it (the staticDrbs parameter of the ~BearerConfigurator module).

A CID whose bearer has no QoS profile is scheduled with a neutral weight (plain proportional fair).

Member Function Documentation

◆ collectUlGroupMembers()

std::vector< const DrbQosProfile * > collectUlGroupMembers ( const std::map< DrbKey, DrbQosProfile > & drbQosMap,
LteMacBase * mac,
MacNodeId ueId,
Lcg lcg )
static

The QoS profiles of the DRBs behind one uplink logical channel group: the join of the MAC's configured-DRB profiles with its established channels' group assignment. A configured-but-unestablished DRB has no channel config yet and is skipped, so the result is empty when no established DRB of the UE belongs to the group.

◆ aggregateQosProfiles()

DrbQosProfile aggregateQosProfiles ( const std::vector< const DrbQosProfile * > & members)
static

The weight-relevant profile of a group of bearers: the most demanding member on each axis – the lowest (= most important) priority level, GBR if any member is GBR, the tightest delay budget and error target. Used to weigh an uplink (UE, LCG) pseudo-connection by the DRBs behind it.