Clarification on throughput behavior during mobility in Mininet-WiFi + SUMO

9 views
Skip to first unread message

ELENA VENTURA

unread,
Oct 10, 2025, 2:31:54 PM (5 days ago) Oct 10
to mininet-wifi-discuss

I am writing to ask for a technical clarification regarding the tests I am conducting with Mininet-WiFi integrated with SUMO.

I am observing an unexpected behavior in the measured throughput:

  • when the stations are static, the iperf tests show very high values (up to 1 Gbit/s);

  • however, when the stations are moving (controlled by SUMO), the throughput drops drastically, stabilizing around 6–13 Mbit/s, even though the same network configuration (transmit power, range, propagation model, etc.) is maintained.

I have verified that this limitation is not related to traffic shaping (HTB/IFB) or transmission power. It appears instead to be linked to how wmediumd handles the radio channel during position updates.
In particular, it seems that the position changes generated by SUMO (for example with --step-length 1.0) cause abrupt variations in SNR, which make the Wi-Fi rate control algorithm (Minstrel) fall back to very low modulation rates (MCS 0–1).

I would like to ask whether:

  1. this behavior is expected within Mininet-WiFi’s radio model, or if it indicates a synchronization issue between SUMO and wmediumd; and

  2. there are recommended strategies to mitigate it (e.g., interpolating positions, using shorter update intervals, tuning the propagation parameters, or adjusting SUMO’s step length).

I am happy to provide logs, scripts, or test outputs (iwconfig, iw link, iperf) if that would help with the analysis.

Thank you very much for your time and for your attention.

Best regards,
Elena Ventura

Ramon Fontes

unread,
Oct 10, 2025, 2:35:58 PM (5 days ago) Oct 10
to ELENA VENTURA, mininet-wifi-discuss
> In particular, it seems that the position changes generated by SUMO (for example with --step-length 1.0) cause abrupt variations in SNR, which make the Wi-Fi rate control algorithm (Minstrel) fall back to very low modulation rates (MCS 0–1).

This is not correct. There are two wireless mediums supported: with
and without wmediumd. I suggest you to read more about it:
https://github.com/ramonfontes/mn-wifi-ebook/blob/main/beginner.md#wmediumd


Em sex., 10 de out. de 2025 às 15:31, ELENA VENTURA
<eleve...@gmail.com> escreveu:
> --
> You received this message because you are subscribed to the Google Groups "mininet-wifi-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to mininet-wifi-dis...@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/mininet-wifi-discuss/15d2fa51-c223-4594-91e2-f37765feab72n%40googlegroups.com.

ELENA VENTURA

unread,
Oct 10, 2025, 3:46:33 PM (5 days ago) Oct 10
to mininet-wifi-discuss

Thank you for your reply and for pointing me to the documentation.

I would like to ask for a quick clarification regarding the difference I am observing between the two wireless medium options in Mininet-WiFi.

When I run my scenario without wmediumd, the throughput remains very high (close to 1 Gbit/s), both with static and mobile stations.
However, when I enable wmediumd (in interference mode) and keep the same network parameters, the throughput drops significantly (around 6–13 Mbit/s) as soon as the stations start moving, while it stays much higher when they are static.

Is this behavior expected, given that wmediumd simulates real channel effects such as path loss and rate adaptation?

For the work I am doing, it is essential that the mobile stations are able to connect and exchange a much larger amount of data — we are talking about around 1 Gbit/s, so they cannot be limited to just 7 Mbit/s.
I really cannot understand why, when using wmediumd, this limitation appears, while in the setup without wmediumd it does not.
If possible, I would greatly appreciate any advice on how to increase the throughput threshold beyond 7 Mbit/s when using wmediumd  

Thank you
Elena

Ramon Fontes

unread,
Oct 10, 2025, 3:50:20 PM (5 days ago) Oct 10
to ELENA VENTURA, mininet-wifi-discuss
> the throughput drops significantly (around 6–13 Mbit/s) as soon as the stations start moving, while it stays much higher when they are static.

As I mentioned, this is not correct. There is no relationship between
node movement and throughput values greater than 1 Gbps. Moreover, if
you are using wmediumd, such throughput cannot be achieved.

Em sex., 10 de out. de 2025 às 16:46, ELENA VENTURA
<eleve...@gmail.com> escreveu:
> To view this discussion visit https://groups.google.com/d/msgid/mininet-wifi-discuss/0c6f1b53-bdb3-4d80-a7a1-3ea56ae2aa28n%40googlegroups.com.

ELENA VENTURA

unread,
Oct 10, 2025, 9:21:52 PM (5 days ago) Oct 10
to mininet-wifi-discuss

