CreditBasedShaper¶
Package: inet.queueing.shaper
compound module CreditBasedShaper
Implements a credit-based shaper using a gate submodule to manage the number of credits.
See also: CreditBasedGate
Inheritance diagram¶
Extends¶
Name |
Type |
Description |
|---|---|---|
compound module |
Combines a packet queue and a packet gate into a packet shaper module. The queue stores the packets sorted according to its ordering and the gate decides when the first packet can be pulled from the queue. |
Properties¶
Name |
Value |
Description |
|---|---|---|
display |
i=block/bucket |
Gates¶
Name |
Direction |
Size |
Description |
|---|---|---|---|
in |
input |
||
out |
output |
Unassigned submodule parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
queue.displayStringTextFormat |
string |
“contains %p pk (%l) pushed %u\npulled %o removed %r dropped %d” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
queue.packetCapacity |
int |
-1 |
Maximum number of packets in the queue, no limit by default |
queue.dataCapacity |
int |
-1b |
Maximum total length of packets in the queue, no limit by default |
queue.dropperClass |
string |
“” |
Determines which packets are dropped when the queue is overloaded, packets are not dropped by default; the parameter must be the name of a C++ class which implements the IPacketDropperFunction C++ interface and is registered via Register_Class |
queue.comparatorClass |
string |
“” |
Determines the order of packets in the queue, insertion order by default; the parameter must be the name of a C++ class which implements the IPacketComparatorFunction C++ interface and is registered via Register_Class |
queue.bufferModule |
string |
“” |
Relative module path to the IPacketBuffer module used by this queue, implicit buffer by default |
gate.displayStringTextFormat |
string |
“contains {currentCredit} cr, rate {currentCreditGainRate} crps\nserved %p pk (%l)” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
gate.bitrate |
double |
nan bps |
|
gate.extraLength |
int |
0b |
|
gate.extraDuration |
double |
0s |
|
gate.idleCreditGainRate |
double |
Rate of credit increase while the packets that passed through this gate don’t use the physical channel |
|
gate.transmitCreditSpendRate |
double |
Rate of credit decrease while the packets that passed through this gate use the physical channel |
|
gate.initialCredit |
double |
0 |
Initial number of credits |
gate.transmitCreditLimit |
double |
0 |
Credit limit above which the gate is open |
gate.minCredit |
double |
-inf |
Minimum number of credits |
gate.maxCredit |
double |
inf |
Maximum number of credits |
gate.accumulateCreditInGuardBand |
bool |
false |
Whether credit increases during implicit guard band when no packets can be sent anymore |
Source code¶
//
// Implements a credit-based shaper using a gate submodule to manage
// the number of credits.
//
// @see ~CreditBasedGate
//
module CreditBasedShaper extends PacketShaper
{
parameters:
gate.typename = default("CreditBasedGate");
}