Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
improve the documentation for the MSG_task_[send|receive]_* functions
[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 sed -i 's/-fPIC/-fPIC -fpermissive/g' Makefile
51 make depend
52 make debug
53 \endverbatim
54
55
56  - <b>NOTE</b> A lot of warnings are expected but the application should compile
57  just fine. If the makefile insists in compiling some QT libraries
58  please try a make clean before asking for help.
59
60
61  - <b>To compile optimized version</b>
62
63 \verbatim
64 make opt
65 \endverbatim
66
67
68  - <b>Installing GTNetS</b>
69
70  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.
71
72 \verbatim
73 ln -sf /<absolute_path>/gtnets_current/libgtsim-debug.so /<userhome>/usr/lib/libgtnets.so
74 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/<userhome>/usr/lib/libgtnets.so
75 mkdir /<userhome>/usr/include/gtnets
76 cp -fr SRC/*.h /<userhome>/usr/include/gtnets
77 \endverbatim
78
79
80  - <b>Enable GTNetS support in SimGrid</b>
81  
82 In order to enable gtnets with simgrid you have to give where is gtnets. (path to \<gtnets_path\>/lib and \<gtnets_path\>/include)
83
84 \verbatim
85 cmake . -Denable_gtnets=ON -Dgtnets_path=/<userhome>/usr
86 \endverbatim
87
88  - <b>Once you have followed all the instructions for compiling and
89    installing successfully you can activate this feature at 
90    runntime with the following options:</b>
91
92 \verbatim
93 cd simgrid
94 make
95 ctest -R gtnets
96 \endverbatim
97
98
99  - <b>Or try the GTNetS model dogbone example with</b>
100
101 \verbatim
102 gtnets/gtnets gtnets/onelink-p.xml gtnets/onelink-d.xml --cfg=network_model:GTNets
103 \endverbatim
104
105  
106  A long version of this <a href="http://gforge.inria.fr/docman/view.php/12/6283/GTNetS HowTo.html">HowTo</a>  it is available 
107
108
109  More about GTNetS simulator at <a href="http://www.ece.gatech.edu/research/labs/MANIACS/GTNetS/index.html">GTNetS Website</a>
110
111
112  - <b>DISCLAIMER</b>
113  The patches provided by us worked successfully with GTNetS found 
114  <a href="http://www.ece.gatech.edu/research/labs/MANIACS/GTNetS/software/gtnets-current.zip">here</a>, 
115  dated from 12th June 2008. Due to the discontinuing development of
116  GTNetS it is impossible to precise a version number. We STRONGLY recommend you
117  to download and install the GTNetS version found in SimGrid repository as explained above.
118
119 \section pls_simgrid_configuration_ns3 Using NS3
120
121 It is possible to use discrete-event network simulator <a href="http://www.nsnam.org/">(ns-3)</a> for Internet systems
122 instead of the default one. 
123
124 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 : 
125
126 <ul>
127 <li>
128 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...
129 </li>
130
131 <li>
132 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.
133 </li>
134
135 <li>
136 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 
137 an end host to the platform ; if not, your end host will be considered as a router. 
138 </li>
139
140 </ul>
141 <i>
142 To use ns3 model inside SimGrid you have to install at least the version 3.10 of ns3 simulator.
143 </i>
144
145 - <b>Download and enter the lateast release (here the 3.12.1)</b>
146
147 \verbatim
148 http://www.nsnam.org/release/ns-allinone-3.12.1.tar.bz2
149 tar -xf ns-allinone-3.12.1.tar.bz2
150 cd ns-allinone-3.12.1/ns-3.12.1/
151 \endverbatim
152
153 - <b>Configure, make and install ns3</b>
154
155 \verbatim
156 ./waf configure --prefix="ns-3_install_directory"
157 ./waf
158 ./waf install
159 \endverbatim
160
161 After install ns-3 you should have directories into your "ns-3_install_directory":
162         \li include/ns3/ 
163         \li lib/ 
164         \li bin/ (with 3.12)
165         
166 You also need to add to the LD_LIBRARY_PATH : "ns-3_install_directory/lib".
167
168 - <b>Enable ns-3 support on SimGrid</b>
169
170 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)
171
172 \verbatim
173 cmake . -Denable_ns3=ON -Dns3_path=<ns3_path>
174 \endverbatim
175
176 With the output of the configuration you can see if ns-3 is detected by included the directory to flags.
177
178 \verbatim
179 Configuration of package `simgrid' on arch (=4):
180              BUILDNAME :        UNIX
181              SITE      :        Linux_2.6.38-11-generic_x86_64
182              Release   :        simgrid-3.6.1
183
184          Compiler: c++ :        /usr/bin/c++
185                 version:        4.6.1
186          Compiler: c   :        /usr/bin/gcc
187                 version:        4.6.1
188
189                CFlags  :        -O3 -finline-functions -funroll-loops -fno-strict-aliasing -L/usr/lib/x86_64-linux-gnu -I/usr/include 
190                                         -L/home/navarrop/Install/ns3-3.10/lib -I/home/navarrop/Install/ns3-3.10/include -g3  -D_NS3_3_10
191                CPPFlags:        -I/home/navarrop/Install/ns3-3.10/include -L/home/navarrop/Install/ns3-3.10/lib 
192
193         Compile Gtnets :        0
194         Compile NS-3   :        1 ---------------------> Be sure this option is "1" otherwise ns-3 is not activated
195         Gtnets path    :        
196         NS-3 path      :        /home/navarrop/Install/ns3-3.10
197         Compile Lua    :        
198         Compile Smpi   :        OFF
199         Compile Static :        OFF
200         Compile pcre   :        AUTO
201
202         Maintainer mode:        OFF
203         Supernovae mode:        OFF
204         Model checking :        OFF
205         Tracing mode   :        OFF
206         Jedule  mode   :        OFF
207         Latency bound  :        OFF
208         Graphviz mode  :        
209
210         Simgrid dependencies:   -lm -lpcre -lpthread -lns3 -lrt
211         Gras dependencies   :   -lm -lpthread -lrt
212         Smpi dependencies   :   
213
214         INSTALL_PREFIX:         /usr/local
215 -- Configuring done
216 -- Generating done
217 -- Build files have been written to: /home/navarrop/workspace/simgrid/build
218 \endverbatim
219
220 Now you can compile SimGrid
221 \verbatim
222 make
223 \endverbatim
224
225 Then you can see if ns-3 is well activated by testing
226 \verbatim
227 ctest -R ns3
228 \endverbatim
229
230 You should see
231 \verbatim
232     Start 182: msg-ns3-thread
233 1/3 Test #182: msg-ns3-thread ...................   Passed    0.35 sec
234     Start 183: msg-ns3-ucontext
235 2/3 Test #183: msg-ns3-ucontext .................   Passed    0.22 sec
236     Start 184: msg-ns3-raw
237 3/3 Test #184: msg-ns3-raw ......................   Passed    0.23 sec
238 \endverbatim
239
240 More about ns-3 simulator <a href="http://www.nsnam.org/">(Official website)</a>
241
242 */