Changes between Initial Version and Version 1 of GENIEducation/SampleAssignments/OpenFlowAssignment/ExerciseLayout/DesignSetup


Ignore:
Timestamp:
05/20/13 09:59:58 (11 years ago)
Author:
shuang@bbn.com
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GENIEducation/SampleAssignments/OpenFlowAssignment/ExerciseLayout/DesignSetup

    v1 v1  
     1= [wiki:GENIEducation/SampleAssignments/OpenFlowAssignment/ExerciseLayout OPENFLOW ASSIGNMENT] =
     2{{{
     3#!html
     4<table border="0">
     5   
     6      <tr>
     7         <td>
     8         <a href="http://groups.geni.net/geni/wiki/GENIEducation/SampleAssignments/OpenFlowAssignment/ExerciseLayout/DesignSetup"> <img border="0" src="http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/Tutorials/Graphics/design_on.2.png?format=raw" alt="Hello GENI index"  height="90" title="Hello GENI Web server" />  </a>
     9       </td>
     10       <td>
     11         <a href="http://groups.geni.net/geni/wiki/GENIEducation/SampleAssignments/OpenFlowAssignment/ExerciseLayout/Execute"> <img border="0" src="http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/Tutorials/Graphics/execute.2.png?format=raw" alt="Hello GENI index"  height="90" title="Hello GENI Web server" />  </a>
     12       </td>
     13       <td>
     14         <a href="http://groups.geni.net/geni/wiki/GENIEducation/SampleAssignments/OpenFlowAssignment/ExerciseLayout/Finish"> <img border="0" src="http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/Tutorials/Graphics/finish.2.png?format=raw" alt="Hello GENI index"  height="90" title="Hello GENI Web server" />  </a>
     15       </td>
     16     </tr>
     17 </table>
     18}}}
     19
     20= STEPS FOR SETTING UP =
     21''' Using Omni to get physical PCs from ProtoGENI:''' [[BR]]
     22'''0. Get account: (Ignore this if you already have one) [[BR]]'''
     23Go to [https://www.pgeni.gpolab.bbn.com/reqaccount.php3 Request_GENI_Account] for an emulab account and to join a GENI project.[[BR]]
     24Apparently you need to join a GENI project (which is created by PIs/GPOs/others who have permission to do so) in order to use GENI resources.
     25
     26'''1. Prepare Omni''' [[BR]]
     27Here is a very good tutorial on setting up Omni environment: [http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/HelloOmni HelloOmni] [[BR]]
     28Simply follow the tutorial to set up Omni.
     29
     30= Create an Experimental Topology for Firewall with OpenFlow =
     31'''1. Use Omni to create the topology: [[BR]]'''
     32Download the RSPEC from http://www.gpolab.bbn.com/experiment-support/OpenFlowExampleExperiment/fw.rspec [[BR]]
     33Next, we need to create this experiment using the RSPEC file: [[BR]]
     34  '''Step 1. Create slice (use a unique name for your slice):'''
     35{{{
     36omni.py createslice <slice name>
     37}}}
     38  Output should be something like the following (here I am using 'OpenFlowFW' as the sample slice name):
     39{{{
     40INFO:omni:Loading config file /Users/shuang/.gcf/omni_config
     41INFO:omni:Using control framework portal
     42INFO:omni:Created slice with Name OpenFlowFW, URN urn:publicid:IDN+panther:ShufengProject+slice+OpenFlowFW, Expiration 2013-05-20 21:42:26
     43INFO:omni: ------------------------------------------------------------
     44INFO:omni: Completed createslice:
     45
     46  Options as run:
     47                framework: portal
     48                project: ShufengProject
     49
     50  Args: createslice OpenFlowFW
     51
     52  Result Summary: Created slice with Name OpenFlowFW, URN urn:publicid:IDN+panther:ShufengProject+slice+OpenFlowFW, Expiration 2013-05-20 21:42:26
     53 
     54INFO:omni: ============================================================
     55}}}
     56  '''Step 2. Renew Slice (to make sure that your reservation does not expire before you finished your experiment, renew the slice to a specific time):'''
     57{{{
     58omni.py renewslice OpenFlowFW 20130521
     59}}}
     60  Output:
     61{{{
     62INFO:omni:Loading config file /Users/shuang/.gcf/omni_config
     63INFO:omni:Using control framework portal
     64INFO:omni.pgch:Requesting new slice expiration '2013-05-21T00:00:00'
     65INFO:omni:Slice OpenFlowFW now expires at 2013-05-21 00:00:00 UTC
     66INFO:omni:Slice urn:publicid:IDN+panther:ShufengProject+slice+OpenFlowFW expires within 1 day on 2013-05-21 00:00:00 UTC
     67INFO:omni: ------------------------------------------------------------
     68INFO:omni: Completed renewslice:
     69
     70  Options as run:
     71                framework: portal
     72                project: ShufengProject
     73
     74  Args: renewslice OpenFlowFW 20130521
     75
     76  Result Summary: Slice OpenFlowFW now expires at 2013-05-21 00:00:00 UTC
     77Slice urn:publicid:IDN+panther:ShufengProject+slice+OpenFlowFW expires within 1 day(s) on 2013-05-21 00:00:00 UTC
     78INFO:omni: ============================================================
     79}}}
     80  '''Step 3. Create Sliver using fw.rspec:'''
     81{{{
     82omni.py createsliver -a pg-utah OpenFlowFW fw.rspec
     83}}}
     84  Output:
     85{{{
     86INFO:omni:Loading config file /Users/shuang/.gcf/omni_config
     87INFO:omni:Using control framework portal
     88INFO:omni:Substituting AM nickname pg-utah with URL https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN
     89INFO:omni:Slice urn:publicid:IDN+panther:ShufengProject+slice+OpenFlowFW expires within 1 day on 2013-05-21 00:00:00 UTC
     90INFO:omni:Substituting AM nickname pg-utah with URL https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN
     91INFO:omni:Substituting AM nickname pg-utah with URL https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN
     92INFO:omni:Creating sliver(s) from rspec file fw.rspec for slice urn:publicid:IDN+panther:ShufengProject+slice+OpenFlowFW
     93INFO:omni: (PG log url - look here for details on any failures: https://www.emulab.net/spewlogfile.php3?logfile=eaad7201112953f49037e03149fa15ce)
     94INFO:omni:Got return from CreateSliver for slice OpenFlowFW at https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0:
     95INFO:omni:<!-- Reserved resources for:
     96        Slice: OpenFlowFW
     97        at AM:
     98        URN: unspecified_AM_URN
     99        URL: https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0
     100 -->
     101INFO:omni:<rspec xmlns="http://www.protogeni.net/resources/rspec/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2                            http://www.protogeni.net/resources/rspec/2/manifest.xsd                            " type="manifest">
     102<node client_id="router" exclusive="true" component_id="urn:publicid:IDN+emulab.net+node+pc140" component_manager_id="urn:publicid:IDN+emulab.net+authority+cm" sliver_id="urn:publicid:IDN+emulab.net+sliver+129503">
     103    <sliver_type name="raw-pc">
     104        <disk_image name="urn:publicid:IDN+emulab.net+image+emulab-ops:FEDORA15-STD"/>
     105    </sliver_type>
     106    <interface client_id="router:right" component_id="urn:publicid:IDN+emulab.net+interface+pc140:eth3" sliver_id="urn:publicid:IDN+emulab.net+sliver+129513" mac_address="0002b335f1b7">
     107        <ip netmask="255.255.255.0" type="ipv4" address="10.10.11.2"/>
     108    </interface>
     109    <interface client_id="router:switch" component_id="urn:publicid:IDN+emulab.net+interface+pc140:eth4" sliver_id="urn:publicid:IDN+emulab.net+sliver+129506" mac_address="00034794c7fd">
     110        <ip netmask="255.255.255.0" type="ipv4" address="10.10.10.2"/>
     111    </interface>
     112<rs:vnode xmlns:rs="http://www.protogeni.net/resources/rspec/ext/emulab/1" name="pc140"/><host name="router.OpenFlowFW.panther.emulab.net"/><services><login authentication="ssh-keys" hostname="pc140.emulab.net" port="22" username="shufeng"/></services></node>
     113<node client_id="switch" exclusive="true" component_id="urn:publicid:IDN+emulab.net+node+pc137" component_manager_id="urn:publicid:IDN+emulab.net+authority+cm" sliver_id="urn:publicid:IDN+emulab.net+sliver+129502">
     114    <sliver_type name="raw-pc">
     115        <disk_image name="urn:publicid:IDN+emulab.net+image+emulab-ops:FEDORA15-STD"/>
     116    </sliver_type>
     117    <services>
     118        <install url="http://www.cs.purdue.edu/homes/fahmy/geni/tarballs/openvswitch-1.6.1-F15.tar.gz" install_path="/"/>
     119        <install url="http://www.cs.purdue.edu/homes/fahmy/geni/tarballs/trema-trema-8e97343-F15.tar.gz" install_path="/opt"/>
     120        <install url="http://www.cs.purdue.edu/homes/fahmy/geni/tarballs/of-topo-setup.tar.gz" install_path="/tmp"/>
     121        <execute shell="sh" command="cd /tmp/of-topo-setup &amp;&amp; ./switch-setup"/>
     122    <login authentication="ssh-keys" hostname="pc137.emulab.net" port="22" username="shufeng"/></services>
     123    <interface client_id="switch:router" component_id="urn:publicid:IDN+emulab.net+interface+pc137:eth4" sliver_id="urn:publicid:IDN+emulab.net+sliver+129507" mac_address="00d0b725463a">
     124        <ip netmask="255.255.255.0" type="ipv4" address="192.168.129.1"/>
     125    </interface>
     126    <interface client_id="switch:left" component_id="urn:publicid:IDN+emulab.net+interface+pc137:eth3" sliver_id="urn:publicid:IDN+emulab.net+sliver+129510" mac_address="0002b3861f8b">
     127        <ip netmask="255.255.255.0" type="ipv4" address="192.168.128.1"/>
     128    </interface>
     129<rs:vnode xmlns:rs="http://www.protogeni.net/resources/rspec/ext/emulab/1" name="pc137"/><host name="switch.OpenFlowFW.panther.emulab.net"/></node>
     130<node client_id="right" exclusive="true" component_id="urn:publicid:IDN+emulab.net+node+pc135" component_manager_id="urn:publicid:IDN+emulab.net+authority+cm" sliver_id="urn:publicid:IDN+emulab.net+sliver+129501">
     131    <sliver_type name="raw-pc">
     132        <disk_image name="urn:publicid:IDN+emulab.net+image+emulab-ops:FEDORA15-STD"/>
     133    </sliver_type>
     134    <interface client_id="right:router" component_id="urn:publicid:IDN+emulab.net+interface+pc135:eth3" sliver_id="urn:publicid:IDN+emulab.net+sliver+129512" mac_address="0002b3861d13">
     135        <ip netmask="255.255.255.0" type="ipv4" address="10.10.11.1"/>
     136    </interface>
     137<rs:vnode xmlns:rs="http://www.protogeni.net/resources/rspec/ext/emulab/1" name="pc135"/><host name="right.OpenFlowFW.panther.emulab.net"/><services><login authentication="ssh-keys" hostname="pc135.emulab.net" port="22" username="shufeng"/></services></node>
     138<node client_id="left" exclusive="true" component_id="urn:publicid:IDN+emulab.net+node+pc138" component_manager_id="urn:publicid:IDN+emulab.net+authority+cm" sliver_id="urn:publicid:IDN+emulab.net+sliver+129500">
     139    <sliver_type name="raw-pc">
     140        <disk_image name="urn:publicid:IDN+emulab.net+image+emulab-ops:FEDORA15-STD"/>
     141    </sliver_type>
     142    <services>
     143        <install url="http://www.cs.purdue.edu/homes/fahmy/geni/tarballs/of-topo-setup.tar.gz" install_path="/tmp"/>
     144        <execute shell="sh" command="cd /tmp/of-topo-setup &amp;&amp; ./left-setup"/>
     145    <login authentication="ssh-keys" hostname="pc138.emulab.net" port="22" username="shufeng"/></services>
     146    <interface client_id="left:switch" component_id="urn:publicid:IDN+emulab.net+interface+pc138:eth3" sliver_id="urn:publicid:IDN+emulab.net+sliver+129509" mac_address="0002b365d12b">
     147        <ip netmask="255.255.255.0" type="ipv4" address="10.10.10.1"/>
     148    </interface>
     149<rs:vnode xmlns:rs="http://www.protogeni.net/resources/rspec/ext/emulab/1" name="pc138"/><host name="left.OpenFlowFW.panther.emulab.net"/></node>
     150<link client_id="switch-router" sliver_id="urn:publicid:IDN+emulab.net+sliver+129505" vlantag="260">
     151    <interface_ref client_id="router:switch" component_id="urn:publicid:IDN+emulab.net+interface+pc140:eth4" sliver_id="urn:publicid:IDN+emulab.net+sliver+129506"/>
     152    <interface_ref client_id="switch:router" component_id="urn:publicid:IDN+emulab.net+interface+pc137:eth4" sliver_id="urn:publicid:IDN+emulab.net+sliver+129507"/>
     153</link>
     154<link client_id="left-switch" sliver_id="urn:publicid:IDN+emulab.net+sliver+129508" vlantag="263">
     155    <interface_ref client_id="left:switch" component_id="urn:publicid:IDN+emulab.net+interface+pc138:eth3" sliver_id="urn:publicid:IDN+emulab.net+sliver+129509"/>
     156    <interface_ref client_id="switch:left" component_id="urn:publicid:IDN+emulab.net+interface+pc137:eth3" sliver_id="urn:publicid:IDN+emulab.net+sliver+129510"/>
     157</link>
     158<link client_id="right-router" sliver_id="urn:publicid:IDN+emulab.net+sliver+129511" vlantag="262">
     159    <interface_ref client_id="right:router" component_id="urn:publicid:IDN+emulab.net+interface+pc135:eth3" sliver_id="urn:publicid:IDN+emulab.net+sliver+129512"/>
     160    <interface_ref client_id="router:right" component_id="urn:publicid:IDN+emulab.net+interface+pc140:eth3" sliver_id="urn:publicid:IDN+emulab.net+sliver+129513"/>
     161</link>
     162</rspec>
     163INFO:omni: ------------------------------------------------------------
     164INFO:omni: Completed createsliver:
     165
     166  Options as run:
     167                aggregate: ['pg-utah']
     168                framework: portal
     169                project: ShufengProject
     170
     171  Args: createsliver OpenFlowFW fw.rspec
     172
     173  Result Summary: Got Reserved resources RSpec from www-emulab-net-protogeniv2
     174INFO:omni: ============================================================
     175}}}
     176  The above output shows the reserved nodes: pc140, pc135, pc137, pc138 and how they are connected.
     177  [[BR]]
     178  Alternatively, you can use the following command to show the reserved nodes as well as ways to login:
     179{{{
     180readyToLogin.py OpenFlowFW -a pg-utah
     181}}}
     182  When the nodes are not ready, the status will be `notready` or `changing`. In this case, you simply have to wait then try the above command again. [[BR]]
     183  Otherwise, the result is something like the following:
     184{{{
     185#========================================
     186#SSH CONFIGURATION INFO for User shufeng
     187#========================================
     188 
     189Host right
     190  Port 22
     191  HostName pc135.emulab.net
     192  User shufeng
     193  IdentityFile /Users/shuang/.ssh/geni_key
     194 
     195Host router
     196  Port 22
     197  HostName pc140.emulab.net
     198  User shufeng
     199  IdentityFile /Users/shuang/.ssh/geni_key
     200 
     201Host left
     202  Port 22
     203  HostName pc138.emulab.net
     204  User shufeng
     205  IdentityFile /Users/shuang/.ssh/geni_key
     206 
     207Host switch
     208  Port 22
     209  HostName pc137.emulab.net
     210  User shufeng
     211  IdentityFile /Users/shuang/.ssh/geni_key
     212
     213================================================================================
     214LOGIN INFO for AM: https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0
     215================================================================================
     216
     217right's geni_status is: ready (am_status:ready)
     218User shufeng logins to right using:
     219        xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc135.emulab.net &
     220
     221router's geni_status is: ready (am_status:ready)
     222User shufeng logins to router using:
     223        xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc140.emulab.net &
     224
     225left's geni_status is: ready (am_status:ready)
     226User shufeng logins to left using:
     227        xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc138.emulab.net &
     228
     229switch's geni_status is: ready (am_status:ready)
     230User shufeng logins to switch using:
     231        xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc137.emulab.net &
     232}}}
     233  '''Step 4. Renew the sliver:'''
     234{{{
     235omni.py renewsliver -a pg-utah OpenFlowFW 20130521
     236}}}
     237  Output:
     238{{{
     239INFO:omni:Loading config file /Users/shuang/.gcf/omni_config
     240INFO:omni:Using control framework portal
     241INFO:omni:Substituting AM nickname pg-utah with URL https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN
     242INFO:omni:Slice urn:publicid:IDN+panther:ShufengProject+slice+OpenFlowFW expires within 1 day on 2013-05-21 00:00:00 UTC
     243INFO:omni:Renewing Sliver OpenFlowFW until 2013-05-21 00:00:00+00:00 (UTC)
     244INFO:omni:Substituting AM nickname pg-utah with URL https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN
     245INFO:omni: (PG log url - look here for details on any failures: https://www.emulab.net/spewlogfile.php3?logfile=20886a427910fadd245e7eac8028dd6e)
     246INFO:omni:Renewed sliver urn:publicid:IDN+panther:ShufengProject+slice+OpenFlowFW at unspecified_AM_URN (https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0) until 2013-05-21T00:00:00+00:00 (UTC)
     247INFO:omni: ------------------------------------------------------------
     248INFO:omni: Completed renewsliver:
     249
     250  Options as run:
     251                aggregate: ['pg-utah']
     252                framework: portal
     253                project: ShufengProject
     254
     255  Args: renewsliver OpenFlowFW 20130521
     256
     257  Result Summary: Slice urn:publicid:IDN+panther:ShufengProject+slice+OpenFlowFW expires within 1 day(s) on 2013-05-21 00:00:00 UTC
     258Renewed sliver urn:publicid:IDN+panther:ShufengProject+slice+OpenFlowFW at unspecified_AM_URN (https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0) until 2013-05-21T00:00:00+00:00 (UTC)
     259 
     260INFO:omni: ============================================================
     261}}}
     262  Note: When dealing with specific slivers, we need to add "-a pg-utah" to specify which aggregate manager we want to use (i.e., from where we want to reserve the resources). In our case here, we are using utah aggregate.[[BR]]
     263  For a list of available aggregates, please see the file ~/.gcf/omni_config, check out `ProtoGENI AMs` section.
     264
     265OK. After this point, we are ready to log on to the nodes and do the OpenFlow FireWall experiments! :-)
     266
     267
     268= Create an Experimental Topology for LoadBalancing with OpenFlow =
     269To create the Load Balancing Topology, simply follow the same steps as when you created the Fire Wall Topology. [[BR]]
     270'''1. Use Omni to create the topology: [[BR]]'''
     271Download the RSPEC from http://www.gpolab.bbn.com/experiment-support/OpenFlowExampleExperiment/lb.rspec [[BR]]
     272Next, we need to create this experiment using the RSPEC file: [[BR]]
     273  '''Step 1. Create slice (use a unique name for your slice): Here I am using OpenFlowLB'''
     274{{{
     275omni.py createslice OpenFlowLB
     276}}}
     277  '''Step 2. Renew Slice (to make sure that your reservation does not expire before you finished your experiment, renew the slice to a specific time):'''
     278{{{
     279omni.py renewslice OpenFlowLB 20130521
     280}}}
     281  '''Step 3. Create Sliver using lb.rspec:'''
     282{{{
     283omni.py createsliver -a pg-utah OpenFlowLB lb.rspec
     284}}}
     285  Again, you can use the following command to show the reserved nodes as well as ways to login:
     286{{{
     287readyToLogin.py OpenFlowLB -a pg-utah
     288}}}
     289  When the nodes are not ready, the status will be `notready` or `changing`. In this case, you simply have to wait then try the above command again. [[BR]]
     290  Otherwise, the result is something like the following:
     291{{{
     292#========================================
     293#SSH CONFIGURATION INFO for User shufeng
     294#========================================
     295 
     296Host right
     297  Port 22
     298  HostName pc135.emulab.net
     299  User shufeng
     300  IdentityFile /Users/shuang/.ssh/geni_key
     301 
     302Host router
     303  Port 22
     304  HostName pc140.emulab.net
     305  User shufeng
     306  IdentityFile /Users/shuang/.ssh/geni_key
     307 
     308Host left
     309  Port 22
     310  HostName pc138.emulab.net
     311  User shufeng
     312  IdentityFile /Users/shuang/.ssh/geni_key
     313 
     314Host switch
     315  Port 22
     316  HostName pc137.emulab.net
     317  User shufeng
     318  IdentityFile /Users/shuang/.ssh/geni_key
     319
     320================================================================================
     321LOGIN INFO for AM: https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0
     322================================================================================
     323
     324right's geni_status is: ready (am_status:ready)
     325User shufeng logins to right using:
     326        xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc135.emulab.net &
     327
     328router's geni_status is: ready (am_status:ready)
     329User shufeng logins to router using:
     330        xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc140.emulab.net &
     331
     332left's geni_status is: ready (am_status:ready)
     333User shufeng logins to left using:
     334        xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc138.emulab.net &
     335
     336switch's geni_status is: ready (am_status:ready)
     337User shufeng logins to switch using:
     338        xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc137.emulab.net &
     339}}}
     340  '''Step 4. Renew the sliver:'''
     341{{{
     342omni.py renewsliver -a pg-utah OpenFlowLB 20130521
     343}}}
     344  Note: When dealing with specific slivers, we need to add "-a pg-utah" to specify which aggregate manager we want to use (i.e., from where we want to reserve the resources). In our case here, we are using utah aggregate.[[BR]]
     345  For a list of available aggregates, please see the file ~/.gcf/omni_config, check out `ProtoGENI AMs` section.
     346
     347OK. After this point, we are ready to log on to the nodes and do the OpenFlow Load Balancing experiments! :-)
     348
     349= [wiki:GENIEducation/SampleAssignments/OpenFlowAssignment/ExerciseLayout/Execute Next: Run Experiment] =