SimGrid
3.10
Versatile Simulation of Distributed Systems
|
It is possible to use a packet-level network simulator instead of the default flow-based simulation. You may want to use such an approach if you have doubts about the validity of the default model or if you want to perform some validation experiments. At the moment, we support the GTNetS simulator and since version 3.6.2, ns-3.
To enable GTNetS model inside SimGrid it is needed to patch the GTNetS simulator source code and build/install it from scratch
svn checkout svn://scm.gforge.inria.fr/svn/simgrid/contrib/trunk/GTNetS/ cd GTNetS
unzip gtnets-current.zip tar zxvf gtnets-current-patch.tgz cd gtnets-current cat ../00*.patch | patch -p1
cat ../AMD64-FATAL-Removed-DUL_SIZE_DIFF-Added-fPIC-compillin.patch | patch -p1
Compile GTNetS
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.
ln -sf Makefile.linux Makefile sed -i 's/-fPIC/-fPIC -fpermissive/g' Makefile make depend make debug
make opt
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.
ln -sf /<absolute_path>/gtnets_current/libgtsim-debug.so /<userhome>/usr/lib/libgtnets.so export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}/<userhome>/usr/lib/ mkdir /<userhome>/usr/include/gtnets cp -fr SRC/*.h /<userhome>/usr/include/gtnets
In order to enable gtnets with simgrid you have to give where is gtnets. (path to <gtnets_path>/lib and <gtnets_path>/include)
cmake . -Denable_gtnets=ON -Dgtnets_path=/<userhome>/usr
cd simgrid make ctest -R gtnets
gtnets/gtnets gtnets/onelink-p.xml gtnets/onelink-d.xml --cfg=network_model:GTNets
A long version of this HowTo it is available
More about GTNetS simulator at GTNetS Website
It is possible to use discrete-event network simulator (ns-3) for Internet systems instead of the default one.
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 :
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...
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.
Third, we also choose to restrict the way your platform is built : end hosts cannot have more than one interface card (so, only one <link> in your SimGrid platform should link an end host to the platform ; if not, your end host will be considered as a router.
To use ns3 model inside SimGrid you have to install at least the version 3.10 of ns3 simulator.
http://www.nsnam.org/release/ns-allinone-3.12.1.tar.bz2 tar -xf ns-allinone-3.12.1.tar.bz2 cd ns-allinone-3.12.1/ns-3.12.1/
./waf configure --prefix="ns-3_install_directory" ./waf ./waf install
After install ns-3 you should have directories into your "ns-3_install_directory":
You also need to add to the LD_LIBRARY_PATH : "ns-3_install_directory/lib".
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)
cmake . -Denable_ns3=ON -Dns3_path=<ns3_path>
With the output of the configuration you can see if ns-3 is detected by included the directory to flags.
Configuration of package `simgrid' on arch (=4): BUILDNAME : UNIX SITE : Linux_2.6.38-11-generic_x86_64 Release : simgrid-3.6.1 Compiler: c++ : /usr/bin/c++ version: 4.6.1 Compiler: c : /usr/bin/gcc version: 4.6.1 CFlags : -O3 -finline-functions -funroll-loops -fno-strict-aliasing -L/usr/lib/x86_64-linux-gnu -I/usr/include -L/home/navarrop/Install/ns3-3.10/lib -I/home/navarrop/Install/ns3-3.10/include -g3 -D_NS3_3_10 CPPFlags: -I/home/navarrop/Install/ns3-3.10/include -L/home/navarrop/Install/ns3-3.10/lib Compile Gtnets : 0 Compile NS-3 : 1 ---------------------> Be sure this option is "1" otherwise ns-3 is not activated Gtnets path : NS-3 path : /home/navarrop/Install/ns3-3.10 Compile Lua : Compile Smpi : OFF Compile Static : OFF Maintainer mode: OFF Supernovae mode: OFF Model checking : OFF Tracing mode : OFF Jedule mode : OFF Latency bound : OFF Graphviz mode : Simgrid dependencies: -lm -lpthread -lns3 -lrt Smpi dependencies : INSTALL_PREFIX: /usr/local -- Configuring done -- Generating done -- Build files have been written to: /home/navarrop/workspace/simgrid/build
Now you can compile SimGrid
make
Then you can see if ns-3 is well activated by testing
ctest -R ns3
You should see
Start 182: msg-ns3-thread 1/3 Test #182: msg-ns3-thread ................... Passed 0.35 sec Start 183: msg-ns3-ucontext 2/3 Test #183: msg-ns3-ucontext ................. Passed 0.22 sec Start 184: msg-ns3-raw 3/3 Test #184: msg-ns3-raw ...................... Passed 0.23 sec
More about ns-3 simulator (Official website)