Hi Ramon 

First of all, I’d like to apologize if this question sounds repetitive or if I already asked something similar — I’m truly trying to understand the behavior correctly

I need to use SUMO together with wmediumd to ensure that each station connects in real time to an access point. When a station enters the AP’s coverage area, it starts transmitting with iPerf, and when it moves out of range, it automatically stops.  

this is the code i wrote to implement it

#!/usr/bin/env python3

import sys
sys.path.insert(0, "/home/User/Progetti/mininet-wifi/mininet-wifi/mn_wifi/sumo")

from mininet.log import setLogLevel, info
from mn_wifi.cli import CLI
from mn_wifi.net import Mininet_wifi
from mn_wifi.node import OVSKernelAP
from mininet.node import RemoteController

from runner import sumo
from mn_wifi.link import wmediumd, ITSLink
from mn_wifi.wmediumdConnector import interference, wmediumd_mode
#from mn_wifi.wmediumdConnector import WmediumdMode
from mn_wifi.wmediumdConnector import error_prob

def topology():
    "Create a network with Ryu + SUMO cars"
    net = Mininet_wifi(controller=RemoteController,
                       accessPoint=OVSKernelAP,link=wmediumd, wmediumd_mode=interference)

    info("*** Adding Ryu controller\n")
    c0 = net.addController('c0', controller=RemoteController,
                           ip='127.0.0.1', port=6633)

    info("*** Creating nodes\n")
    # Access Point connesso al controller
    ap1 = net.addAccessPoint('ap1', ssid='new-ssid', mode='ac', channel='36',
                             vht_capab='[VHT80]', ht_capab='[HT40+]',
                             position='50,20,0', range=40, txpower=20)

    # Host cablato
    h1 = net.addHost('h1', ip='10.0.0.10/8')

    # Auto mobili controllate da SUMO (solo 4)
    for id in range(0, 4):
        net.addCar('car%s' % (id+1), wlans=1, mode='ac')  # wlans=1 basta

    info("*** Configuring Propagation Model\n")
    net.setPropagationModel(model="logDistance", exp=2.0) #2.8
    net.configureNodes()

    info("*** Creating links\n")
    net.addLink(ap1, h1)
    """
    for car in net.cars:
        net.addLink(car, intf=car.wintfs[0].name,
                    cls=ITSLink, band=20, channel=181)

    """

    info("*** Starting SUMO\n")
    net.useExternalProgram(program=sumo, port=8813,
                           extra_params=["--start --delay 1000 --step-length 0.1"],
                           clients=1, exec_order=0)

    info("*** Starting network\n")
    net.build()
    c0.start()
    ap1.start([c0])

    #AGGIUNTA: configurazione ap per le slice -------------------
    ap1 = net.get('ap1')
    ap1.cmd("bash /home/elena/Progetti/mininet-wifi/mininet-wifi/SETUP/wlan1_setupIfb4_moreMbit.sh")
    info("*** Slice configurate automaticamente su ap1\n")
    #------------------------------------------------------------

    #AGGIUNTA: avvio server iperf da h1--------------------------
    h1 = net.get('h1')
    # questo lo devo eseguire in bg perche senno si blocca e non parte la simulazione grafica
    h1.cmd("xterm -hold -e 'iperf -s -i 2' & echo $! > /tmp/h1.pid")
    info("*** Avviato iperf server su h1\n")
    #------------------------------------------------------------
    # IP dinamici per le auto
    for id, car in enumerate(net.cars):
        car.setIP('10.0.0.{}/8'.format(id+1),
                  intf=car.wintfs[0].name)

    # Telemetria: auto + AP
    net.telemetry(nodes=net.cars + [ap1], data_type='position',
                  min_x=0, min_y=0, max_x=100, max_y=40)

    info("*** Running CLI\n")
    CLI(net)
    #chiusura del server ipef h1 --------------------------------
    try:
        pid = h1.cmd("cat /tmp/h1.pid").strip()
        if pid:
            h1.cmd("kill -9 " + pid)
            info("*** Iperf server su h1 terminato\n")
    except:
        pass
    #------------------------------------------------------------
    # scrittura su file di timestamp START-END delle car --------
    with open("times.csv", "w") as f:
        all_starts = [car.start_time for car in net.cars if hasattr(car, "start_time")]
        all_ends   = [car.end_time   for car in net.cars if hasattr(car, "end_time")]
        if all_starts and all_ends:
            sim_start = min(all_starts)
            sim_end   = max(all_ends)
            f.write(f"{sim_start},{sim_end}\n\n")

        for car in net.cars:
            if hasattr(car, "start_time") and hasattr(car, "end_time"):
                f.write(f"{car.start_time},{car.end_time}\n")
    #------------------------------------------------------------
    info("*** Stopping network\n")
    net.stop()


