EtherAppClient¶
Package: inet.applications.ethernet
simple module EtherAppClient
A simple traffic generator for the Ethernet model and the 802.11 model, and generally for any L2 model that accepts Ieee802SapReq tags on the packets. It generates packets containing EtherAppReq chunks. It should be connected directly to Ieee8022Llc.
Usage diagram¶
Inheritance diagram¶
Used in compound modules¶
Name |
Type |
Description |
|---|---|---|
compound module |
A simplified network device that communicates directly over Ethernet without higher layer protocols like IP or TCP. It provides a basic host model for Ethernet-only simulations. |
Extends¶
Name |
Type |
Description |
|---|---|---|
simple module |
Base module for all INET simple modules. |
Parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
displayStringTextFormat |
string |
“” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
interfaceTableModule |
string |
||
destAddress |
string |
“” |
Destination MAC address, or module path name of destination station; empty means off |
interface |
string |
“” |
Outgoing interface name; empty accepted only when the destAddress is empty |
startTime |
double |
this.sendInterval |
Time of sending the first request |
stopTime |
double |
-1s |
Time of finishing sending, negative values mean forever |
localSAP |
int |
0xf0 |
Local service access point |
remoteSAP |
int |
0xf1 |
Remote service access point |
sendInterval |
double |
uniform(0s,1s) |
Interval between sending requests |
reqLength |
int |
100B |
Length of request packets |
respLength |
int |
1KiB |
Length of response packets |
stopOperationExtraTime |
double |
-1s |
Extra time after lifecycle stop operation finished |
stopOperationTimeout |
double |
2s |
Timeout value for lifecycle stop operation |
Properties¶
Name |
Value |
Description |
|---|---|---|
class |
EtherAppClient |
|
display |
i=block/app |
|
lifecycleSupport |
Gates¶
Name |
Direction |
Size |
Description |
|---|---|---|---|
in |
input |
||
out |
output |
Signals¶
Name |
Type |
Unit |
Description |
|---|---|---|---|
packetReceived |
|||
packetSent |
Statistics¶
Name |
Title |
Source |
Record |
Unit |
Interpolation Mode |
Description |
|---|---|---|---|---|---|---|
endToEndDelay |
end-to-end delay |
dataAge(packetReceived) |
histogram,vector |
s |
none |
|
packetReceived |
packets received |
packetReceived |
count,”sum(packetBytes)”,”vector(packetBytes)” |
none |
||
packetSent |
packets sent |
packetSent |
count,”sum(packetBytes)”,”vector(packetBytes)” |
none |
Source code¶
//
// A simple traffic generator for the Ethernet model and the 802.11 model,
// and generally for any L2 model that accepts ~Ieee802SapReq tags on the
// packets. It generates packets containing ~EtherAppReq chunks. It should
// be connected directly to ~Ieee8022Llc.
//
simple EtherAppClient extends SimpleModule
{
parameters:
@class(EtherAppClient);
string interfaceTableModule;
string destAddress = default(""); // Destination MAC address, or module path name of destination station; empty means off
string interface = default(""); // Outgoing interface name; empty accepted only when the destAddress is empty
double startTime @unit(s) = default(this.sendInterval); // Time of sending the first request
double stopTime @unit(s) = default(-1s); // Time of finishing sending, negative values mean forever
int localSAP = default(0xf0); // Local service access point
int remoteSAP = default(0xf1); // Remote service access point
volatile double sendInterval @unit(s) = default(uniform(0s,1s)); // Interval between sending requests
volatile int reqLength @unit(B) = default(100B); // Length of request packets
volatile int respLength @unit(B) = default(1KiB); // Length of response packets
@lifecycleSupport;
double stopOperationExtraTime @unit(s) = default(-1s); // Extra time after lifecycle stop operation finished
double stopOperationTimeout @unit(s) = default(2s); // Timeout value for lifecycle stop operation
@display("i=block/app");
@signal[packetSent](type=inet::Packet);
@signal[packetReceived](type=inet::Packet);
@statistic[packetReceived](title="packets received"; source=packetReceived; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
@statistic[packetSent](title="packets sent"; source=packetSent; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
@statistic[endToEndDelay](title="end-to-end delay"; source="dataAge(packetReceived)"; unit=s; record=histogram,vector; interpolationmode=none);
gates:
input in @labels(Ieee802Ctrl/up) @messageKinds(inet::SocketStatusInd);
output out @labels(Ieee802Ctrl/down) @messageKinds(inet::SocketCommandCode);
}