EtherAppClient

Package: inet.applications.ethernet

EtherAppClient

simple module

C++ definition

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.

Inheritance diagram

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

Used in compound modules

Name Type Description
Client compound module (no description)
EthernetHost 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.

Node compound module (no description)
ThroughputClient compound module (no description)
ThroughputClient compound module (no description)
ThroughputClient compound module (no description)

Extends

Name Type Description
SimpleModule 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
lifecycleSupport
display i=block/app

Gates

Name Direction Size Description
in input
out output

Signals

Name Type Unit Description
packetReceived inet::Packet
packetSent inet::Packet

Statistics

Name Title Source Record Unit Interpolation Mode Description
packetReceived packets received packetReceived count, sum(packetBytes), vector(packetBytes) none
packetSent packets sent packetSent count, sum(packetBytes), vector(packetBytes) none
endToEndDelay end-to-end delay dataAge(packetReceived) histogram, vector s 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);
}

File: src/inet/applications/ethernet/EtherAppClient.ned