Package: inet.applications.udpapp
UdpApp
compound moduleGenerates traffic for a UDP application. The traffic source and traffic sink modules can be built from queueing model elements.
Usage diagram
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Known subclasses
| Name | Type | Description |
|---|---|---|
| UdpRequestResponseApp | compound module |
A generic request/response-based server application. For each request it receives, it generates different traffic based on the data the request contains. The client application can be any source that is capable of generating packets with different data. The first byte of the packet data determines the response traffic, which can be configured to produce complex streams of packets with various data and timing distributions. |
| UdpSinkApp | compound module |
Implements a UDP application that only receives packets. |
| UdpSourceApp | compound module |
Implements a UDP application that only sends packets. |
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| interfaceTableModule | string |
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 |
|---|---|---|---|
| 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 | ||
| io.localAddress | string | "" | |
| io.localPort | int | -1 | |
| io.destAddress | string | "" | |
| io.destPort | int | ||
| io.timeToLive | int | -1 |
If not -1, set the TTL (IPv4) or Hop Limit (IPv6) field of sent packets to this value |
| io.dontFragment | bool | false |
If true, ask IP to not fragment the message during routing |
| io.dscp | int | -1 |
If not -1, set the DSCP (IPv4/IPv6) field of sent packets to this value |
| io.tos | int | -1 |
If not -1, set the Type Of Service (IPv4) / Traffic Class (IPv6) field of sent packets to this value |
| io.multicastInterface | string | "" |
If not empty, set the multicast output interface option on the socket (interface name expected) |
| io.multicastAddresses | object | [] |
List of multicast addresses that the application socket joins |
| io.receiveBroadcast | bool | false |
If true, make the socket receive broadcast packets |
| io.joinLocalMulticastGroups | bool | false |
If true, make the socket receive packets from all multicast groups set on local interfaces |
| io.stopOperationExtraTime | double | -1s |
Extra time after lifecycle stop operation finishes |
| io.stopOperationTimeout | double | 2s |
Timeout value for lifecycle stop operation |
Source code
// // Generates traffic for a UDP application. The traffic source and // traffic sink modules can be built from queueing model elements. // module UdpApp like IApp { parameters: string interfaceTableModule; *.interfaceTableModule = default(absPath(".interfaceTable")); @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: UdpSocketIo { parameters: @display("p=350,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); }File: src/inet/applications/udpapp/UdpApp.ned