Package: inet.showcases.tsn.trafficshaping.underthehood
PeekingUnderTheHoodShowcase
network(no description)
Usage diagram
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| numSources | int |
Properties
| Name | Value | Description |
|---|---|---|
| isNetwork |
Unassigned submodule parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| source.displayStringTextFormat | string | "created %p pk (%l)" |
determines the text that is written on top of the submodule |
| source.packetNameFormat | string | "%a-%c" |
see directives in module documentation |
| source.packetRepresentation | string | "byteCount" |
determines the chunk of the packet data |
| source.packetLength | int | ||
| source.packetData | int | -1 | |
| source.attachCreationTimeTag | bool | true | |
| source.attachIdentityTag | bool | true | |
| source.attachDirectionTag | bool | true | |
| source.clockModule | string | "" |
relative path of a module that implements IClock(1,2); optional |
| source.initialProductionOffset | double | 0s | |
| source.productionInterval | double |
elapsed time between subsequent packets pushed to the connected packet consumer |
|
| source.scheduleForAbsoluteTime | bool | true |
when a clock is used relative means that setting the clock will not affect the simulation time of the event |
| meter.displayStringTextFormat | string | "metered %p pk (%l)" |
determines the text that is written on top of the submodule |
| meter.clockModule | string | "" |
relative path of a module that implements IClock(1,2); optional |
| meter.packetOverheadLength | int | 0b |
extra packet length taken into account, can be used to represent overhead added by lower layers |
| meter.committedInformationRate | double |
committed information rate of the packet flow |
|
| meter.committedBurstSize | int |
committed burst size of the packet flow |
|
| meter.maxResidenceTime | double | -1s |
maximum packet residence time measured from the packet arrival time to the meter module to the transmission eligiblity time, not used by default |
| multiplexer.displayStringTextFormat | string | "passed %p pk (%l)" |
determines the text that is written on top of the submodule |
| multiplexer.forwardServiceRegistration | bool | true | |
| multiplexer.forwardProtocolRegistration | bool | true | |
| filter.displayStringTextFormat | string | "dropped %d/%p pk (%k/%l)" |
determines the text that is written on top of the submodule |
| filter.backpressure | bool | false | |
| filter.clockModule | string | "" |
relative path of a module that implements IClock(1,2); optional |
| filter.maxResidenceTime | double | -1s |
optional max residence time limit, not used by default |
| 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 |
| 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 | "inet::PacketEligibilityTimeComparator" |
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 | "passed %p pk (%l)" |
determines the text that is written on top of the submodule |
| gate.bitrate | double | nan bps | |
| gate.extraLength | int | 0b | |
| gate.extraDuration | double | 0s | |
| gate.clockModule | string | "" |
relative path of a module that implements IClock(1,2); optional |
| server.displayStringTextFormat | string | "served %p pk (%l)\n%s" |
determines the text that is written on top of the submodule |
| server.clockModule | string | "" |
relative path of a module that implements IClock(1,2); optional |
| server.processingTime | double |
determines additional processing time per packet |
|
| server.processingBitrate | double | inf bps |
determines additional processing time per bit |
| sink.displayStringTextFormat | string | "received %p pk (%l)" |
determines the text that is written on top of the submodule |
| sink.clockModule | string | "" |
relative path of a module that implements IClock(1,2); optional |
| sink.consumptionInterval | double | 0s |
elapsed time between subsequent packets allowed to be pushed by the connected packet producer, 0 means any number of packets can be pushed at the same simulation time |
| sink.scheduleForAbsoluteTime | bool | true |
when a clock is used relative means that setting the clock will not affect the simulation time of the event |
Source code
network PeekingUnderTheHoodShowcase { parameters: int numSources; submodules: source[numSources]: ActivePacketSource { @display("p=100,100,col,150"); } meter[numSources]: EligibilityTimeMeter { @display("p=300,100,col,150"); } multiplexer: PacketMultiplexer { @display("p=500,100"); } filter: EligibilityTimeFilter { @display("p=700,100"); } queue: EligibilityTimeQueue { @display("p=900,100"); } gate: EligibilityTimeGate { @display("p=1100,100"); } server: PacketServer { @display("p=1300,100"); } sink: PassivePacketSink { @display("p=1500,100"); } connections: for i=0..numSources-1 { source[i].out --> meter[i].in; meter[i].out --> multiplexer.in++; } multiplexer.out --> filter.in; filter.out --> queue.in; queue.out --> gate.in; gate.out --> server.in; server.out --> sink.in; }File: showcases/tsn/trafficshaping/underthehood/PeekingUnderTheHoodShowcase.ned