-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
305 lines (259 loc) · 14.5 KB
/
index.html
File metadata and controls
305 lines (259 loc) · 14.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
<html>
<head>
<title>MaxiNet: Distributed Network Emulation</title>
<!-- Google Fonts embed code -->
<script type="text/javascript">
(function() {
var link_element = document.createElement("link"),
s = document.getElementsByTagName("script")[0];
if (window.location.protocol !== "http:" && window.location.protocol !== "https:") {
link_element.href = "http:";
}
link_element.href += "//fonts.googleapis.com/css?family=Lato:100italic,100,300italic,300,400";
link_element.rel = "stylesheet";
link_element.type = "text/css";
s.parentNode.insertBefore(link_element, s);
})();
</script>
<style>
body {
font-family: "Lato";
font-style: normal;
font-weight: 300;
}
.menuspacer {
position: relative; width:1px; height:30px; background:#ffffff; float: left;
}
.menuitem {
position: relative; width: 130px; font-size:16; font-weight: 300; float:left; color: #ffffff;
}
h1 {
font-size:40; letter-spacing: 4px;
font-family: "Lato";
font-weight: 100;
font-style: normal;
color: #009FE3;
padding-top:40px;
}
.contentOdd {
background: #F3FAFF;
padding: 10px;
margin-bottom: 50px;
text-align: justify;
}
.contentEven {
background: #E6F5FE;
padding: 10px;
margin-bottom: 50px;
text-align: justify;
}
</style>
</head>
<body style="margin-left:0px; margin-top:0px">
<center>
<div style='position:fixed; height:22px; width:100%; background:#000000; border-bottom: solid 5px #ffffff'>
</div>
<div style="vertical-align: middle">
<div style="position:fixed; width:100%">
<div style='position:relative; margin-left: auto; margin-right: auto; text-align:center; height:22px; width:1020px; letter-spacing: 0px'>
<div style="position: relative; width: 100px; font-size:16; float:left; color: #ffffff"><font color="#009FE3">M</font>axi<font color="#009FE3">N</font>et</div>
<a href="#overview"><div class="menuitem">Overview</div></a>
<div class="menuspacer"></div>
<a href="#performance"><div class="menuitem">Performance</div></a>
<div class="menuspacer"></div>
<a href="#quickstart"><div class="menuitem">Quickstart</div></a>
<div class="menuspacer"></div>
<a href="#features"><div class="menuitem">Features</div></a>
<div class="menuspacer"></div>
<a href="#installation"><div class="menuitem">Installation</div></a>
<div class="menuspacer"></div>
<a href="#download"><div class="menuitem">Download</div></a>
<div class="menuspacer"></div>
<a href="#contact"><div class="menuitem">Contact</div></a>
</div>
</div>
<div style="height:1000px; width:1000px" align="left">
<center><img src="maxinetLogo.png" width="800px" alt="MaxiNet Distributed Emulation of Software-Defined Networks"></center><br>
<h1 id="overview">Overview</h1>
<div class="contentOdd">
MaxiNet extends the famous Mininet emulation environment to span the emulation across several physical machines. This allows to emulate very large software-defined networks.
<br><br>
MaxiNet runs on a pool of multiple physical machines called Workers. Each of these Workers runs a Mininet emulation and only emulates a part of the whole network. Switches and hosts are interconnected using GRE tunnels across different Workers. MaxiNet provides a centralized API for controlling the emulation. This API is invoked at a specialized Worker called the Frontend. The Frontend partitions and distributes the virtual network onto the Workers and keeps a list of which node resides on which Worker. This way we can access all nodes through the Frontend.
<br><br>
The newest stable release of MaxiNet is Version 1.0.0, released June 2015.<br>
MaxiNet uses Mininet 2.2.1rc1 and has been tested to work with Debian 8.0 and Ubuntu 14.04.
</div>
<h1 id="performance">Performance</h1>
<div class="contentEven">
<img src="speedup.png" width="500px" align="right" style="margin-left: 10px; margin-bottom:10px">
MaxiNet gives you <b>more than linear speedup</b> for your experiments!<br><br>
MaxiNet scales nicely with increasing number of physical machines. To find out, we conducted the following experiments:
We both emulate a fat-tree and a topology consisting of various small independant islands. In the experiments, we use a traffic pattern that fully saturates
every single link. The figure plots the resource usage of the physical machines for different numbers of workers. The green line (s=n) depicts a hypothetical
linear scaling where the achieved speedup is equal to the number of physical resources. One can see that the speedups for actual experiments are
(depending on the emulated topology) more than linear.
The fat-tree toplogy does not scale well because the root switch of the tree gets the bottleneck of the emulation. As MaxiNet does not emulate
single switches on multiple physical machines, the physical machine emulating the root switch becomes the bottleneck of the experiment.
</div>
<h1 id="quickstart">Quickstart</h1>
<div class="contentOdd">
There are two ways to get started using MaxiNet: Using our <b>preconfigured Virtual Machine Images</b> or <b>installing from scratch</b>.<br>
For starters, we recommend to use our preconfigured Virtual Machine Images. When performance matters, MaxiNet should definitively be used on non-virtualized machines.
<br><br>
Download these two Virtual Machine images: <br>
<a href="http://groups.uni-paderborn.de/fg-karl/maxinet/MaxiNet-1.0-rc1.ova">[MaxiNet-1.0-rc1.ova]</a> MD5 (MaxiNet-1.0-rc1.ova) = 6dfc4546bd48bc727861b0ad51ecf2ca<br>
<br>
<b>The username for both machines is maxinet with the password maxinet.</b>
<br><br>
The file MaxiNet-1.0-rc1.ova contains two virtual machine images: worker1 and worker 2.
<br />
You need a program like <a target="_blank" href="https://www.virtualbox.org/">Virtual Box</a> to run them on your computer.
<br /><br />
Start each virtual machine on a dedicated physical machine and make sure the virtual machines can reach each other.
For testing purposes both virtual machines can also run on the same physical machine.
<br />
The virtual machines are using the IP addresses 192.168.0.1 and 192.168.0.2 on the interface eth0. Make sure both machines can reach each other.
<br />
To start the emulation process, login into worker1 and cd to /home/maxinet/maxinet/Frontend/examples/
<br />
Specify the OpenFlow controller by editing the file /etc/MaxiNet.cfg. You have to change the line
<pre style="background-color:#ffffff; padding:5px">
controller = "192.168.0.1:6633" # default controller
</pre>
to point to the IP address of your OpenFlow controller. Make sure the controller is reachable from both worker1 and worker2.
<br />
You can also start a pox controller at worker1 by invoking the commands:
<pre style="background-color:#ffffff; padding:5px">
maxinet@worker1:~$ cd pox
maxinet@worker1:~/pox$ screen -d -m -S PoxScr ./pox.py forwarding.l2_learning
</pre>
<br />
Before any MaxiNet expepriment can be executed, you first need to start the MaxiNetFrontendServer and the MaxiNetWorkerServers.
To this end, on worker1, execute the following commands to start both the Frontend and a Worker:
<pre style="background-color:#ffffff; padding:5px">
maxinet@worker1:~$ screen -d -m -S MaxiNetFrontend MaxiNetFrontendServer
maxinet@worker1:~$ screen -d -m -S MaxiNetWorker sudo MaxiNetWorker
</pre>
and on worker2, execute the following to start a second Worker:
<pre style="background-color:#ffffff; padding:5px">
maxinet@worker2:~$ sudo screen -d -m -S MaxiNetWorker MaxiNetWorker
</pre>
Until now, we have a running Frontend server with two connected Workers. You can check the status of the MaxiNet cluster with the command MaxiNetStatus
<pre style="background-color:#ffffff; padding:5px">
maxinet@worker2:~$ MaxiNetStatus
MaxiNet Frontend server running at 192.168.0.1
Number of connected workers: 2
--------------------------------
worker1 free
worker2 free
</pre>
As you can see, the cluster has two workers which are currently not allocated to an experiment.
<br><br>
You can now start the simplePing example as user maxinet.
<pre style="background-color:#ffffff; padding:5px">
maxinet@worker1:~/maxinet/Frontend/examples$ python simplePing.py
</pre>
You can find even more examples under ~/maxinet/Frontend/examples.
</div>
<h1 id="features">Features</h1>
<div class="contentEven">
<a target="_blank" href="cli.png"><img src="cli.png" width="300px" alt="MaxiNet Monitoring" align="right"></a>
The build-in <b>interactive command line interface</b> (CLI) helps you debugging your experiments. With the CLI, you can execute arbitrary commands at any emulated host.
You can even execute commands directly at the workers. In addition, the CLI lets you check which hosts and switches are emulated at which physical machine.
The CLI supports X forwarding, which means that you can execute grafical user interfaces on both the workers and
the emulated hosts.
<br clear="all"><br>
<a href="plot2workersWeb.png" target="_blank"><img src="plot2workersWeb.png" width="300px" alt="MaxiNet Monitoring" align="right"></a>
MaxiNets <b>Monitoring</b> functionality automatically logs and evaluates the physical resource usage over the course of your experiments. To this end,
MaxiNet monitors CPU utilization, memory consumption, and network usage of all physical workers. After an experiment has been finished, this data can be plotted and
evaluated to make sure none of the phsical resources was overwhelmed by the experiment.
<br clear="all"><br><br><br>
<!-- Reference to Docker in accordance with the guidelines:
https://www.docker.com/brand-guidelines
https://www.docker.com/trademark-guidelines
-->
<a target="_blank" href="https://www.docker.com/"><img src="https://www.docker.com/sites/default/files/legal/small_h-dark.png" width="300px" alt="Docker" align="right"></a>
The <b>Docker container support</b> allows you to run more sophisticated experiments and complex applications in your emulated network environment.
Further information can be found in the <a href="https://github.com/MaxiNet/MaxiNet/wiki/Docker-Containers">wiki</a>.
<br clear="all"><br>
</div>
<h1 id="installation">Installation</h1>
<div class="contentOdd">
For an automatic installation of MaxiNet use the installer.sh script.
<br /><br />
<b>You can download it here:</b>
<a href="https://raw.githubusercontent.com/MaxiNet/MaxiNet/master/installer.sh">[installer.sh]</a> <br />
<br />
Just copy the script to each physical machine you want to use MaxiNet on and execute the script as the user you later on want to run MaxiNet with.
Note that the username has to be the same across all installations.<br><br>
If you are running Ubuntu, you now have to setup your user to use <b>sudo</b> without password. This can simply be done by adding the following line to your
/etc/sudoers file.<br>
<pre style="background-color:#ffffff; padding:5px">
yourusername ALL=(ALL) NOPASSWD: ALL
</pre>
Replace yourusername with your user name.
<br><br>
The last thing left to do is copy the MaxiNet.cfg to /etc/ and modify it accordingly.
<pre style="background-color:#ffffff; padding:5px">
sudo cp ~/MaxiNet/share/MaxiNet-cfg-sample /etc/MaxiNet.cfg
</pre>
If you do not wish to have the MaxiNet.cfg in /etc/ you can also save it to ~/.MaxiNet.cfg<br><br>
Edit the config file according to the hints given at <a target="_blank" href="https://github.com/MaxiNet/MaxiNet/wiki/Configuration-File">our wiki</a>.
<br>
Note that under Ubuntu, you need to set
<pre style="background-color:#ffffff; padding:5px">
[all]
...
sshuser = yourusername
usesudo = True
</pre>
</div>
<h1 id="download">Download</h1>
<div class="contentEven">
Go to <a href="https://github.com/MaxiNet/MaxiNet" target="_blank">https://github.com/MaxiNet/MaxiNet</a> to get the current development version of MaxiNet.<br>
<br>
<a href="https://rawgit.com/MaxiNet/MaxiNet/v1.0/doc/maxinet.html" target="_blank">You find all documentation and an API reference here</a>
<br><br>
If you need more information, visit our <a href="https://github.com/MaxiNet/MaxiNet/wiki" target="_blank">Wiki</a>.
</div>
<h1 id="contact">Contact</h1>
<div class="contentOdd">
If you want to cite this work, please use this reference:<br>
P. Wette, M. Dräxler, A. Schwabe, F. Wallaschek, M. Hassan Zahraee, H. Karl: <i>MaxiNet: Distributed Emulation of Software-Defined Networks</i>. In IFIP Networking 2014 Conference (Networking 2014). [<a href="http://www.cs.uni-paderborn.de/uploads/tx_sibibtex/maxinet_networking14.pdf">PDF</a>]
<br><br>
If you want to contact us feel free to join our mailing list maxinet@lists.upb.de<br />
You can subscribe to the list at <a href="https://lists.uni-paderborn.de/mailman/listinfo/maxinet">https://lists.uni-paderborn.de/mailman/listinfo/maxinet</a>
<br /><br />
MaxiNet is actively developed by:
<ul>
<li>Philip Wette</li>
<li>Felix Wallaschek</li>
<li>Arne Schwabe</li>
<li>Malte Splietker</li>
</ul>
This work was partially supported by the German Research Foundation (DFG) within the Collaborative Research Centre "On-The-Fly Computing" (SFB 901).<br />
The research leading to these results has received funding from the European Union's Seventh Framework Programme (FP7/2007-2013) under grant agreement no 318115.
</div>
</div>
</div>
</center>
<div id="eXTReMe"><a href="http://extremetracking.com/open?login=pwette">
<img src="http://t1.extreme-dm.com/i.gif" style="border: 0;" height="0" width="0" id="EXim" alt="eXTReMe Tracker" /></a>
<script type="text/javascript"><!--
EXref="";top.document.referrer?EXref=top.document.referrer:EXref=document.referrer;//-->
</script><script type="text/javascript"><!--
var EXlogin='pwette' // Login
var EXvsrv='s9' // VServer
EXs=screen;EXw=EXs.width;navigator.appName!="Netscape"?
EXb=EXs.colorDepth:EXb=EXs.pixelDepth;EXsrc="src";
navigator.javaEnabled()==1?EXjv="y":EXjv="n";
EXd=document;EXw?"":EXw="na";EXb?"":EXb="na";
EXref?EXref=EXref:EXref=EXd.referrer;
EXd.write("<img "+EXsrc+"=http://e0.extreme-dm.com",
"/"+EXvsrv+".g?login="+EXlogin+"&",
"jv="+EXjv+"&j=y&srw="+EXw+"&srb="+EXb+"&",
"l="+escape(EXref)+" height=1 width=1>");//-->
</script><noscript><div id="neXTReMe"><img height="1" width="1" alt="" src="http://e0.extreme-dm.com/s9.g?login=pwette&j=n&jv=n" />
</div></noscript></div></div><div class="clearer" style="height:0em;"></div>
</body>
</html>