-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathwebserver.html
More file actions
250 lines (230 loc) · 15.1 KB
/
webserver.html
File metadata and controls
250 lines (230 loc) · 15.1 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
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>VCNL | Three Node Routing</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="keywords" content="free html5, free template, free bootstrap, html5, css3, mobile first, responsive" />
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
<link rel="shortcut icon" href="favicon.ico">
<link href='https://fonts.googleapis.com/css?family=Roboto+Slab:400,300,700|Roboto:300,400' rel='stylesheet' type='text/css'>
<!-- Animate.css -->
<link rel="stylesheet" href="css/animate.css">
<!-- Icomoon Icon Fonts-->
<link rel="stylesheet" href="css/icomoon.css">
<!-- Bootstrap -->
<link rel="stylesheet" href="css/bootstrap.css">
<link rel="stylesheet" href="css/style.css">
<!-- Modernizr JS -->
<script src="js/modernizr-2.6.2.min.js"></script>
<!-- FOR IE9 below -->
<!--[if lt IE 9]>
<script src="js/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="overlay">
<div class="wrapper">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
</div>
<div class="box-wrap">
<header role="banner" id="fh5co-header">
<div class="container">
<nav class="navbar navbar-default">
<div class="row">
<div class="geni-logo col-md-3">
<div class="fh5co-navbar-brand">
<a class="fh5co-logo" href="index.html"><img src="images/geni_logo.png" alt="Closest Logo"></a>
</div>
</div>
<div class="col-md-7">
<ul class="nav text-center">
<li ><a href="index.html"><span>Home</span></a></li>
<li class="active"><a href="modules.html">Modules</a></li>
<li><a href="aboutUs.html">About Us</a></li>
<li><a href="faq.html">FAQ</a></li>
<li><a href="contact.html">Contact Us</a></li>
</ul>
</div>
<div class="col-md-2">
<ul class="social">
<li><a href="http://facebook.com/vcnl" target="_blank"><i class="icon-facebook"></i></a></li>
<li><a href="http://twitter.com/vcnl" target="_blank"><i class="icon-twitter"></i></a></li>
<li><a href="#"><i class="icon-linkedin"></i></a></li>
</ul>
</div>
</div>
</nav>
</div>
</header>
<!-- END: header -->
<section id="product">
<div class="container">
<div class="row animate-box">
<div class="col-md-12 section-heading text-center">
<h2><u>E3: Data-Center</u></h2>
</div>
</div>
<div class="row">
<div class="post-entry">
<div class="col-md-8 col-md-offset-2">
<div class="post animate-box">
<div class="col-md-12"><a href="#link1"><img class="vidFrame" width="300px" src="images/video-thumbnail.png"></a></div>
</div>
</div>
</div>
<a href="#_" class="lightbox" id="link1">
<iframe id="autoplayvideoframe" class="vidFrame" width="700" height="500" src="https://www.youtube.com/embed/QlNO0OwmfsA" frameborder="0" allowfullscreen></iframe>
</a>
</div>
<div class="row">
<div class="col-md-8 col-md-offset-2 animate-box">
<h2>Overview</h2>
<p>The purpose of this experiment is to give an intuition behind how the client requests are shared among the servers in a data-center. The experiment also gives an insight into anycasting, how the packet destination is modified for routing, different algorithms for load balancing. Assignments will be run through LabWiki which visualizes the working through graphs and debug using the logs.</p>
</div>
</div>
<div class="row">
<div class="col-md-8 col-md-offset-2 animate-box">
<h2>Preparation</h2>
<p>A 5-node topology figure, shown below, is used for this purpose. The number of nodes can be scaled up. In this assignment, two nodes are servers, two nodes are clients and one node is the switch . Both the servers are anycasted to have the same alias ip address. The clients make continuous http requests to the servers. The existence of multiple servers from the clients are abstracted using anycasting. Based on the algorithm, the requests will be routed to different servers from the OpenFlow switch. Algorithm can be round robin, based on throughput or random. In this module, round robin algorithm is used. Alternate requests will be sent to the same server in this algorithm. Also, requests from the client will be sent to the same server if the flow is active between that server and client. Once the flow expires after a particular time interval, requests will be sent according to the algorithm. A dictionary is used to make sure that arp packets and the data are not sent to different servers by the algorithm.</p>
<p>To realize this implementation of Data-Center, Trema based Openflow controller written in Ruby has to be designed and implemented. To know more about Trema, refer the following <a href="https://trema.github.io/trema/1"><i>link</i></a>.</p>
<div class="col-md-12 animate-box">
<div class="service col-md-6">
<div class="service-icon">
<img style="width: 400px; margin-bottom: 5px;" src="http://groups.geni.net/geni/raw-attachment/wiki/GEC20Agenda/LabWiki/ModuleA/GEC20_simple_topo.png">
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-8 col-md-offset-2 animate-box">
<h2>Experiment</h2>
<p>For this experiment you can use the following RSpecs made available on the <a href="https://portal.geni.net"><i>GENI Portal</i></a>.<br/>
<br>- Simple Learning Switch - IG-learning-switch
</p>
<h3><i>Set up the data-center</i></h3>
<p>Download the scripts from emmy9.casa.umass.edu/datacenter.rb and emmy9.casa.umass.edu/fdb.rb. The script "datacenter.rb" is used to implement the data-center functionality. The controller makes use of a simple database implementation. The name of the script is “fdb.rb”. This is where the node-mapping information is populated on flooding to all the nodes. The controller assumes that eth1 and eth2 are servers and others are clients.</p>
<p><br><u>On the Switch</u></p>
<p>The first step is to add the openflow switch and configure the bridge with interfaces. To do so, SSH into the “switch” node and execute the following commands:<br>
<br><i>- ovs-vsctl add-br test</i></br>
<p><br>This command creates an ovs bridge named test. Any name can be given for the bridge:</br>
<br><i>- ovs-vsctl add-port test eth1</i><br>
<i>- ovs-vsctl add-port test eth2</i><br>
<i>- ovs-vsctl add-port test eth3</i><br>
<i>- ovs-vsctl add-port test eth4</i></br>
<p><br>These commands configure the bridge with the interfaces. eth1-eth4 specifies the interfaces on node “switch”:</br>
<br><i>- ovs-vsctl set-controller test tcp:IP.OF.CONTROLLER:6653</i></br>
<p><br>In this case, the IP.OF.CONTROLLER would be 127.0.0.1:</br>
<br><i>- ovs-ofctl show test</i></br>
<p><br><u>On the Servers</u></p>
<p>The next step is installing Apache server on Servers(eth1 and eth2) using the commands:<br>
<br><i>- sudo apt-get install apache2</i></br>
<p><br>For stopping and restarting, use the following commands:</br>
<br><i>- sudo /etc/init.d/apache2 restart</i><br>
<i>- sudo /etc/init.d/apache2 stop</i></br>
<p>The next step is anycasting. It is done so that all the servers have the same alias ip address "192.168.1.15". In this way, the number of servers are abstracted from the clients. Run the following commands on all the servers:<br>
<i><br>- sudo ifconfig lo:1 192.168.1.15 netmask 255.255.255.255 up</i></br></p>
<p>To verify if it is anycasted, run the following command:<br>
<i><br>- ifconfig lo:1</i></br></p>
<p><br><u>On the Client</u></p>
<p>The next step is to modify the /etc/hosts on all the clients so that they know the new alias ip of the servers. To do this, run the following command:<br>
<i><br>- sudo vim /etc/hosts</i></br></p>
<p>Add the following entry in the file:<br>
<i><br>- 192.168.1.15 example.com</i></br></p>
<p> By doing this, a domain name is assigned to the alais ip for the servers. Download the sample file from emmy9.casa.umass.edu/FCC_3-26-2013.pptx on the server nodes at the location /var/www. Later, download requests for this file will be sent from the clients through oedl scripts.</p>
</div>
</div>
<div class="row">
<div class="col-md-8 col-md-offset-2 animate-box">
<h2>Verification</h2>
<p>You can start the controller with the following command:<br>
<br><i>- trema run datacenter.rb</i></br></p>
<p>After you have started the controller switch over to LabWiki. Download the script "datacenter.oedl" from emmy9.casa.umass.edu/datacenter.oedl. Make appropriate changes according to the server and client mappings and run the experiments on labwiki. From the graph, you can see if there was data transfer between all servers and clients. In the oedl script, an event is written which will trigger only when there is data transfer between all the servers and clients. This event will cause self-pinging in the switch node. If the assignment works successfully, it can be seen in the graph.</p>
<p>To get started with LabWiki point your browser <a href="http://labwiki.casa.umass.edu"><i>here</i></a></p>
<p>Labwiki has three main window panes.</p>
<h3><i>The "Plan" Window</i></h3>
<p>We will focus on the leftmost pane first. This is the "Plan" window in which you document your experiment. (This is somewhat the equivalent of an electronic lab journal.) Documents are written in <a href="http://daringfireball.net/projects/markdown/"><i>Markdown.</i></a><br/>
<p>At the top of that window is a text field which you can use to search for existing MD scripts. Type "data-center" in the field and then select "data-center.md" from the list of files that are offered. This document has some information on the experiment that will be performed in Module A of the tutorial.</p>
<p>To edit Markdown scripts use the Prepare window by selecting the option "Wiki" from the menu shown.</p>
<h3><i>The "Prepare" Window</i></h3>
<p>The "Prepare" (middle) window allows you to define your experiment through and OMF experiment script specified in OMF Experiment Description Language (OEDL). At the top of that window is a text field which you can use to search for existing OEDL scripts. Select "datacenter.oedl" from the list of files that are offered. This shows the experiment script in the field below.<br/>
<h3><i>The "Execute" Window</i></h3>
<p>To start your experiment, simply drag the icon that is to the left of the file name (see figure below) from the middle (Prepare) to the right (Execute) window. That will automatically fill out the experiment relevant information in this window
Explanation of the fields in the Execute window: <br/>
<br>1. <u>Name:</u> In this field you specify the name of your experiment.
<br>2. <u>Project:</u> This pull-down menu list all the projects you are currently a member of. Select the project that contains the slice you want to run your experiment on.
<br>3. <u>Experiment Context:</u> With the context you can specify a certain set of experiments. E.g., a series of experiments you run under a certain set of startup parameters. This field is not mandatory and only necessary if you would like to save your experiment data to view later.
<br>4. <u>Slice:</u> This pull down menu lists all slice that have been created under "project". Select the slice you would like to run your experiment on.</br>
</p>
<p>Change source1 and source2 fields to include your slice name similar to nodea- Then, start the actual experiment by clicking on the "Start Experiment" button.</p>
<br><div class="col-md-12 animate-box">
<div class="service">
<div class="service-icon">
<img class="vidFrame" style="width: 800px; margin-bottom: 5px;" src="images/Datacenter1.png">
</div>
</div><br/>
</div>
<p>After pressing the "Start" button, the Execute window will change and start showing status information about your experiment. The figure below gives an example for the Execute window during experiment execution.</p>
<div class="col-md-12 animate-box">
<div class="service">
<div class="service-icon">
<img class="vidFrame" style="width: 800px; margin-bottom: 5px;" src="images/Datacenter2.png"><br>
</div></br>
</div>
</div>
<br><p>Now the window lists experiment properties, one or several live graphs (if they have been specified in the OEDL script), and logging information. The latter would be a good starting point for trouble shooting, should your experiment not run as expected. Depending on the status of your resources and experiments, you will see one of the following statuses at the top of the Execute window: </br>
<br>1. <u>Pending</u> - This is the first state of your experiment where the job scheduler adds it to the run queue. This status would remain for the first few seconds before it changes to Running or Failed
<br>2. <u>Running</u> - This status appears when your experiment starts running. If it fails for one or more reasons, a Failed status will appear instead
<br>3. <u>Aborted</u> - When you click on "Stop Experiment" at the top-left corner of the Execute window, the status changes to aborted
<br>4. <u>Finished</u> - When your experiment is done, you will see this status.</br>
</p>
</div>
</div>
</div>
</section>
<footer id="footer" role="contentinfo">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="footer-widget border">
<div class="col-md-4">
<p class="pull-left" class="col-md-4"><small>Contact Us<br/>Email: geni-users@googlegroups.com</small></p>
<ul class="social social-footer">
<li><a href="http://facebook.com/vcnl" target="_blank"><i class="icon-facebook"></i></a></li>
<li><a href="http://twitter.com/vcnl" target="_blank"><i class="icon-twitter"></i></a></li>
<li><a href="#"><i class="icon-linkedin"></i></a></li>
</ul>
</div>
<div class="col-md-4">
<img class="col-md-4 col-md-offset-5" width="90" height="90" align="left" alt="Logo2" src="images/umass-logo400.png">
</div>
<div class="col-md-4">
<p class="pull-left" class="col-md-4"><small>Related Links<br/><a href="www.geni.net">www.geni.net</a></small></p></div>
</div>
</div>
</div>
</div>
</footer>
</div>
<!-- END: box-wrap -->
<!-- jQuery -->
<script src="js/jquery.min.js"></script>
<!-- jQuery Easing -->
<script src="js/jquery.easing.1.3.js"></script>
<!-- Bootstrap -->
<script src="js/bootstrap.min.js"></script>
<!-- Waypoints -->
<script src="js/jquery.waypoints.min.js"></script>
<!-- Main JS (Do not remove) -->
<script src="js/main.js"></script>
</body>
</html>