-
Notifications
You must be signed in to change notification settings - Fork 2
Home
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.
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.
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.
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.
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.