PeriodicGate

Package: inet.queueing.gate

PeriodicGate

simple module

This module allows or forbids packets to pass through depending on whether the gate is open or closed. The gate is open and closed according to the list of change times periodically.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Extends

Name Type Description
PacketGateBase simple module

This is a base module for various packet gate modules.

Parameters

Name Type Default value Description
displayStringTextFormat string "passed %p pk (%l)"

determines the text that is written on top of the submodule

bitrate double nan bps
extraLength int 0b
extraDuration double 0s
clockModule string ""

relative path of a module that implements IClock; optional

initiallyOpen bool true

specifies if the gate is initially open or closed

offset double 0s

specifies where the period starts in the list of gate state change durations; where it is in the period at the start

durations object []

list of time durations within the period that determine if the gate is open or closed; period is the sum of the durations

scheduleForAbsoluteTime bool true

when a clock is used relative means that setting the clock will not affect the simulation time of the event

openSchedulingPriority int 0

FES scheduling priority for the next gate open event

closeSchedulingPriority int 0

FES scheduling priority for the next gate close event

enableImplicitGuardBand bool true

implicit guard band means that a packet is not allowed to be forwarded if it cannot finish transmission before the end of window.

Properties

Name Value Description
display i=block/cogwheel
class PeriodicGate

Gates

Name Direction Size Description
in input
out output

Signals

Name Type Unit
guardBandStateChanged bool

Statistics

Name Title Source Record Unit Interpolation Mode
guardBandState guard band state guardBandStateChanged vector sample-hold

Scheduled messages (observed)

msgkindctrltagsmsgnamecontext
ClockEvent0ChangeTimer

Direct method calls (observed)

call tofunctioninfo
LayeredEthernetInterfaceinet::NetworkInterface::receiveSignalPOST_MODEL_CHANGE
Ieee8021qAsynchronousShaperinet::EligibilityTimeGate::pullPacketpullPacket
Ieee8021qCreditBasedShaperinet::queueing::CreditBasedGate::handleCanPushPacketChangedhandleCanPushPacketChanged
Ieee8021qCreditBasedShaperinet::queueing::CreditBasedGate::pullPacketpullPacket
Ieee8021qCreditBasedShaperinet::queueing::CreditBasedGate::receiveSignalgateStateChanged
Ieee8021qCreditBasedShaperinet::queueing::CreditBasedGate::receiveSignalguardBandStateChanged
PeriodicGateinet::queueing::PeriodicGate::handleCanPullPacketChangedhandleCanPullPacketChanged
DropTailQueueinet::queueing::PacketQueue::pullPacketpullPacket
PacketQueueinet::queueing::PacketQueue::pullPacketpullPacket
PrioritySchedulerinet::queueing::PriorityScheduler::handleCanPullPacketChangedhandleCanPullPacketChanged

Called methods (observed)

functioninfocall from
inet::queueing::PeriodicGate::handleCanPullPacketChangedhandleCanPullPacketChangedIeee8021qAsynchronousShaper, Ieee8021qCreditBasedShaper, PeriodicGate, DropTailQueue, PacketQueue
inet::queueing::PeriodicGate::pullPacketpullPacketPriorityScheduler

Pull in messages (observed)

gatemsgkindctrlsrcModuletags
inPacket0Ieee8021qAsynchronousShaperDirectionTag, DropEligibleReq, EligibilityTimeTag, EncapsulationProtocolReq, InterfaceInd, InterfaceReq, MacAddressReq, PacketProtocolTag, PcpReq, StreamReq, UserPriorityReq, VlanReq
inPacket0Ieee8021qCreditBasedShaperCreditGateTag, DirectionTag, EncapsulationProtocolReq, InterfaceInd, InterfaceReq, MacAddressReq, PacketProtocolTag, DropEligibleInd?, DropEligibleReq?, PcpInd?, PcpReq?, StreamReq?, UserPriorityInd?, UserPriorityReq?, VlanInd?, VlanReq?
inPacket0DropTailQueueDirectionTag, InterfaceReq, MacAddressReq, PacketProtocolTag, DispatchProtocolInd?, DropEligibleInd?, EncapsulationProtocolReq?, InterfaceInd?, MulticastReq?, NetworkProtocolInd?, PcpInd?, SequenceNumberInd?, StreamReq?, TransportProtocolInd?, UserPriorityInd?, VlanInd?
inPacket0PacketQueueDirectionTag, EncapsulationProtocolReq, InterfaceInd, InterfaceReq, MacAddressReq, PacketProtocolTag, DropEligibleInd?, DropEligibleReq?, PcpInd?, PcpReq?, StreamReq?, UserPriorityInd?, UserPriorityReq?, VlanInd?, VlanReq?

Pulled out messages (observed)

gatemsgkindctrldestModuletags
outPacket0PrioritySchedulerDirectionTag, InterfaceReq, MacAddressReq, PacketProtocolTag, CreditGateTag?, DispatchProtocolInd?, DropEligibleInd?, DropEligibleReq?, EligibilityTimeTag?, EncapsulationProtocolReq?, InterfaceInd?, MulticastReq?, NetworkProtocolInd?, PcpInd?, PcpReq?, SequenceNumberInd?, StreamReq?, TransportProtocolInd?, UserPriorityInd?, UserPriorityReq?, VlanInd?, VlanReq?

Region Tagging operations (observed)

tagTypetagAction
FlowTagmapAllTags

Source code

//
// This module allows or forbids packets to pass through depending on whether
// the gate is open or closed. The gate is open and closed according to the list
// of change times periodically.
//
simple PeriodicGate extends PacketGateBase like IPacketGate
{
    parameters:
        string clockModule = default(""); // relative path of a module that implements IClock; optional
        bool initiallyOpen @mutable = default(true); // specifies if the gate is initially open or closed
        double offset @mutable @unit(s) = default(0s); // specifies where the period starts in the list of gate state change durations; where it is in the period at the start
        object durations @mutable @unit(s) = default([]); // list of time durations within the period that determine if the gate is open or closed; period is the sum of the durations
        bool scheduleForAbsoluteTime = default(true); // when a clock is used relative means that setting the clock will not affect the simulation time of the event
        int openSchedulingPriority = default(0); // FES scheduling priority for the next gate open event
        int closeSchedulingPriority = default(0); // FES scheduling priority for the next gate close event
        bool enableImplicitGuardBand = default(true); // implicit guard band means that a packet is not allowed to be forwarded if it cannot finish transmission before the end of window.
        @class(PeriodicGate);
        @signal[guardBandStateChanged](type=bool);
        @statistic[guardBandState](title="guard band state"; type=enum; enum=ON,OFF; source=guardBandStateChanged; record=vector; interpolationmode=sample-hold);
}
File: src/inet/queueing/gate/PeriodicGate.ned