X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e37929cd4f8349d37d59645a95be3ca7a01ed353..98926ddb21f3361caf5d8e3bb9d33c0d56fef7a2:/doc/doxygen/ns3.doc diff --git a/doc/doxygen/ns3.doc b/doc/doxygen/ns3.doc index c34f7831ae..c91fa5561e 100644 --- a/doc/doxygen/ns3.doc +++ b/doc/doxygen/ns3.doc @@ -5,16 +5,7 @@ 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 +of your simulation. Just install ns-3 and recompile SimGrid accordingly. \section pls_ns3_install Installing ns-3 @@ -28,71 +19,158 @@ 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/ +wget http://www.nsnam.org/release/ns-allinone-3.26.tar.bz2 +tar -xf ns-allinone-3.26.tar.bz2 +cd ns-allinone-3.26/ns-3.26/ # 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. +For more information, please refer to the ns-3 documentation +(official website). \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. +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 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. +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 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 $ 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). +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. + +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" as follows. The rest remains unchanged. \verbatim -./network-ns3 ./3hosts_2links_p.xml 3hosts_2links_d.xml --cfg=network/model:NS3 --log=root.threshold:info +./network-ns3 ../../platforms/small_platform_one_link_routes.xml 3hosts_2links_d.xml --cfg=network/model:NS3 \endverbatim -A ns-3 platform is automatically created from the provided SimGrid platform file. However, there are some known caveats: +Many other files from the examples/platform directory are usable with +the ns-3 model, such as @ref examples/platforms/dogbone.xml. Check the file +examples/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: -More about ns-3 simulator (Official website) +Our goal is to keep the ns-3 plugin of SimGrid as easy (and hopefully +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 -\subsection ns3_examples Examples +Please read again the @ref pls_ns3_use section. -For an example using NS3 as a SimGrid module, please refer to the -@ref msg_ex_ns3 "relevant section" of the documentation. +@example examples/platforms/dogbone.xml */