-
Notifications
You must be signed in to change notification settings - Fork 2
Notes
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 |
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.
The updated mininet testbed works with Mininet-WiFi 2.5 instead of Mininet-WiFi v2.4.3. To upgrade Mininet-Wifi:
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: See https://github.com/nps-ros2/mininet_testbed/wiki or https://github.com/intrig-unicamp/mininet-wifi
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
.
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.
- 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.
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:
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.