Introduction¶
Overview¶
Direct Code Execution (DCE) is a module for ns-3 that provides facilities to execute, within ns-3, existing implementations of userspace and kernelspace network protocols or applications without source code changes. For example instead of using the pseudo application provided by ns-3 V4PingHelper you can use the true ping.
Manual Structure¶
This document consists of the following parts:
- Quick Start: The document describes a quick instruction of DCE.
- User’s Guide: The document is for people who will use DCE to experiment.
DCE Outlook¶
- To run an application using DCE, it is not necessary to change its sources. However you will need to recompile them.
- The simulation is executed wholly within a single process which greatly facilitates the debugging.
- DCE is very memory-efficient, thanks to the way it loads the executables similarly to shared libraries.
Supported Features¶
- Simulation with POSIX socket application (no manual modifications)
- C/C++ applications
- Simulation with Linux kernel implemented network protocol
- IPv4/IPv6
- TCP/UDP/DCCP
- running with POSIX socket applications and ns-3 socket applications
- configuration via sysctl-like interface
- multiple nodes debugging with single gdb interface
- memory analysis by single valgrind execution with multiple nodes
- Variance of network stacks
- ns-3 native stack (IPv4/IPv6, partially)
- Network simulation cradle network stack (IPv4 TCP only)
- Linux network stack (IPv4/IPv6/others)
- Per-node configuration/stdin input
- Per-node syslog/stdout/stderr files output
Tested Applications¶
- CCNx
- Quagga
- iperf
- ping/ping6
- ip (iproute2 package)
- Mobilt IPv6 daemon (umip)
- Linux kernel (from 2.6.36 to 3.7 versions)
- http server (thttpd)
- torrent (libtorrent from rasterbar + opentracker)
Tested Environment¶
Currently, DCE only supports Linux-based operating system. DCE has been tested on the following distributions:
- Ubuntu 10.04 64bit
- Ubuntu 12.04 32bit/64bit
- Ubuntu 12.10 64bit
- Ubuntu 13.04 64bit
- Ubuntu 13.10 64bit (new)
- Fedora 18 32bit
- CentOS 6.2 64bit
but you can try on the others (e.g., CentOS, RHEL). If you got run on another distribution, please let us know.