EtherAppServer

Package: inet.applications.ethernet

EtherAppServer

simple module

Server side of the EtherAppClient model -- generates packets containing EtherAppResp chunks with the number of bytes requested by the client in corresponding EtherAppReq. It should be connected directly to Ieee8022Llc module.

Used in compound modules

Name Type Description
EthernetHost compound module

An example host with one Ethernet port and a traffic generator that generates request-reply traffic directly over Ethernet. This host model does not contain higher layer protocols (IP, TCP). By default it is configured to use half-duplex MAC (CSMA/CD).

Parameters

Name Type Default value Description
localSAP int 0xf1
stopOperationExtraTime double -1s

extra time after lifecycle stop operation finished

stopOperationTimeout double 2s

timeout value for lifecycle stop operation

Properties

Name Value Description
lifecycleSupport
display i=block/app

Gates

Name Direction Size Description
in input
out output

Signals

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

Statistics

Name Title Source Record Unit Interpolation Mode
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

Direct method calls (observed)

call tofunctioninfo
MessageDispatcherinet::MessageDispatcher::arrivedarrived

Incoming messages (observed)

gatemsgkindctrlsrcModuletags
inPacket0 (SocketStatusInd::SOCKET_I_DATA)Ieee80211LlcLpdIeee802SapInd, InterfaceInd, MacAddressInd, SocketInd, ErrorRateInd?, SignalPowerInd?, SignalTimeInd?, SnirInd?, Ieee80211ChannelInd?, Ieee80211ModeInd?
inPacket0 (SocketStatusInd::SOCKET_I_DATA)Ieee8022LlcIeee802SapInd, InterfaceInd, MacAddressInd, SocketInd, DirectionTag?, EncapsulationProtocolInd?

Outgoing messages (observed)

gatemsgkindctrldestModuletags
outPacket0 (SocketCommandCode::SOCKET_C_DATA)Ieee8022LlcDispatchProtocolReq, Ieee802SapReq, InterfaceReq, MacAddressReq, SocketReq
outRequest2 (SocketCommandCode::SOCKET_C_OPEN)Ieee8022LlcSocketOpenCommandIeee80211LlcLpdDispatchProtocolReq, Ieee802SapReq, SocketReq
outRequest2 (SocketCommandCode::SOCKET_C_OPEN)Ieee8022LlcSocketOpenCommandIeee8022LlcDispatchProtocolReq, Ieee802SapReq, SocketReq

Packet operations (observed)

chunkTypepacketAction
peekData
EtherAppReqpeekAtFront
EtherAppRespinsertAtBack

Shared Tagging operations (observed)

tagTypetagAction
DispatchProtocolReqaddTagIfAbsent
Ieee802SapIndgetTag
Ieee802SapReqaddTag, addTagIfAbsent
InterfaceIndgetTag
InterfaceReqaddTag
MacAddressIndgetTag
MacAddressReqaddTag
SocketIndfindTag
SocketReqaddTagIfAbsent

Region Tagging operations (observed)

tagTypetagAction
CreationTimeTagaddTag, getAllTags

Source code

//
// Server side of the ~EtherAppClient model -- generates packets containing
// ~EtherAppResp chunks with the number of bytes requested by the client in
// corresponding ~EtherAppReq. It should be connected directly to ~Ieee8022Llc
// module.
//
simple EtherAppServer
{
    parameters:
        int localSAP = default(0xf1);
        @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/EtherAppServer.ned