Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
dd4e0e07712a350f0eb4fb6bfa4fadb41be7090c
[simgrid.git] / doc / pls.doc
1 /*! \page pls Packet level simulation
2
3 \htmlinclude .pls.doc.toc
4
5 It is possible to use a packet-level network simulator
6 instead of the default flow-based simulation. You may want to use such
7 an approach if you have doubts about the validity of the default model
8 or if you want to perform some validation experiments. At the moment,
9 we support the GTNetS simulator and since version 3.6.2, ns-3. 
10
11
12 \section pls_simgrid_configuration_gtnets Using GTNetS
13
14
15 <i>
16 To enable GTNetS model inside SimGrid it is needed to patch the GTNetS simulator source code 
17 and build/install it from scratch
18 </i>
19
20  - <b>Download and enter the recent downloaded GTNetS directory</b>
21
22 \verbatim
23 svn checkout svn://scm.gforge.inria.fr/svn/simgrid/contrib/trunk/GTNetS/
24 cd GTNetS
25 \endverbatim
26
27
28  - <b>Use the following commands to unzip and patch GTNetS package to work within SimGrid.</b>
29
30 \verbatim
31 unzip gtnets-current.zip
32 tar zxvf gtnets-current-patch.tgz 
33 cd gtnets-current
34 cat ../00*.patch | patch -p1
35 \endverbatim
36
37   - <b>OPTIONALLY</b> you can use a patch for itanium 64bit processor family.
38
39 \verbatim
40 cat ../AMD64-FATAL-Removed-DUL_SIZE_DIFF-Added-fPIC-compillin.patch | patch -p1
41 \endverbatim
42
43  - <b>Compile GTNetS</b>
44
45    Due to portability issues it is possible that GTNetS does not compile in your architecture. The patches furnished in SimGrid SVN repository are intended for use in Linux architecture only. Unfortunately, we do not have the time, the money, neither the manpower to guarantee GTNetS portability. We advice you to use one of GTNetS communication channel to get more help in compiling GTNetS. 
46
47
48 \verbatim
49 ln -sf Makefile.linux Makefile
50 make depend
51 make debug
52 \endverbatim
53
54
55  - <b>NOTE</b> A lot of warnings are expected but the application should compile
56  just fine. If the makefile insists in compiling some QT libraries
57  please try a make clean before asking for help.
58
59
60  - <b>To compile optimized version</b>
61
62 \verbatim
63 make opt
64 \endverbatim
65
66
67  - <b>Installing GTNetS</b>
68
69  It is important to put the full path of your libgtsim-xxxx.so file when creating the symbolic link. Replace < userhome > by some path you have write access to.
70
71 \verbatim
72 ln -sf /<absolute_path>/gtnets_current/libgtsim-debug.so /<userhome>/usr/lib/libgtnets.so
73 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/<userhome>/usr/lib/libgtnets.so
74 mkdir /<userhome>/usr/include/gtnets
75 cp -fr SRC/*.h /<userhome>/usr/include/gtnets
76 \endverbatim
77
78
79  - <b>Enable GTNetS support in SimGrid</b>
80  
81 In order to enable gtnets with simgrid you have to give where is gtnets. (path to \<gtnets_path\>/lib and \<gtnets_path\>/include)
82
83 \verbatim
84 cmake . -Denable_gtnets=ON -Dgtnets_path=/<userhome>/usr
85 \endverbatim
86
87  - <b>Once you have followed all the instructions for compiling and
88    installing successfully you can activate this feature at 
89    runntime with the following options:</b>
90
91 \verbatim
92 cd simgrid
93 make
94 ctest -R gtnets
95 \endverbatim
96
97
98  - <b>Or try the GTNetS model dogbone example with</b>
99
100 \verbatim
101 gtnets/gtnets gtnets/onelink-p.xml gtnets/onelink-d.xml --cfg=network_model:GTNets
102 \endverbatim
103
104  
105  A long version of this <a href="http://gforge.inria.fr/docman/view.php/12/6283/GTNetS HowTo.html">HowTo</a>  it is available 
106
107
108  More about GTNetS simulator at <a href="http://www.ece.gatech.edu/research/labs/MANIACS/GTNetS/index.html">GTNetS Website</a>
109
110
111  - <b>DISCLAIMER</b>
112  The patches provided by us worked successfully with GTNetS found 
113  <a href="http://www.ece.gatech.edu/research/labs/MANIACS/GTNetS/software/gtnets-current.zip">here</a>, 
114  dated from 12th June 2008. Due to the discontinuing development of
115  GTNetS it is impossible to precise a version number. We STRONGLY recommend you
116  to download and install the GTNetS version found in SimGrid repository as explained above.
117
118 \section pls_simgrid_configuration_ns3 Using NS3
119
120 It is possible to use discrete-event network simulator <a href="http://www.nsnam.org/">(ns-3)</a> for Internet systems
121 instead of the default one. 
122
123 A ns-3 platform is created according to the platform file you provide in SimGrid format. However from this configuration, we had to set up some extra parameters : 
124
125 <ul>
126 <li>
127 First, whenever possible, we let default ns3 values and we don't changed it ; in case you have doubts on values for those parameters (TCP parameters for example), blame ns-3...
128 </li>
129
130 <li>
131 Second, routing used inside ns-3 is a global and static one, relying on a shortest path algorithm. We did so by using ns3::Ipv4GlobalRoutingHelper::PopulateRoutingTables.
132 </li>
133
134 <li>
135 Third, we also choose to restrict the way your platform is built : end hosts cannot have more than one interface card (so, only one &lt;link&gt; in your SimGrid platform should link 
136 an end host to the platform ; if not, your end host will be considered as a router. 
137 </li>
138
139 <li>
140 Finally we <b>STRONGLY</b> encourage you to apply the ns-3 RED patch (even if as the time of writing, it still needs some bugs correcting and the installation is then cumbersome, as described later). The reason why is that the default queue policy on ns-3 side is droptail. It implies a lot of undesirable (and not realistic) phase effects when simulating, and it has an huge impact on simulation times ... 
141 </li>
142 </ul>
143 <i>
144 To use ns3 model inside SimGrid you have to install at least the version 3.10 of ns3 simulator.
145 </i>
146
147 - <b>Download and enter the lateast release (here the 3.12.1)</b>
148
149 \verbatim
150 http://www.nsnam.org/release/ns-allinone-3.12.1.tar.bz2
151 tar -xf ns-allinone-3.12.1.tar.bz2
152 cd ns-allinone-3.12.1/ns-3.12.1/
153 \endverbatim
154
155 - <b>Configure, make and install ns3</b>
156
157 \verbatim
158 ./waf configure --prefix="ns-3_install_directory"
159 ./waf
160 ./waf install
161 \endverbatim
162
163 After install ns-3 you should have directories into your "ns-3_install_directory":
164         \li include/ns3/ 
165         \li lib/ 
166         \li bin/ (with 3.12)
167         
168 You also need to add to the LD_LIBRARY_PATH : "ns-3_install_directory/lib".
169
170 - <b>Enable ns-3 support on SimGrid</b>
171
172 In order to enable ns-3 with simgrid you have to give where is ns-3 to the simgrid configuration command. (path to \<ns3_path\>/lib and \<ns3_path\>/include)
173
174 \verbatim
175 cmake . -Denable_ns3=ON -Dns3_path=<ns3_path>
176 \endverbatim
177
178 With the output of the configuration you can see if ns-3 is detected by included the directory to flags.
179
180 \verbatim
181 Configuration of package `simgrid' on arch (=4):
182              BUILDNAME :        UNIX
183              SITE      :        Linux_2.6.38-11-generic_x86_64
184              Release   :        simgrid-3.6.1
185
186          Compiler: c++ :        /usr/bin/c++
187                 version:        4.6.1
188          Compiler: c   :        /usr/bin/gcc
189                 version:        4.6.1
190
191                CFlags  :        -O3 -finline-functions -funroll-loops -fno-strict-aliasing -L/usr/lib/x86_64-linux-gnu -I/usr/include 
192                                         -L/home/navarrop/Install/ns3-3.10/lib -I/home/navarrop/Install/ns3-3.10/include -g3  -D_NS3_3_10
193                CPPFlags:        -I/home/navarrop/Install/ns3-3.10/include -L/home/navarrop/Install/ns3-3.10/lib 
194
195         Compile Gtnets :        0
196         Compile NS-3   :        1 ---------------------> Be sure this option is "1" otherwise ns-3 is not activated
197         Gtnets path    :        
198         NS-3 path      :        /home/navarrop/Install/ns3-3.10
199         Compile Lua    :        
200         Compile Smpi   :        OFF
201         Compile Static :        OFF
202         Compile pcre   :        AUTO
203
204         Maintainer mode:        OFF
205         Supernovae mode:        OFF
206         Model checking :        OFF
207         Tracing mode   :        OFF
208         Jedule  mode   :        OFF
209         Latency bound  :        OFF
210         Graphviz mode  :        
211
212         Simgrid dependencies:   -lm -lpcre -lpthread -lns3 -lrt
213         Gras dependencies   :   -lm -lpthread -lrt
214         Smpi dependencies   :   
215
216         INSTALL_PREFIX:         /usr/local
217 -- Configuring done
218 -- Generating done
219 -- Build files have been written to: /home/navarrop/workspace/simgrid/build
220 \endverbatim
221
222 Now you can compile SimGrid
223 \verbatim
224 make
225 \endverbatim
226
227 Then you can see if ns-3 is well activated by testing
228 \verbatim
229 ctest -R ns3
230 \endverbatim
231
232 You should see
233 \verbatim
234     Start 182: msg-ns3-thread
235 1/3 Test #182: msg-ns3-thread ...................   Passed    0.35 sec
236     Start 183: msg-ns3-ucontext
237 2/3 Test #183: msg-ns3-ucontext .................   Passed    0.22 sec
238     Start 184: msg-ns3-raw
239 3/3 Test #184: msg-ns3-raw ......................   Passed    0.23 sec
240 \endverbatim
241
242 More about ns-3 simulator <a href="http://www.nsnam.org/">(Official website)</a>
243
244 */