/*! \page pls_ns3 ns-3 as a SimGrid model \tableofcontents You can use the well-known ns-3 packet-level network simulator as a SimGrid model, for example to investigate the validity of your simulation. This binding is still somehow limited: you can only express what is at the intersection between ns-3 and SimGrid. For example, ns-3 wireless models are not available, while no route longuer than 1 must appear in your SimGrid platform (add routers on need). But if you stick to what is possible in both systems, there should be very little things to change in your SimGrid settings (platform and experimental scenario) to use ns-3 \section pls_ns3_install Installing ns-3 The easiest is to install it with the package manager. Under Debian/Ubuntu, simply type as root: \verbatim apt-get install libns3-dev ns3 \endverbatim You can also install it from scratch with the following commands: \verbatim # Download the source wget http://www.nsnam.org/release/ns-allinone-3.25.tar.bz2 tar -xf ns-allinone-3.25.tar.bz2 cd ns-allinone-3.25/ns-3.25/ # Configure, build and install ./waf configure --prefix="/opt/ns3" # or give another path if you prefer ./waf ./waf install \endverbatim For more information, please refer to the ns-3 documentation. \section pls_ns3_config Enabling SimGrid's support for ns-3 Normally, you just have to enable ns-3 in ccmake or cmake as follows. If you installed ns-3 in a regular path, just drop the ns3_path configuration item. \verbatim cmake . -Denable_ns3=ON -DNS3_HINT=/opt/ns3 # or change the path if needed \endverbatim By the end of the configuration, cmake reports whether ns-3 was found. You can also double-check by executing the tests after the compilation. \verbatim $ ctest -R ns3 (test(s) should be run) \endverbatim If you have a ns-3 version that is not known to SimGrid (yet), the detection may fail. In that case, edit the tools/cmake/Modules/FindNS3.cmake file in your SimGrid tree. The required changes are very easy, and documented in the file header. If the compilation fails when linking the library because of some .a file that cannot be used dynamically, this is probably because you only installed the libns3-dev library on your Debian, where you also need libns3-3. This is probably a bug of the libns3-dev package that should depend on the dynamic libraries corresponding to its .so files. \section pls_ns3_use Using ns-3 from SimGrid Basically, you just have to run your SimGrid simulation with the configuration option "network/model" set to "NS3". The rest remains unchanged. The following should work from the examples/msg/network-ns3 folder (network-ns3 is the name of our example binary). \verbatim ./network-ns3 ./3hosts_2links_p.xml 3hosts_2links_d.xml --cfg=network/model:NS3 --log=root.threshold:info \endverbatim A ns-3 platform is automatically created from the provided SimGrid platform file. However, there are some known caveats: