X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/595e59c568ff5f8510de201bfd800951cdc2adcb..9a825e163a82a3e3473094128cd1ceb1136534db:/doc/doxygen/ns3.doc diff --git a/doc/doxygen/ns3.doc b/doc/doxygen/ns3.doc index 5022462a43..b1763a7147 100644 --- a/doc/doxygen/ns3.doc +++ b/doc/doxygen/ns3.doc @@ -1,23 +1,23 @@ -/*! \page pls_ns3 ns-3 as a SimGrid model +/*! @page pls_ns3 ns-3 as a SimGrid model -\tableofcontents +@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. Just install ns-3 and recompile SimGrid accordingly. -\section pls_ns3_install Installing 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 +@verbatim apt-get install libns3-dev ns3 -\endverbatim +@endverbatim You can also install it from scratch with the following commands: -\verbatim +@verbatim # Download the source wget http://www.nsnam.org/release/ns-allinone-3.26.tar.bz2 tar -xf ns-allinone-3.26.tar.bz2 @@ -26,72 +26,101 @@ cd ns-allinone-3.26/ns-3.26/ ./waf configure --prefix="/opt/ns3" # or give another path if you prefer ./waf ./waf install -\endverbatim +@endverbatim For more information, please refer to the ns-3 documentation (official website). -\section pls_ns3_config Enabling SimGrid's support for ns-3 +@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_HINT configuration item. -\verbatim +@verbatim cmake . -Denable_ns3=ON -DNS3_HINT=/opt/ns3 # or change the path if needed -\endverbatim +@endverbatim By the end of the configuration, cmake reports whether ns-3 was found, -and this information is also available in include/simgrid_config.h -If your local copy defines the variable \c SIMGRID_HAVE_NS3 to 1, then NS3 +and this information is also available in include/simgrid/config.h +If your local copy defines the variable @c SIMGRID_HAVE_NS3 to 1, then ns-3 was correctly detected. If it's defined to 0, then something went wrong. Explore CMakeFiles/CMakeOutput.log and CMakeFiles/CMakeError.log to diagnose the problem. Afterward, you can test your installation as follows: -\verbatim +@verbatim $ ctest -R ns3 -\endverbatim +@endverbatim -\subsection pls_ns3_config_trouble Troubleshooting - -If you have a ns-3 version that is not known to SimGrid yet, edit \c -tools/cmake/Modules/FindNS3.cmake in your SimGrid tree, according to -the comments on top of this file. - -If the compilation fails on Debian/Ubuntu when linking the library -because of some .a file that cannot be used dynamically, then you are -probably using a very old (and buggy) libns3-dev -package. Update it, or install libns3-3 manually. - -\section pls_ns3_use Using ns-3 from SimGrid +@section pls_ns3_use Using ns-3 from SimGrid The SimGrid-ns3 binding only contains features that are common to both systems: ns-3 wireless models are not available, while SimGrid routes cannot be longer than 1. Also, the platform built in ns-3 from the SimGrid description is very basic. -If your platform have longer routes, simply add some routers to break -these routes. SimGrid's routers are similar to hosts, without -computational abilities. +Any route longer than one will be ignored when using ns-3. They are +harmless, but you still need to connect your hosts using one-hop routes. +The best solution is to add routers to split your route. Here is an +example of invalid platform: + +@code{.xml} + + + + + + + + + + + + +@endcode + +Here is the same platform expressed in a way that ns-3 will understand. +There is no direct connexion from alice to bob, but that's OK because +ns-3 will find the path from point to point. + +@code{.xml} + + + + + + + + + + + + + + + + + +@endcode -Once your platform is OK, just change the "network/model" -configuration option to "NS3". The rest remains unchanged. -The following should work from the examples/msg/network-ns3 folder, -where the \c network-ns3 binary example lives. +Once your platform is OK, just change the "network/model" +configuration option to "NS3" as follows. The rest remains unchanged. -\verbatim -./network-ns3 ../../platforms/small_platform_one_link_routes.xml 3hosts_2links_d.xml --cfg=network/model:NS3 --log=root.threshold:info -\endverbatim +@verbatim +./network-ns3 ../../platforms/small_platform_one_link_routes.xml 3hosts_2links_d.xml --cfg=network/model:NS3 +@endverbatim Many other files from the examples/platform directory are usable with -the ns-3 model. Check the file -examples/msg/network-ns3/network-ns3.tesh to see which ones are used +the ns-3 model, such as @ref examples/platforms/dogbone.xml. Check the file +examples/deprecated/msg/network-ns3/network-ns3.tesh to see which ones are used in our regression tests. You may also be interested in the @ref msg_ex_ns3 "ns-3/SimGrid examples". +@subsection pls_ns3_shortcomings Shortcomings of the ns-3 bindings in SimGrid + A ns-3 platform is automatically created from the provided SimGrid platform. However, there are some known caveats: @@ -115,4 +144,33 @@ readable) as possible. If the current state does not fit your needs, you should modify this plugin, and/or create your own plugin from the existing one. +@section pls_trouble Troubleshooting with ns-3 and SimGrid + +@subsection pls_ns3_config_trouble I fail to compile ns-3 within SimGrid + +If you have a ns-3 version that is not known to SimGrid yet, edit @c +tools/cmake/Modules/FindNS3.cmake in your SimGrid tree, according to +the comments on top of this file. + +If the compilation fails on Debian/Ubuntu when linking the library +because of some .a file that cannot be used dynamically, then you are +probably using a very old (and buggy) libns3-dev +package. Update it, or install libns3-3 manually. + +@subsection pls_trouble_hang The simulation hangs at some point + +If your simulation hangs in a communication, this is probably because +one host is sending data that is not routable in your platform. Make +sure that you only use routes of length 1, and that any host is +connected to the platform. + +Arguably, SimGrid could detect this situation and report it, but +unfortunately, this is still to be done. + +@subsection pls_trouble_warning I get a warning that some routes are ignored + +Please read again the @ref pls_ns3_use section. + + +@example examples/platforms/dogbone.xml */