Skip to content
Bruce Allen edited this page Aug 10, 2020 · 24 revisions

Upgrading ROS2

As of June 2020, ROS2 Foxy Fitzroy is available. Binary packages are available for Ubuntu Focal 20.04. Currently, per https://index.ros.org/doc/ros2/Installation/DDS-Implementations/Install-Connext-University-Eval/, "the Connext RMW layer in ROS2 is compatible with version 5.3.x of RTI Connext DDS, but not with the most-recent version (6.0.x)." Mininet testbed is currently set to work with Ubuntu 18.04, ROS2 Crystal, eProsima FastRTPS.

Here are our upgrade options:

Ubuntu ROS2 DDS
18.04 Crystal eProsima FastRTPS, Connext 5.3.x (untested)
18.04 Eloquent eProsima FastRTPS (mininet_testbed failed), Connext 5.3.x (untested), Cyclone DDS (untested)
20.04 (untested) Foxy eProsima FastRTPS, Connext 5.3.x, Cyclone DDS
20.04 (untested) (future) eProsima FastRTPS, Connext 5.3.x, Connext 6.0.x, Cyclone DDS

ROS2 Eloquent

It would be nice to use the latest ROS2 to examine latest QoS and Security provisions. Currently, ROS2 Eloquent does not appear to work with Mininet-Wifi. This needs re-tested. To work with Eloquent, port ROS2 Node interfaces create_publisher and create_subscription to handle new parameter requirements.

In the future, to install ROS2 Eloquent:

see https://index.ros.org/doc/ros2/Installation/Eloquent/Linux-Install-Debians/. For Ubuntu 18, you can put these ROS2 setup instructions in a file called, for example, install_ros2.bash:

#!/bin/bash
# abort on error
set -e

sudo apt update && sudo apt install curl gnupg2 lsb-release
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'
sudo apt update
sudo apt install ros-eloquent-desktop
sudo apt install ros-eloquent-ros-base
sudo apt install python3-argcomplete
sudo apt install python3-colcon-common-extensions

and then run it:

 bash install_ros2.bash

Set up your environment to access ROS2 by adding this to the bottom of your .bashrc file:

source /opt/ros/eloquent/setup.bash

If you happen to have multiple ROS versions installed, be sure only one of them is sourced in your .bashrc file.

Upgrading Mininet-WiFi

Upgrade version

The updated mininet testbed works with Mininet-WiFi 2.5 instead of Mininet-WiFi v2.4.3. To upgrade Mininet-Wifi:

Uninstall Mininet-Wifi v2.4.3

Ref. https://mininet-wifi.github.io/faq/#uninstall-mininet-wifi. This might do:

sudo rm -rf /usr/local/bin/mn /usr/local/lib/python*/*/*mininet*

Also remove or rename the ~/git/mininet-wifi repository rather than using checkout to rebuild from this; previously built content makes the rebuild break.

Install Mininet-WiFi v2.5

Install: See https://github.com/nps-ros2/mininet_testbed/wiki or https://github.com/intrig-unicamp/mininet-wifi

NOTE: v2.5 was pulled back, revert to 2.4.3 after git clone via git checkout v2.4.3.

For v2.5: Specifically:

mkdir gits
cd gits
git clone https://github.com/intrig-unicamp/mininet-wifi
cd mininet-wifi
sudo util/install.sh -Wlnfv

Test: Type mn --version to observe that version 2.5 is in use.

Test: Start Python, attempt to import module: type python then type from mn_wifi.cli import CLI. The syntax for v2.4.3 was: from mn_wifi.cli import CLI_wifi.

Mininet-WiFi Hang

When running mininet-WiFi v2.4.3 with 50 Wifi nodes, Mininet-WiFi hung, likely at R1 which was running Wireshark. Attempts to close Wireshark hung. Attempts to close the runner hung and attempts to clean up via sudo mn -c indicated:

*** Killing mac80211_hwsim
rmmod: ERROR: Module mac80211_hwsim is in use

Attempts to re-start a new runner hung. System shutdown failed on each wlan0: No active IBSS STAs - trying to scan for other IBSS networks with same SSID (merge) and A stop job is running for WPA supplicant. Restart cleared the broken state.

Recent Changes to mininet_testbed

  • The environment is updated to use mininet-wifi 2.5 instead of the older mininet-wifi. Code is modified to account for a Python interface change.
  • The preferred method for creating scenarios is to create the CSV file for communication and to create the Python file for the network setup. It appears that reported latency is significantly improved. All demo results need reworked. Please see Designing your Scenario for instructions on this new workflow.

802.11 mode issue

In previous performance tests, we were observing excessive latency during packet transmissioin. When we switched to configuring networks using the miniedit GUI, latency reduced significantly from 17 ms to 1.6 ms. It turns out previous tests configured the 802.11 High Through capacity mode to "HT40+" for links because the Ad-hoc Wifi example for mininet-wifi v2.4.3 at examples/adhoc.py did this. The default miniedit configuration does not make this setting. HT40+ is a High Throughput 40MHz bandwidth configuration introduced in the 802.11n standard. A discussion on this mode is available at http://rfmw.em.keysight.com/wireless/helpfiles/89600b/webhelp/subsystems/wlan-mimo/Content/mimo_80211n_overview.htm

With HT40+ setting:

Without HT40+ setting:

Packet analysis

In addition to using Wireshark as described in Home, packets can be captured on each network using tcpdump. Update mininet_runner.py to start tcpdump on selected nodes (see start Wireshark on first node object) or from the CLI, e.g.: R1 xterm then tcpdump -iR1-wlan0. Then use tshark to extract desired fields for analysis.