if __name__ == '__main__':
    setLogLevel('info')
    topology()


In this setup, the mobility works perfectly, but each car shows:

car1 iwconfig -> Bit Rate=13 Mbit/s Tx-Power=1 dBm

Even though I explicitly set txpower=20 and mode='ac'.
As a result, iperf reports around 6–7 Mbit/s, even at very short distances.

few months ago i did the same work but with static station, the topology is the same ( except for the movement part ) 

#!/usr/bin/env python3

import sys
from mininet.log import setLogLevel, info
from mn_wifi.cli import CLI
from mn_wifi.net import Mininet_wifi
from mn_wifi.node import OVSKernelAP
from mininet.node import RemoteController

def topology(args):
    net = Mininet_wifi(controller=RemoteController, accessPoint=OVSKernelAP)

    info("*** Adding Ryu controller\n")
    c0 = net.addController('c0', ip='127.0.0.1', port=6633)

    info("*** Creating nodes\n")
    ap1 = net.addAccessPoint('ap1', ssid='new-ssid', mode='ac', channel='36',
                             position='0,0,0')
    sta1 = net.addStation('sta1', ip='10.0.0.1/8', position='3,0,0')
    sta2 = net.addStation('sta2', ip='10.0.0.2/8', position='5,0,0')
    sta3 = net.addStation('sta3', ip='10.0.0.3/8', position='7,0,0')
    sta4 = net.addStation('sta4', ip='10.0.0.4/8', position='9,0,0')

    h1 = net.addHost('h1', ip='10.0.0.10/8')

    net.setPropagationModel(model="logDistance", exp=4.5)
    net.configureWifiNodes()

    info("*** Creating links\n")
    net.addLink(ap1, h1)

    if '-p' not in args:
        net.plotGraph(max_x=100, max_y=100)

    info("*** Starting network\n")
    net.build()
    c0.start()
    ap1.start([c0])  # <--- qui la vera differenza!

    CLI(net)
    net.stop()

if __name__ == '__main__':
    setLogLevel('info')
    topology(sys.argv)

In this version, mobility is static but throughput reaches up to 1 Gbit/s, as expected. IT HAS NO LIMITS!

My questions are: 
  1. Are Tx-Power and Bit Rate (as shown by iwconfig) the parameters that directly determine the throughput in Mininet-WiFi when wmediumd is active?

  2. Is the low throughput (≈7 Mbit/s) an expected effect of the interference model, or could it mean that wmediumd is ignoring the txpower settings?

  3. In your experience, is there a way to keep SUMO mobility active but allow higher link rates (for example, using error_prob or a different propagation model)?


Thank you for your time and patience,

Elena 

Ramon Fontes

unread,
Oct 10, 2025, 9:45:30 PM (5 days ago) Oct 10
to ELENA VENTURA, mininet-wifi-discuss
> car1 iwconfig -> Bit Rate=13 Mbit/s Tx-Power=1 dBm
> Even though I explicitly set txpower=20 and mode='ac'.

You’re not explicitly setting the TX power to 20 for car1. You’re
setting it for the AP. However, you’re also defining a range of 40.
Since TX power directly affects the signal range, you can’t set both
parameters simultaneously. In this case, the node assumes a range of
40, which implies a TX power of 1. Please note that we’ve already
discussed this in this mailing list.

>> few months ago i did the same work but with static station, the topology is the same ( except for the movement part )

You’re not using wmediumd, and it’s not clear whether you’ve used ifb or not.

> Are Tx-Power and Bit Rate (as shown by iwconfig) the parameters that directly determine the throughput in Mininet-WiFi when wmediumd is active?

Yes!

> Is the low throughput (≈7 Mbit/s) an expected effect of the interference model, or could it mean that wmediumd is ignoring the txpower settings?

Again, you need to choose between transmission power and signal range.
You wouldn’t want to set the TX power to 20 and still have the same
signal range, would you?

> In your experience, is there a way to keep SUMO mobility active but allow higher link rates (for example, using error_prob or a different propagation model)?

You can have a higher rate with a correct setup.

Em sex., 10 de out. de 2025 às 22:21, ELENA VENTURA
<eleve...@gmail.com> escreveu:
> To view this discussion visit https://groups.google.com/d/msgid/mininet-wifi-discuss/ff86842d-8309-456d-a83f-e1745e7db17cn%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages