EthernetApp¶
Package: inet.applications.ethernet
compound module EthernetApp
Generates traffic as an Ethernet application. The traffic source and traffic sink modules can be built from queueing model elements.
Usage diagram¶
Inheritance diagram¶
Known subclasses¶
Name |
Type |
Description |
|---|---|---|
compound module |
Implements an Ethernet application that only receives packets. |
|
compound module |
Implements an Ethernet application that only sends packets. |
Parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
interfaceTableModule |
string |
Relative module path of the interface table |
Properties¶
Name |
Value |
Description |
|---|---|---|
application |
||
display |
i=block/app |
Gates¶
Name |
Direction |
Size |
Description |
|---|---|---|---|
socketIn |
input |
||
socketOut |
output |
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, supports displaying pars, watches, and module-specific information |
source.packetNameFormat |
string |
“%a-%c” |
See directives in module documentation |
source.packetRepresentation |
string |
“byteCount” |
Determines the chunk of the packet data |
source.packetProtocol |
string |
“unknown” |
|
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,:ref:2 <neddoc-msg-inet-iclock>); optional |
source.initialProductionOffset |
double |
-1s |
Initial duration before which packets are not produced. When negative, then produce packet in initialize() |
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 |
sink.displayStringTextFormat |
string |
“received %p pk (%l)” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
sink.clockModule |
string |
“” |
Relative path of a module that implements IClock(1,:ref:2 <neddoc-msg-inet-iclock>); optional |
sink.initialConsumptionOffset |
double |
0s |
Initial duration before which packets are not consumed |
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 |
io.displayStringTextFormat |
string |
“rcvd: {numReceived} pks\nsent: {numSent} pks” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
io.interfaceTableModule |
string |
Relative module path of the interface table |
|
io.interface |
string |
“” |
Network interface name |
io.protocol |
string |
“” |
Bind the socket to this protocol if specified |
io.localAddress |
string |
“” |
Local Ethernet MAC address |
io.remoteAddress |
string |
“” |
Remote Ethernet MAC address |
io.steal |
bool |
false |
Steal packets |
io.stopOperationExtraTime |
double |
-1s |
Extra time after lifecycle stop operation finished |
io.stopOperationTimeout |
double |
2s |
Timeout value for lifecycle stop operation |
Source code¶
//
// Generates traffic as an Ethernet application. The traffic source
// and traffic sink modules can be built from queueing model elements.
//
module EthernetApp like IApp
{
parameters:
string interfaceTableModule; // Relative module path of the interface table
*.interfaceTableModule = default(absPath(this.interfaceTableModule));
@application;
@display("i=block/app");
gates:
input socketIn;
output socketOut;
submodules:
source: <default("ActivePacketSource")> like IActivePacketSource if typename != "" {
parameters:
@display("p=200,150");
}
tagger: <default("")> like IPacketFlow {
parameters:
@display("p=200,300");
}
measurementStarter: <default("")> like IPacketFlow {
parameters:
@display("p=200,450");
}
sink: <default("PassivePacketSink")> like IPassivePacketSink if typename != "" {
parameters:
@display("p=500,150");
}
measurementRecorder: <default("")> like IPacketFlow {
parameters:
@display("p=500,450");
}
io: EthernetSocketIo {
parameters:
@display("p=400,600");
}
connections allowunconnected:
source.out --> tagger.in if exists(source);
tagger.out --> measurementStarter.in;
measurementStarter.out --> io.trafficIn;
io.socketOut --> socketOut;
socketIn --> io.socketIn;
io.trafficOut --> measurementRecorder.in;
measurementRecorder.out --> sink.in if exists(sink);
}