Changes between Initial Version and Version 1 of GENIExperimenterOmniV1.2/ExperimentExample-OF


Ignore:
Timestamp:
06/22/11 15:48:19 (13 years ago)
Author:
Aaron Helsinger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GENIExperimenterOmniV1.2/ExperimentExample-OF

    v1 v1  
     1[[PageOutline]]
     2'''Note: These instructions are for a prior version of Omni, V1.2 See [wiki:GENIExperimenter/ExperimentExample-OF ExperimentExample2]
     3= GENI !OpenFlow Experiment Example 2 =
     4
     5This page illustrates an operational !OpenFlow (OF) example for the [wiki:GENIExperimenterOmniV1.2 GENI Experimenter How-to] page. [http://www.openflow.org/ OpenFlow] is used for control of many of the network resources in the GENI backbone and at meso-scale campus locations.  Many experimenters can use these GENI resources without learning !OpenFlow.  The GENI [mailto:help@geni.net] can help arrange connectivity across your GENI slice, including IP connectivity and/or layer 2 VLANs.
     6
     7For experimenters who desire control over the network switching fabric in their slices, !OpenFlow provides increased flexibility.  Your experiment will incorporate an !OpenFlow controller.  If you have never written a controller, don't panic.  Many experiments can use existing controller code as-is, or with relatively simple modifications.  The GPO is available to help design your controller and plan your experiment configuration.  Feel free to contact us at [mailto:help@geni.net].
     8
     9The example captured in this page uses credentials from pgeni.gpolab.bbn.com, the GPO ProtoGENI Clearinghouse, to set up an experiment that includes 3 fictional sites (1 PG and 2 MyPLC nodes). This examples assumes that a OF Controller, such as NOX, is running on a slice resource, and is available and is accessible to the !FlowVisor instances. In this scenario, two sites are Web Servers and 3 are clients, as shown in the diagram below:
     10
     11[[Image(GENIExperimenter/ExperimentExample-OF:OF-Experiment-example.jpg)]]
     12
     13Omni tools can be used to reserve OF resources in each of the site's !OpenFlow Aggregate Manager (OF AM). Steps that are to take place include:
     14    * Configure Omni tools
     15    * Define !OpenFlow RSPEC
     16    * Request flowspace resources
     17    * Opt-in Manager Administrative approval
     18    * Run the experiment
     19
     20Note: Open Flow Aggregate Manager sites must be federated in order to trust a Clearinghouse. This is an OF administrator task that must take place before any of the user OF operations can take place.
     21
     22== Authentication and Omni tools configuration ==
     23
     24This example assumes that GENI credentials have been set up as detailed in the [wiki:GENIExperimenterOmniV1.2#a1.GetGENICredentials GENI Credentials] section of the main GENI Experimenter page.
     25
     26The settings as defined in the [wiki:GENIExperimenterOmniV1.2/ExperimentExample#OmniConfiguration Omni Configuration] section of the non OF GENI Experiment Example will work for this OF set up.  The credentials from from the GPO Clearinghouse will allow access to the GPO OF aggregate manager.  A list of Aggregate managers is being compiled in the [http://groups.geni.net/geni/wiki/GeniAggregate GENI Aggregate] page, if your site is not listed on this page you should contact you site administrator, or help@geni.net.
     27
     28== Determine Resources ==
     29
     30An !OpenFlow RSPEC must be defined for each of the 3 site OF AM in order to get access to the OF resources.  The content of the OF RSPEC depends on the type OF AM resource that you may need.  You may need to define an RSPEC using any of the following:
     31  * IP Addresses
     32  * MAC Address
     33  * Data Path Identifier (DPID).
     34
     35To find out what OF resources are available from each of the OF Aggregate Manager, you may use Omni tools to get a list of available resources. Here is an example of resources the OF Aggregate Manager for Site 1 in native RSPEC format:
     36{{{
     37$ ./src/omni.py -n -a https://ofam1.site1.com:1443/openflow/gapi/ listresources
     38INFO:omni:Loading config file omni_config
     39INFO:omni:Using control framework pgeni
     40INFO:omni:Resources at https://ofam1.site1.com:1443/openflow/gapi/:
     41<?xml version="1.0" ?>
     42<rspec type="openflow">
     43  <network location="Cambridge MA" name="local-oim">
     44    <switches>
     45      <switch urn="urn:publicid:IDN+ofam1.site1.bbn.com:expedient:openflow+switch:044:d0:02:6f:13:f3:b0:0">
     46        <port urn="urn:publicid:IDN+ofam1.site1.bbn.com:expedient:openflow+switch:044:d0:02:6f:13:f3:b0:0+port:26"/>
     47        <port urn="urn:publicid:IDN+ofam1.site1.bbn.com:expedient:openflow+switch:044:d0:02:6f:13:f3:b0:0+port:27"/>
     48        <port urn="urn:publicid:IDN+ofam1.site1.bbn.com:expedient:openflow+switch:044:d0:02:6f:13:f3:b0:0+port:28"/>
     49        <port urn="urn:publicid:IDN+ofam1.site1.bbn.com:expedient:openflow+switch:044:d0:02:6f:13:f3:b0:0+port:29"/>
     50        <port urn="urn:publicid:IDN+ofam1.site1.bbn.com:expedient:openflow+switch:044:d0:02:6f:13:f3:b0:0+port:43"/>
     51        <port urn="urn:publicid:IDN+ofam1.site1.bbn.com:expedient:openflow+switch:044:d0:02:6f:13:f3:b0:0+port:44"/>
     52        <port urn="urn:publicid:IDN+ofam1.site1.bbn.com:expedient:openflow+switch:044:d0:02:6f:13:f3:b0:0+port:45"/>
     53        <port urn="urn:publicid:IDN+ofam1.site1.bbn.com:expedient:openflow+switch:044:d0:02:6f:13:f3:b0:0+port:46"/>
     54        <port urn="urn:publicid:IDN+ofam1.site1.bbn.com:expedient:openflow+switch:044:d0:02:6f:13:f3:b0:0+port:47"/>
     55        <port urn="urn:publicid:IDN+ofam1.site1.bbn.com:expedient:openflow+switch:044:d0:02:6f:13:f3:b0:0+port:65534"/>
     56      </switch>
     57    </switches>
     58    <links/>
     59  </network>
     60</rspec>
     61}}}
     62
     63The above provides the switch and the port URN information to be used in making the OF flowspace reservation.  The above results will give you some insight into what is available, but it is recommended that you coordinate with the site contact to ensure RSPEC accuracy for each of the OF Aggregate Managers. 
     64
     65== Request Resources ==
     66
     67The OF RSPECs are used to request resources at each site's !OpenFlow Aggregate Manager.  This will result in your resource request being imported into the Opt-In manager, where an Administrator must approve your request for resources. Currently requesting OF resources for the sites in the experiment does not require OF setup for the Network Core path; the default handling will allow OF traffic.  This is expected to change.
     68
     69
     70The OF RSPEC defines a flowspace for each OF rule for your traffic sliver.  Following are example OF RSPECs that could be used to reserve the flowspaces needed for each of the generic 3 node scenario in this page. The scenario uses 3 OF Aggregate Managers (one per site) and one OF Controller at Site 1 for all sites.  The example RSPECs are for each of the 3 OF AM and assume that the flowspace is based on traffic type and port (TCP port 9080 and 9082).
     71
     72'''RSPEC Example for Site 1 !OpenFlow Aggregate Manager'''
     73{{{
     74<resv_rspec type="openflow">
     75  <user affiliation="GPO" email="help@geni-net" firstname="GPO" lastname="Ops" password="xxxxxxx"/>
     76  <project description="Project description" name=" Project name"/>
     77  <slice controller_url="tcp:controller.site1.com:9933" description="description" name="name"/>
     78<flowspace>
     79    <switch urn="urn:publicid:IDN+ofam1.site1.com:expedient:openflow+switch:044:d0:02:6f:13:f3:b0:0"/>
     80    <tp_dst from="9080" to="9082"/>
     81  </flowspace>
     82  <flowspace>
     83    <switch urn="urn:publicid:IDN+ofam1.site1.com:expedient:openflow+switch:044:d0:02:6f:13:f3:b0:0"/>
     84    <tp_src from="9080" to="9082"/>
     85  </flowspace>
     86</resv_rspec>
     87}}}
     88
     89'''RSPEC Example for Site 2 !OpenFlow Aggregate Manager'''
     90{{{
     91<resv_rspec type="openflow">
     92  <user affiliation="GPO" email="help@geni-net" firstname="GPO" lastname="Ops" password="xxxxxxx"/>
     93  <project description="Project description" name=" Project name"/>
     94  <slice controller_url="tcp:controller.site1.com:9933" description="description" name="name"/>
     95<flowspace>
     96    <switch urn="urn:publicid:IDN+ofam2.site2.com:expedient:openflow+switch:00:00:00:13:65:f4:21:4f"/>
     97    <tp_dst from="9080" to="9082"/>
     98  </flowspace>
     99  <flowspace>
     100    <switch urn="urn:publicid:IDN+ofam2.site2.com:expedient:openflow+switch:00:00:00:13:65:f4:21:4f"/>
     101    <tp_src from="9080" to="9082"/>
     102  </flowspace>
     103</resv_rspec>
     104}}}
     105
     106'''RSPEC Example for Site 3 !OpenFlow Aggregate Manager'''
     107{{{
     108<resv_rspec type="openflow">
     109  <user affiliation="GPO" email="help@geni-net" firstname="GPO" lastname="Ops" password="xxxxxxx"/>
     110  <project description="Project description" name=" Project name"/>
     111  <slice controller_url="tcp:controller.site1.com:9933" description="description" name="name"/>
     112<flowspace>
     113    <switch urn="urn:publicid:IDN+ofam3.site3.com:expedient:openflow+switch:00:00:00:21:6f:b8:f3:d0"/>
     114    <tp_dst from="9080" to="9082"/>
     115  </flowspace>
     116  <flowspace>
     117    <switch urn="urn:publicid:IDN+ofam3.site3.com:expedient:openflow+switch:00:00:00:21:6f:b8:f3:d0"/>
     118    <tp_src from="9080" to="9082"/>
     119  </flowspace>
     120</resv_rspec>
     121}}}
     122
     123
     124'''Create Slice and Request Resources'''
     125
     126Using the RSPEC that defines the required OF flowspace, you can now request OF resources with the Omni tools. First create a slice using your GPO Clearing House credentials as defined in the omni_config, note that the slice name should be meaningful to you:
     127{{{
     128$ ./src/omni.py createslice ln_OF_slice
     129INFO:omni:Loading config file omni_config
     130INFO:omni:Using control framework pgeni
     131Created slice with Name ln_OF_slice, URN urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+ln_OF_slice
     132}}}
     133
     134Then create a sliver for each resource aggregate.  In this example there are 3 OF aggregates (one per site) and 3 compute resource aggregates (1 PG & 2 MyPLC), which maps to creating 6 slivers, and the following commands are executed:
     135{{{
     136 $ ./src/omni.py -n -a https://ofam1.site1.com:1443/openflow/gapi/ createsliver ln_OF_slice OF-site1.txt.rspec
     137 $ ./src/omni.py -n -a https://ofam2.site2.com:1443/openflow/gapi/ createsliver ln_OF_slice OF-site2.rspec
     138 $ ./src/omni.py -n -a https://ofam3.site3.com:1443/openflow/gapi/ createsliver ln_OF_slice OF-site3.rspec
     139 $ ./src/omni.py -n -a https://www.emulab.net/protogeni/xmlrpc/am createsliver ln_OF_slice emulab-site2.rspec
     140 $ ./src/omni.py -n -a http://myplc.site1.com:12346 createsliver ln_OF_slice myplc-site1.rspec
     141 $ ./src/omni.py -n -a http://myplc.site3.com:12346 createsliver ln_OF_slice myplc-site3.rspec
     142}}}
     143
     144^^ Note: Examples that detail rspec creation for the PG and MyPLC resource aggregates can be found in the other non-OF [wiki:GENIExperimenterOmniV1.2/ExperimentExample experiment] example. ^^
     145
     146== Opt-in Manager Administrative Approval ==
     147
     148The OF Aggregate Administrator has to allow traffic from various nodes to be routed as decided by your !OpenFlow controller. In this case, you are asking the administrator to route traffic on the PG and PL nodes you have just reserved. So you will need to give the site OF Aggregate Administrator:
     149  - your name
     150  - slice name and clearinghouse
     151  - PI name
     152  - duration of your experiment
     153  - IP address and names of the nodes whose traffic you need opted in (see the result of listresource and/or sliverstatus)
     154  - your flowspace request in plain text - what were you looking for
     155
     156The OF Aggregate Administrator that opts-in your flows is responsible for resolving any conflicts between the traffic flows that you are requesting and the traffic flows requested by other experiments. If your flows are too generic (ex. all port 80 traffic) then they may overlap with other experiments; the administrator will have control over whether the conflict is resolved in your favor or someone else's.
     157
     158Once the OF Aggregate  Administrator has opted-in your traffic, you may start using the OF Resources.
     159
     160== Run Experiment ==
     161
     162Once your flowspace has been opted in you should be able to exchange traffic over the approved flows between the hosts that have been allocated to your experiment.  Simply SSH into one of the hosts and ping any of the other hosts to verify connectivity. If you have connectivity between the allocated hosts, you may start your experiment, if you do not have connectivity, contact [mailto:help@geni.net].
     163
     164Remember to check the expiration time for the flowspace and for each aggregate with the Omni ''sliverstatus'' and to ''renewslice'' to expand the duration of the resource allocation to match your experiment needs.  For an example on how to check ''sliverstatus'' and ''renewslice'' see the [wiki:GENIExperimenterOmniV1.2/ExperimentExample#Checkingsliverresourcestatus checking status] section of the other non-OF experiment.
     165
     166== Release Resources ==
     167
     168When the experiment is completed you should release the resources by deleting the resource sliver for each the Resource Aggregates used in the Experiment. In the example experiment used in this page, the following commands should be issued to release resources:
     169{{{
     170 $ ./src/omni.py -n -a https://ofam1.site1.com:1443/openflow/gapi/ deletesliver ln_OF_slice
     171 $ ./src/omni.py -n -a https://ofam2.site2.com:1443/openflow/gapi/ deletesliver ln_OF_slice
     172 $ ./src/omni.py -n -a https://ofam3.site3.com:1443/openflow/gapi/ deletesliver ln_OF_slice
     173 $ ./src/omni.py -n -a https://www.emulab.net/protogeni/xmlrpc/am deletesliver ln_OF_slice
     174 $ ./src/omni.py -n -a http://myplc.site1.com:12346 deletesliver ln_OF_slice
     175 $ ./src/omni.py -n -a http://myplc.site3.com:12346 deletesliver ln_OF_slice
     176}}}
     177
     178----
     179{{{
     180#!html
     181<a href="mailto: help@geni.net">Email us</a> with any questions and feedback on this page!
     182}}}