Skip to content

Comm Effect Model

Steven Galgano edited this page Mar 23, 2014 · 12 revisions

Contents

  • Features
  • [Configuration Parameters](#Configuration Parameters)
  • [Example XML](#Example XML)
  • Statistics
  • [Statistic Tables](#Statistic Tables)

##Features

The Comm Effect utility model provides the ability to define the following network impairments:

  • Loss: The percentage of packets that will be dropped utilizing a uniform loss distribution model.

  • Latency: The average delay for a packet to traverse the network. The total delay is composed of a fixed and variable component. The fixed amount of the delay is defined via a latency configuration parameter and the variable amount via a jitter configuration parameter The jitter is determined randomly using a uniform random distribution model around +/- jitter . The randomly generated jitter value is then added to the fixed latency to determine the total delay.

  • Duplicates: The percentage of packets that will be duplicated at the receiver.

  • Unicast Bitrate: The bitrate for packets destined for the NEM or handled in promiscuous mode.

  • Broadcast Bitrate: The bitrate for packets destined for the NEM broadcast address.


##Configuration Parameters The following configuration parameters are available to tailor layer functionality:

###defaultconnectivitymode Defines the default connectivity mode for Comm Effects. When set to on, full connectivity will be engaged until a valid Comm Effect event is received.

Type: bool
Running-State Modifiable: no
Occurrence Range: [1,1]
Value Range: [no,yes]
Default Value(s): yes

###enablepromiscuousmode Defines whether promiscuous mode is enabled or not. If promiscuous mode is enabled, all received packets (intended for the given node or not) that pass the receive test are sent upstream to the transport.

Type: bool
Running-State Modifiable: no
Occurrence Range: [1,1]
Value Range: [no,yes]
Default Value(s): no

###filterfile Defines the absolute URI of the effects filter XML file which contains static filters to control network impairments.

Type: string
Running-State Modifiable: no
Occurrence Range: [1,1]

###groupid Defines the Comm Effect Group Id. Only NEMs in the same Comm Effect Group can communicate.

Type: uint32
Running-State Modifiable: no
Occurrence Range: [1,1]
Value Range: [0,4294967295]
Default Value(s): 0

###receivebufferperiod Defines the max buffering time in seconds for packets received from an NEM. The buffering interval for a given packet is determined by the bitrate for the source NEM and the packet size. Packets are then placed in a timed queue based on this interval and all packets that would cause the receive buffer period to be exceeded are discarded. A value of 0.0 disables the limit and allows all received packets to stack up in the queue.

Type: double
Running-State Modifiable: no
Occurrence Range: [1,1]
Value Range: [-DOUBLE_MAX,DOUBLE_MAX]
Default Value(s): 1.000000


##Example XML

Comm Effect configuration is specified using two files:

  1. NEM definition file
  2. Shim definition file

The NEM definition file groups the Shim definition file together with the transport definition file. The Comm Effect Model is not a radio model. It does not use the emultor physical layer so you must set the NEM type attribute to unstructured.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nem SYSTEM "file:///usr/share/emane/dtd/nem.dtd">
<nem type="unstructured">
  <shim definition="commeffectshim.xml"/>
  <transport definition="transvirtual.xml"/>
</nem>

The Shim definition file specifies the model DLL the emulator will load and the desired model configuration.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE shim SYSTEM "file:///usr/share/emane/dtd/shim.dtd">
<shim library="commeffectshim">
 <param name="defaultconnectivity" value="off" />
 <param name="enablepromiscuousmode" value="off" />
</shim>

##Available Statistics The below statistics can be accessed using emanesh.

Name Type Clearable Description
avgDownstreamPacketSizeBroadcastGenerated0 float yes Average layer generated downstream broadcast packet size
avgDownstreamPacketSizeBroadcastRx0 float yes Average downstream broadcast packet size received
avgDownstreamPacketSizeBroadcastTx0 float yes Average downstream broadcast packet size transmitted
avgDownstreamPacketSizeGenerated0 float yes Average layer generated downstream packet size
avgDownstreamPacketSizeRx0 float yes Average downstream packet size received
avgDownstreamPacketSizeTx0 float yes Average downstream packet size transmitted
avgDownstreamPacketSizeUnicastGenerated0 float yes Average layer generated downstream unicast packet size
avgDownstreamPacketSizeUnicastRx0 float yes Average downstream unicast packet size received
avgDownstreamPacketSizeUnicastTx0 float yes Average downstream unicast packet size transmitted
avgDownstreamProcessingDelay0 float yes Average downstream processing delay
avgProcessAPIQueueDepth double yes Average API queue depth for a processUpstreamPacket, processUpstreamControl, processDownstreamPacket, processDownstreamControl, processEvent and processTimedEvent.
avgProcessAPIQueueWait double yes Average API queue wait for a processUpstreamPacket, processUpstreamControl, processDownstreamPacket, processDownstreamControl, processEvent and processTimedEvent in microseconds.
avgTimedEventLatency double yes
avgTimedEventLatencyRatio double yes Average ratio of the delta between the scheduled timer expiration and the actual firing over the requested duration. An average ratio approaching 1 indicates that timer latencies are large in comparison to the requested durations.
avgUpstreamPacketSizeBroadcastRx0 float yes Average upstream broadcast packet size received
avgUpstreamPacketSizeBroadcastTx0 float yes Average upstream broadcast packet size transmitted
avgUpstreamPacketSizeRx0 float yes Average upstream packet size received
avgUpstreamPacketSizeTx0 float yes Average upstream packet size
avgUpstreamPacketSizeUnicastRx0 float yes Average upstream unicast packet size received
avgUpstreamPacketSizeUnicastTx0 float yes Average upstream unicast packet size transmitted
avgUpstreamProcessingDelay0 float yes Average upstream processing delay
numDownstreamBytesBroadcastGenerated0 uint64 yes Number of layer generated downstream broadcast bytes
numDownstreamBytesBroadcastRx0 uint64 yes Number of downstream broadcast bytes received
numDownstreamBytesBroadcastTx0 uint64 yes Number of downstream broadcast bytes transmitted
numDownstreamBytesGenerated0 uint64 yes Number of layer generated downstream bytes
numDownstreamBytesRx0 uint64 yes Number of downstream bytes received
numDownstreamBytesTx0 uint64 yes Number of downstream bytes transmitted
numDownstreamBytesUnicastGenerated0 uint64 yes Number of layer generated downstream unicast bytes
numDownstreamBytesUnicastRx0 uint64 yes Number of downstream unicast bytes received
numDownstreamBytesUnicastTx0 uint64 yes Number of downstream unicast bytes transmitted
numDownstreamPacketsBroadcastDrop0 uint64 yes Number of downstream broadcast packets dropped
numDownstreamPacketsBroadcastGenerated0 uint64 yes Number of layer generated downstream broadcast packets
numDownstreamPacketsBroadcastRx0 uint64 yes Number of downstream broadcast packets received
numDownstreamPacketsBroadcastTx0 uint64 yes Number of downstream broadcast packets transmitted
numDownstreamPacketsDrop0 uint64 yes number of downstream packets dropped
numDownstreamPacketsGenerated0 uint64 yes Number of layer generated downstream packets
numDownstreamPacketsRx0 uint64 yes Number of downstream packets received
numDownstreamPacketsTx0 uint64 yes Number of downstream packets transmitted
numDownstreamPacketsUnicastDrop0 uint64 yes Number of downstream unicast packets dropped
numDownstreamPacketsUnicastGenerated0 uint64 yes Number of layer generated downstream unicast packets
numDownstreamPacketsUnicastRx0 uint64 yes Number of downstream unicast packets received
numDownstreamPacketsUnicastTx0 uint64 yes Number of downstream unicast packets transmitted
numDownstreamProcessingDelay0 uint64 yes
numUpstreamBytesBroadcastRx0 uint64 yes Number of upstream broadcast bytes received
numUpstreamBytesBroadcastTx0 uint64 yes Number of updtream broadcast bytes transmitted
numUpstreamBytesRx0 uint64 yes Number of upstream bytes received
numUpstreamBytesTx0 uint64 yes Number of upstream bytes transmitted
numUpstreamBytesUnicastRx0 uint64 yes Number upstream unicast bytes received
numUpstreamBytesUnicastTx0 uint64 yes Number of upstream unicast bytes transmitted
numUpstreamPacketsBroadcastDrop0 uint64 yes Number of upstream broadcast packets dropped
numUpstreamPacketsBroadcastRx0 uint64 yes Number of upstream broadcast packets received
numUpstreamPacketsBroadcastTx0 uint64 yes Number of upstream broadcast packets transmitted
numUpstreamPacketsDrop0 uint64 yes Number upstream packets droppped
numUpstreamPacketsRx0 uint64 yes Number of upstream packets received
numUpstreamPacketsTx0 uint64 yes Number of upstream packets transmitted
numUpstreamPacketsUnicastDrop0 uint64 yes Number of upstream unicast packets dropped
numUpstreamPacketsUnicastRx0 uint64 yes Number upstream unicast packets received
numUpstreamPacketsUnicastTx0 uint64 yes Number of upstream unicast packets transmitted
numUpstreamProcessingDelay0 uint64 yes
processedConfiguration uint64 yes
processedDownstreamControl uint64 yes
processedDownstreamPackets uint64 yes
processedEvents uint64 yes
processedTimedEvents uint64 yes
processedUpstreamControl uint64 yes
processedUpstreamPackets uint64 yes

##Statistic Tables The below statistics can be accessed using emanesh.

Name Clearable Description
BroadcastPacketAcceptTable0 yes Broadcast packets accepted
BroadcastPacketDropTable0 yes Broadcast packets dropped by reason code
EventReceptionTable yes Received event counts
UnicastPacketAcceptTable0 yes Unicast packets accepted
UnicastPacketDropTable0 yes Unicast packets dropped by reason code