bad behavior of inet.examples.wireless.handover example when adding application.

253 views
Skip to first unread message

zieduz

unread,
Aug 28, 2010, 12:10:25 AM8/28/10
to omnetpp
I launched the network simulation from
inet.examples.wireless.handover. I have inspected the Access Point
where the host is associated along the simulation. I confirm that the
handover succeed.

The basic .ned file describing the network and the .ini file let us
simulating only one host. I changed the HandoverNetwork.ned file to
simulate 5 host by adding a numHosts parameter. I launched the network
simulation and. I have inspected the hosts along the simulation. I
confirm that the association and the handover succeeds.

But, when i add parameters to .ini file to configure Hosts with udp
application, i got an unexpected behavior. I configured one or two UDP
streaming video server and several udp client streaming video
(the .ini file in the bottom of this message). I launched the network
simulation and. I have inspected the the hosts along the simulation. I
noticed that server hosts can be associated to APs and the handovers
succeed but the client hosts are not associated along the simulation.

I wonder the cause of the behavior.? And what are the remedies?

thanks.
Zieduz

A omnet.ini customized ile of the inet.examples.wireless.handover
example.
[General] to rebuild the behavior with 5 hosts and no udp
application: no client no server.
[Config zouMassUdp2HostClient] to rebuild the behavior with 2 udp
server. from 5 hosts
[Config zouMassUdp] to rebuild the behavior with 1 udp server from 5
hosts.

the omnet.ini file


[General]
network = HandoverNetwork
tkenv-plugin-path = ../../../etc/plugins
#debug-on-errors = true

*.playgroundSizeX = 600
*.playgroundSizeY = 400
**.debug = true
**.coreDebug = false

**.numHosts = 5

# channel physical parameters
*.channelcontrol.carrierFrequency = 2.4GHz
*.channelcontrol.pMax = 2.0mW
*.channelcontrol.sat = -110dBm
*.channelcontrol.alpha = 2
*.channelcontrol.numChannels = 5

# access point
**.ap1.wlan.mac.address = "10:00:00:00:00:00"
**.ap2.wlan.mac.address = "20:00:00:00:00:00"
**.ap1.wlan.mgmt.ssid = "AP1"
**.ap2.wlan.mgmt.ssid = "AP2"
**.ap*.wlan.mgmt.beaconInterval = 100ms
**.wlan.mgmt.numAuthSteps = 4

**.mgmt.frameCapacity = 10


# mobility
**.host*.mobility.x = -1
**.host*.mobility.y = -1

**.host*.mobilityType = "MassMobility"
**.host*.mobility.changeInterval = truncnormal(2s, 0.5s)
**.host*.mobility.changeAngleBy = normal(0deg, 30deg)
**.host*.mobility.speed = truncnormal(20mps, 8mps)
**.host*.mobility.updateInterval = 100ms

# wireless channels
**.ap1.wlan.radio.channelNumber = 2
**.ap2.wlan.radio.channelNumber = 3
**.host.wlan.radio.channelNumber = 0 # just initially -- it'll scan

# wireless configuration
**.wlan.agent.activeScan = true
**.wlan.agent.channelsToScan = "" # "" means all
**.wlan.agent.probeDelay = 0.1s
**.wlan.agent.minChannelTime = 0.15s
**.wlan.agent.maxChannelTime = 0.3s
**.wlan.agent.authenticationTimeout = 5s
**.wlan.agent.associationTimeout = 5s

**.mac.address = "auto"
**.mac.maxQueueSize = 14
**.mac.rtsThresholdBytes = 4000B
**.mac.bitrate = 2Mbps
**.wlan.mac.retryLimit = 7
**.wlan.mac.cwMinData = 7
**.wlan.mac.cwMinBroadcast = 31

**.radio.bitrate = 2Mbps
**.radio.transmitterPower = 2.0mW
**.radio.thermalNoise = -110dBm
**.radio.sensitivity = -85mW
**.radio.pathLossAlpha = 2
**.radio.snirThreshold = 4dB



