Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
kill 2 dumb functions in simix_vm
[simgrid.git] / doc / doxygen / ns3.doc
1 /*! \page pls_ns3 ns-3 as a SimGrid model
2
3 \tableofcontents
4
5 You can use the well-known 
6 <a href="http://www.nsnam.org/"><b>ns-3</b></a> packet-level network
7 simulator as a SimGrid model, for example to investigate the validity
8 of your simulation. 
9
10 This binding is still somehow limited: you can only express what is at
11 the intersection between ns-3 and SimGrid. For example, ns-3 wireless
12 models are not available, while no route longuer than 1 must appear in
13 your SimGrid platform (add routers on need).
14
15 But if you stick to what is possible in both systems, there should be
16 very little things to change in your SimGrid settings (platform and
17 experimental scenario) to use ns-3
18
19 \section pls_ns3_install Installing ns-3
20
21 The easiest is to install it with the package manager. Under Debian/Ubuntu, simply type as root:
22
23 \verbatim
24 apt-get install libns3-dev ns3
25 \endverbatim
26
27 You can also install it from scratch with the following commands:
28
29 \verbatim
30 # Download the source
31 wget http://www.nsnam.org/release/ns-allinone-3.25.tar.bz2
32 tar -xf ns-allinone-3.25.tar.bz2
33 cd ns-allinone-3.25/ns-3.25/
34 # Configure, build and install
35 ./waf configure --prefix="/opt/ns3" # or give another path if you prefer
36 ./waf
37 ./waf install
38 \endverbatim
39
40 For more information, please refer to the ns-3 documentation.
41
42 \section pls_ns3_config Enabling SimGrid's support for ns-3
43
44 Normally, you just have to enable ns-3 in ccmake or cmake as follows. If you installed ns-3 in a regular path, just
45 drop the ns3_path configuration item.
46
47 \verbatim
48 cmake . -Denable_ns3=ON -DNS3_HINT=/opt/ns3 # or change the path if needed
49 \endverbatim
50
51 By the end of the configuration, cmake reports whether ns-3 was found. You can also double-check by executing the tests
52 after the compilation.
53
54 \verbatim
55 $ ctest -R ns3
56 (test(s) should be run)
57 \endverbatim
58
59 If you have a ns-3 version that is not known to SimGrid (yet), the detection may fail. In that case, edit the
60 tools/cmake/Modules/FindNS3.cmake file in your SimGrid tree. The
61 required changes are very easy, and documented in the file header.
62
63 If the compilation fails when linking the library because of some .a file that cannot be used dynamically, this is 
64 probably because you only installed the libns3-dev library on your Debian, where you also need libns3-3. This is 
65 probably a bug of the libns3-dev package that should depend on the dynamic libraries corresponding to its .so files.
66
67 \section pls_ns3_use Using ns-3 from SimGrid
68
69 Basically, you just have to run your SimGrid simulation with the
70 configuration option "network/model" set to "NS3". The rest remains
71 unchanged.
72
73 The following should work from the examples/msg/network-ns3 folder (network-ns3 is the name of our example binary).
74
75 \verbatim
76 ./network-ns3 ./3hosts_2links_p.xml 3hosts_2links_d.xml --cfg=network/model:NS3 --log=root.threshold:info
77 \endverbatim
78
79 A ns-3 platform is automatically created from the provided SimGrid platform file. However, there are some known caveats:
80
81 <ul>
82   <li>The default values (e.g., TCP parameters) are the ns3 values. Don't blame us for them.</li>  
83
84   <li>ns-3 networks are routed using the shortest path algorithm, using
85    ns3::Ipv4GlobalRoutingHelper::PopulateRoutingTables.</li>
86
87   <li>End hosts cannot have more than one interface card (so, only one &lt;link&gt; in your SimGrid platform should 
88    link an end host to the platform ; if not, your end host will be considered as a router.  </li>
89 </ul>
90
91 More about ns-3 simulator <a href="http://www.nsnam.org/">(Official website)</a>
92
93 \subsection ns3_examples Examples
94
95 For an example using NS3 as a SimGrid module, please refer to the 
96 @ref msg_ex_ns3 "relevant section" of the documentation.
97
98 */