Skip to content
mrequena edited this page Sep 1, 2017 · 4 revisions

Introduction

This page provides the documentation for the Summer Project High Performance Emulation of Real Devices in ns-3 supported by ESA Summer of Code in Space. It includes the project abstract, the deliverables expected for the end of the project, an how to install netmap and how to configure ns-3 and, finally, how to use the netmap features in ns-3. Weekly reports and other details can be found at the ns-3 wiki page here.

Abstract

The goal of the project is the improvement of the emulation performance of the simulator. The project introduces a device in ns-3 that uses the netmap primitives to process the incoming and outgoing traffic. netmap is a fast packets processing that bypass the host networking stack and gains direct access to network device. Also, the project introduces a flow control mechanism between the traffic control of ns-3 and the device ring. Finally, the project introduces a performance evaluation of the introduced device in ns-3 in emulation scenarios on real device. The project enables a more accurate evaluation of high level protocols, e.g., Deley Tolerant Networking protocols (DTN), and of the scheduling algorithms in emulated scenarios.

Deliverables

By the end of the project, the following will be delivered to the ns-3 fd-net-device module

  • the NetmapNetDevice to send and receive packet using the netmap primitives on an emulated real device and its support for flow control and BQL
  • EmuFdNetDeviceHelper extension to provide helper functions useful to set the netmap emulation mode
  • functional testing of the new device by ping a real host connected back-to-back through ethernet with or without presence of traffic load
  • benchmark of the new device: comparison of the new device with the FdNetDevice in standard emulation mode in a real scenario of back-to-back throught ethernet of two ns-3 nodes; performance evaluation in term of throghput, rtt, qdisc backlog and dropping.

Software Requirments

To explore the netmap emulation capabilities introduced in ns-3 is required a netmap installation on the host machine. The user can download in a local folder the netmap code from the official repository by git

git clone https://github.com/luigirizzo/netmap

In the local folder, the user runs the configure without driver addition to use netmap in generic mode

./configure --no-drivers

and then generate the netmap kernel module, i.e., netmap.ko, with

make

and finally, install the netmap headers with

make install

The ns-3 code that supports the netmap features resides in the branch socis of this repository. The user can download the branch by git with

git clone https://github.com/pasquimp/ns-3-dev-git -b socis

Switching an interface in netmap mode requires that the raw-socket-creator program in ns-3 has sudo privileges. Then, the user must configure ns-3 with the --enable-sudo option such as in the following configuration

./waf configure --build-profile=debug --enable-examples --enable-sudo

After that, in the optional features section of the configuration output the user find

---- Summary of optional NS-3 features:

...

Netmap emulation FdNetDevice : enabled

and the user can now use the netmap emulation features implemented in ns-3.

Usage

Before the use of the netmap emulation capabilities, the user must load the netmap.ko kernel module generated in the previous step. In the netmap local folder, the user can run

sudo insmod netmap.ko

After the loading of the netmap module, the user can use the netmap related examples implemented in ns-3. For instance, after the proper configuration of the script (i.e., the interface name, the network address, mask and gateway), the user can run

./waf --run 'src/fd-net-device/examples/fd-netmap-emu-ping'

the fd-netmap-emu-ping examples provided in the examples folder of the fd-net-device module.

Clone this wiki locally