[Config zouLinearUdp]
# mobility
**.host*.mobilityType = "LinearMobility"
**.host*.mobility.speed = 10 mps
**.host*.mobility.angle = 0
**.host*.mobility.acceleration = 0
**.host*.mobility.updateInterval = 100ms

# udp app
**.numUdpApps = 1
**.host[0].udpAppType = "UDPVideoStreamSvr"
**.host[0].udpApp[*].videoSize = 10MB
**.host[0].udpApp[*].serverPort = 3088
**.host[0].udpApp[*].waitInterval = 10ms
**.host[0].udpApp[*].packetLen = 1000B

**.host*.udpAppType = "UDPVideoStreamCli"
**.host*.udpApp[*].serverAddress = "host[0]"
**.host*.udpApp[*].localPort = 9999
**.host*.udpApp[*].serverPort = 3088
**.host*.udpApp[*].startTime = 0

# ping app (host[0] pinged by others)
*.host[0].pingApp.destAddr = ""
*.host[*].pingApp.destAddr = ""
**.pingApp.interval = 10ms
**.pingApp.startTime = uniform(0s,0.1s)


[Config zouMassUdp]
#one udp video streaming server

# udp app
**.numUdpApps = 1
**.host[0].udpAppType = "UDPVideoStreamSvr"
**.host[0].udpApp[*].videoSize = 10MB
**.host[0].udpApp[*].serverPort = 3088
**.host[0].udpApp[*].waitInterval = 10ms
**.host[0].udpApp[*].packetLen = 1000B

**.host*.udpAppType = "UDPVideoStreamCli"
**.host*.udpApp[*].serverAddress = "host[0]"
**.host*.udpApp[*].localPort = 9999
**.host*.udpApp[*].serverPort = 3088
**.host*.udpApp[*].startTime = 0

# ping app (host[0] pinged by others)
*.host[0].pingApp.destAddr = ""
*.host[*].pingApp.destAddr = ""
**.pingApp.interval = 10ms
**.pingApp.startTime = uniform(0s,0.1s)

[Config zouMassUdp2HostClient]
#two udp video streaming server

# udp app
**.numUdpApps = 1
**.host[0].udpAppType = "UDPVideoStreamSvr"
**.host[0].udpApp[*].videoSize = 10MB
**.host[0].udpApp[*].serverPort = 3088
**.host[0].udpApp[*].waitInterval = 10ms
**.host[0].udpApp[*].packetLen = 1000B


**.host[1].udpAppType = "UDPVideoStreamSvr"
**.host[1].udpApp[*].videoSize = 10MB
**.host[1].udpApp[*].serverPort = 3088
**.host[1].udpApp[*].waitInterval = 10ms
**.host[1].udpApp[*].packetLen = 1000B

**.host[2].udpAppType = "UDPVideoStreamCli"
**.host[2].udpApp[*].serverAddress = "host[1]"
**.host[2].udpApp[*].localPort = 9999
**.host[2].udpApp[*].serverPort = 3088
**.host[2].udpApp[*].startTime = 0

**.host*.udpAppType = "UDPVideoStreamCli"
**.host*.udpApp[*].serverAddress = "host[0]"
**.host*.udpApp[*].localPort = 9999
**.host*.udpApp[*].serverPort = 3088
**.host*.udpApp[*].startTime = 0

# ping app (host[0] pinged by others)
*.host[0].pingApp.destAddr = ""
*.host[*].pingApp.destAddr = ""
**.pingApp.interval = 10ms
**.pingApp.startTime = uniform(0s,0.1s)



thanks
zieduz



ًzied chedly

unread,
Aug 28, 2010, 5:48:09 PM8/28/10
to omnetpp
hello,

i reproduced the same behaviour with a simple model.
My new network model contain two wireless hosts,
using Ieee80211NicSTA (inet.linklayer.ieee80211.Ieee80211NicSTA), and
two access points using inet.nodes.wireless.WirelessAP.
One host acts as a sink using Sink module (inet.base.Sink)
and an other one generates packet using EtherAppCli
module (inet.applications.ethernet.EtherAppCli).

