Why UDP Video Streaming (Server-Client) in OMNET++ and INET is not working properly?

34 Views Asked by At

I am trying to simulate a simple UDP video stream in OMNET++ but I don't think it is working properly.

here is a snippet of my .ini file

**.uav[*].numUdpApps = 1
**.uav[*].udpApp[*].typename = "UDPVideoStreamSvr"
**.uav[*].udpApp[*].videoSize = 10MiB
**.uav[*].udpApp[*].localPort = 3088
**.uav[*].udpApp[*].sendInterval = 0.01s
**.uav[*].udpApp[*].packetLen = 1000B


**.gcs*.numUdpApps = 1
**.gcs*.udpApp[*].typename = "UDPVideoStreamCli"
**.gcs*.udpApp[*].serverAddress = "uav[0]"
**.gcs*.udpApp[*].localPort = 3089
**.gcs*.udpApp[*].serverPort = 3088
**.gcs*.udpApp[*].startTime = 0

In this scenario, I want gcs to send request for UDP video stream to server, and UAV should respond with a UDP video stream. But that never happens in UAV (Server) case (see image attached). GCS does send a "VideoStrmReq" but gets no response from UAV. Instead UAV starts sending AODV RREQ.

packet traffic

Could some one please help me figure it out? Am I reading it all wrong? What am I missing? Please help. Thank you.

the rest of the ini configuration:

# ARP configuration
**.arp.retryTimeout = 1s
**.arp.retryCount = 3
**.arp.cacheTimeout = 100s

#*.obstacleControl.obstacles = xmldoc("obstacles.xml")      # obstacles XML
#*.obstacleControl.debug = true     # obstacles XML
#**.annotations.draw = true 

##############################################################################
# Parameters for MAC layer #
##############################################################################

# nic settings
**.wlan*.bitrate = 2Mbps

**.mac.address = "auto"
**.mac.maxQueueSize = 14
**.mac.rtsThresholdBytes = 3000B
**.wlan[*].mac.retryLimit = 7
**.wlan[*].mac.cwMinData = 7

**.radioMedium.backgroundNoise.power = -110dBm
**.radioMedium.mediumVisualizer.displayCommunication = true

include uavconf.ini

##############################################################################
# Parameters for the Energy Model (units: mAh and mA) #
##############################################################################
**.hasStatus = true

**.energyStorageType = "SimpleEnergyStorage"
**.energyConsumerType = "StateBasedEnergyConsumer"
**.energyStorage.nominalCapacity = 0.05J
**.energyStorage.nodeShutdownCapacity = 0J
**.energyStorage.nodeStartCapacity = 0.5 * this.nominalCapacity
**.energyStorage.initialCapacity = uniform(0J, this.nominalCapacity)
**.energyGeneratorType = "AlternatingEnergyGenerator"
**.energyGenerator.energySinkModule = "^.energyStorage"
**.energyGenerator.powerGeneration = 100mW
**.energyGenerator.sleepInterval = exponential(10s)
**.energyGenerator.generationInterval = exponential(10s)

#**.rxSetupTime = 0.00108s

##############################################################################
# Mobility #
##############################################################################

**.gcs.mobilityType = "StationaryMobility"

##############################################################################
#       Output vectors                                                       #
##############################################################################
output-vector-file = ${resultdir}/${configname}-${runnumber}.vec
output-scalar-file = ${resultdir}/${configname}-${runnumber}.sca

**.End-to-end delay.vector-recording = true
**.Mean end-to-end delay.vector-recording = true
**.scalar-recording = true

and this is my NED file:

package avens;
import inet.common.lifecycle.LifecycleController;
import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator;
import inet.node.inet.AdhocHost;
import inet.physicallayer.ieee80211.packetlevel.Ieee80211ScalarRadioMedium;
import inet.networklayer.ipv4.RoutingTableRecorder;

network FANET
{
    parameters:
        int numHosts = default(2);
        @display("bgb=405,326");

    submodules:

        lifecycleController: LifecycleController {
            @display("p=315,103");
        }
        radioMedium: Ieee80211ScalarRadioMedium {
            @display("p=181,213");
        }
        routingTableRecorder: RoutingTableRecorder {
            parameters:
                @display("p=91,148");
        }
        configurator: IPv4NetworkConfigurator {
            config = xml("<config><interface hosts='*' address='192.168.0.x' netmask='255.255.255.0'/></config>");
            @display("p=91,267");
        }

        uav[numHosts]: Aircraft {
            @display("i=device/drone;is=n;p=174,103");

        }
        gcs: AdhocHost {
            @display("i=device/antennatower_vl;r=,,#707070;p=270,229");
        }

        handler: FileHandler {
            @display("p=91,209");
        }

}

1

There are 1 best solutions below

1
288K On

After thorough analysis and modification, I resolved it by editing the code of my Aircraft.NED file rather than looking for solution in .ini and FANET.NED files.