Along the simulation, i have noticed that the host acting as sink
can be associated to APs. But the host acting as source cannot
be associated and obviously can't send out packet.

To reproduce the behaviour launch the simulation which i attached with this mail.
But first of all you may change the Ieee80211Mac.cc code otherwise
the simulation crash due to ASSERT insctruction in
function void Ieee80211Mac::handleUpperMsg(cPacket *msg)
in file inet/src/linklayer/ieee80211/mac/Ieee80211Mac.cc

Change code like this:

****before change
void Ieee80211Mac::handleUpperMsg(cPacket *msg)
{
    // check for queue overflow
    if (maxQueueSize && (int)transmissionQueue.size() == maxQueueSize)
    {
        EV << "message " << msg << " received from higher layer but MAC queue is full, dropping message\n";
        delete msg;
        return;
    }

    // must be a Ieee80211DataOrMgmtFrame, within the max size because we don't support fragmentation
    Ieee80211DataOrMgmtFrame *frame = check_and_cast<Ieee80211DataOrMgmtFrame *>(msg);
    if (frame->getByteLength() > fragmentationThreshold)
        error("message from higher layer (%s)%s is too long for 802.11b, %d bytes (fragmentation is not supported yet)",
              msg->getClassName(), msg->getName(), (int)(msg->getByteLength()));
    EV << "frame " << frame << " received from higher layer, receiver = " << frame->getReceiverAddress() << endl;

    ASSERT(!frame->getReceiverAddress().isUnspecified());
    // My comment: stop if host not yet associated to an access point

    // fill in missing fields (receiver address, seq number), and insert into the queue
    frame->setTransmitterAddress(address);
    frame->setSequenceNumber(sequenceNumber);
    sequenceNumber = (sequenceNumber+1) % 4096;  //XXX seqNum must be checked upon reception of frames!

    transmissionQueue.push_back(frame);

    handleWithFSM(frame);
}

*****after change code: delete frame when host yet associated to an access point

void Ieee80211Mac::handleUpperMsg(cPacket *msg)
{
    // check for queue overflow
    if (maxQueueSize && (int)transmissionQueue.size() == maxQueueSize)
    {
        EV << "message " << msg << " received from higher layer but MAC queue is full, dropping message\n";
        delete msg;
        return;
    }

    // must be a Ieee80211DataOrMgmtFrame, within the max size because we don't support fragmentation
    Ieee80211DataOrMgmtFrame *frame = check_and_cast<Ieee80211DataOrMgmtFrame *>(msg);
    if (frame->getByteLength() > fragmentationThreshold)
        error("message from higher layer (%s)%s is too long for 802.11b, %d bytes (fragmentation is not supported yet)",
              msg->getClassName(), msg->getName(), (int)(msg->getByteLength()));
    EV << "frame " << frame << " received from higher layer, receiver = " << frame->getReceiverAddress() << endl;

    //XXX  ASSERT(!frame->getReceiverAddress().isUnspecified());

    if(frame->getReceiverAddress().isUnspecified()){
        delete frame;
        return;
      //My comment delete frame if host not associated to an access point

    }


    // fill in missing fields (receiver address, seq number), and insert into the queue
    frame->setTransmitterAddress(address);
    frame->setSequenceNumber(sequenceNumber);
    sequenceNumber = (sequenceNumber+1) % 4096;  //XXX seqNum must be checked upon reception of frames!

    transmissionQueue.push_back(frame);

    handleWithFSM(frame);
}



please help,



thanks,
Zieduz





--
You received this message because you are subscribed to the Google Groups "omnetpp" group.
To post to this group, send email to omn...@googlegroups.com.
To unsubscribe from this group, send email to omnetpp+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/omnetpp?hl=en.


handoverIssue.zip
Reply all
Reply to author
Forward
0 new messages