wiki:GIR3.2_EnterpriseGENI

Version 38 (modified by lnevers@bbn.com, 13 years ago) (diff)

--

Enterprise GENI Evaluation

The Enterprise-GENI solution is composed of four main entities:

  • OpenFlow-based Substrate Version ??: Switches that communicate using the OpenFlow protocol to the OpenFlow controller. Software version available include
  • FlowVisor Version 0.8.1.2 : Custom-build OpenFlow controller that isolates experiment control traffic.
  • Opt In Manager Version 0.2.5 : Administrative application for OpenFlow-based network.
  • Expedient Version 4.0.2: Portal for defining experiment resources.
  • NOX Zaku branch: An OpenFlow Controller providing flow level control of network traffic.
  • SNAC An OpenFlow Controller which is a NOX module. Not covered here.
  • FOAM Version 0.2.2 will replace the Expedient Aggregate Manager and Opt In Manager. Version? Location?

Evaluation Time Frame: September 26, 2011

Enterprise GENI Findings

Initial review of the FlowVisor deployment page and FlowVisor 0.8.1.2 found the following issues.

Enterprise GENI How-to

FlowVIsor Installation and Configuration

Using instructions from https://openflow.stanford.edu/display/flowvisor/fv_deploy, installed the Ubuntu package FlowVisor Version 0.8.1.2. First, add the following to /etc/apt/sources.list file:

   deb http://updates.flowvisor.org/openflow/downloads/GENI/DEB unstable/binary-$(ARCH)/

Install package:

   sudo apt-get update && sudo apt-get install flowvisor

Before proceeding to configuration step, should modify the SSL_KEYPASSWD in the file /usr/etc/flowvisor/envs.sh to define the password to be used by the fv-admin profile:

You can now start the FlowVisor, note if this is a new FlowVisor installation, the SSL keystor must be generated, below is a capture of the process:

  $ sudo /usr/sbin/flowvisor /usr/etc/flowvisor/config.xml 
  Starting FlowVisor
  Running with FV_JVM_ARGS=-server -Xms100M -Xmx1000M -XX:OnError=flowvisor-crash-logger -XX:+UseConcMarkSweepGC
  --- Setting logging level to NOTE
  java.lang.RuntimeException: SSL Key Store file not found: '/usr/etc/flowvisor/mySSLKeyStore'
  Please generate with `fvconfig generateCert`
        at org.flowvisor.api.APIServer.spawn(APIServer.java:85)
        at org.flowvisor.FlowVisor.run(FlowVisor.java:143)
        at org.flowvisor.FlowVisor.main(FlowVisor.java:191)

  $ sudo fvconfig generateCert
  Trying to generate SSL Server Key with passwd from scripts/envs.sh
  Generating cert with common name == mallorea.gpolab.bbn.com

  $ sudo /usr/sbin/flowvisor /usr/etc/flowvisor/config.xml &
  [1] 1283
  Starting FlowVisor
  Running with FV_JVM_ARGS=-server -Xms100M -Xmx1000M -XX:OnError=flowvisor-crash-logger -XX:+UseConcMarkSweepGC
  --- Setting logging level to NOTE

The FlowVisor configuration that is delivered includes sample slices that should be deleted:

  fvctl --passwd-file=/root/.fvp  deleteSlice alice
  fvctl --passwd-file=/root/.fvp  deleteSlice bob

Issues found, captured in email. (and bugs?)

FOAM Installation and Configuration

Followed the install from package instruction found at the [ https://openflow.stanford.edu/display/FOAM/install FOAM install] page. Created a file foam.list in the directory /etc/apt/sources.list.d/ containing the following:

   deb http://updates.flowvisor.org/openflow/downloads/GENI/DEB unstable/all/

Installed the foam package and initialize the FOAM database:

   $ sudo apt-get update 
   $ sudo apt-get install foam
   $ sudo -u www-data foamctl init-db
   Certificates Directory [/opt/foam/etc/gcf-ca-certs]: 
   Site Tag [mallorea.gpolab.bbn.com]:
   FlowVisor Hostname: mallorea.gpolab.bbn.com
   FlowVisor XMLRPC Port [8080]: 
   FlowVisor JSON RPC Port [8081]: 
   fvadmin user password: 

Set up the FOAM administrative account password:

  sudo foamctl set-password

Removed the default nginx site:

sudo rm /etc/nginx/sites-enabled/default 

Installed a trusted root certificate from pgeni.gpolab.bbn.com, bundled the certificate and started the FOAM services:

  $ sudo wget http://www.pgeni.gpolab.bbn.com/ca-cert/pgeni.gpolab.bbn.com.pem -O /opt/foam/etc/gcf-ca-certs/pgeni.gpolab.bbn.com.pem
  $ sudo wget https://emulab.net/genica.bundle -O /opt/foam/etc/gcf-ca-certs/emulab.pem --no-check-certificate
  $ sudo foamctl bundle-certs
  $ sudo service nginx start
  $ sudo service foam start 

Once the FOAM services are started generated a simple RSPEC using instructions from the Example RSPEC and Convert Expedient to FOAM RSPEC page:

<?xml version="1.1" encoding="UTF-8"?>
<rspec  xmlns="http://www.protogeni.net/resources/rspec/2"
        xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/2"
        xs:schemaLocation="http://www.protogeni.net/resources/rspec/2
              http://www.protogeni.net/resources/rspec/2/request.xsd
              http://www.geni.net/resources/rspec/ext/openflow/2
              http://www.geni.net/resources/rspec/ext/openflow/2/of-resv.xsd"
    type="request">

    <openflow:sliver description="Luisa sliver description"
                     email="lnevers@bbn.com"
                     ref="http://www.bbn.com">

        <openflow:controller url="tcp:mallorea.gpolab.bbn.com:9933" type="primary" />


        <openflow:group name="mygroup">

            <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:mallorea.gpolab.bbn.com+datapath:04:4d:00:12:e2:b8:a5:d0" component_manager_id="urn:publi
cid:IDN+openflow:foam:mallorea.gpolab.bbn.com+authority+am" > 
                <openflow:port name="GBE0/22" num="22"/>
  </openflow:datapath>

        </openflow:group>

        <openflow:match>
              <openflow:use-group name="mygroup" />
              <openflow:packet>
                     <openflow:dl_dst value="00:0c:29:9a:28:00,00:0c:29:1f:75:b0"/>
              </openflow:packet>
        </openflow:match>

        <openflow:match>
              <openflow:use-group name="mygroup" />
              <openflow:packet>
                 <openflow:dl_src value="00:0c:29:9a:28:00,00:0c:29:1f:75:b0"/> 
              </openflow:packet>
       </openflow:match>

    </openflow:sliver>
</rspec>

Using omni tools created a slice and got OF resources:

$  ./src/omni.py -n -a  https://mallorea.gpolab.bbn.com:3626/foam/gapi createslice foamslice1
INFO:omni:Loading config file omni_config
INFO:omni:Using control framework pgeni
INFO:omni:Created slice with Name foamslice1, URN urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+foamslice1, Expiration 2011-09-30 00:26:18
INFO:omni: ------------------------------------------------------------
INFO:omni: Completed createslice:

  Options as run:
                aggregate: https://mallorea.gpolab.bbn.com:3626/foam/gapi
                framework: pgeni
                native: True

  Args: createslice foamslice1

  Result Summary: Created slice with Name foamslice1, URN urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+foamslice1, Expiration 2011-09-30 00:26:18
 
INFO:omni: ============================================================

 ./src/omni.py -n -a  https://mallorea.gpolab.bbn.com:3626/foam/gapi createsliver foamslice1 FOAM.rspec      
INFO:omni:Loading config file omni_config
INFO:omni:Using control framework pgeni
INFO:omni:Slice urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+foamslice1 expires within 1 day on 2011-09-30 00:26:18 UTC
INFO:omni:Creating sliver(s) from rspec file FOAM.rspec for slice urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+foamslice1
INFO:omni:Asked https://mallorea.gpolab.bbn.com:3626/foam/gapi to reserve resources. Result:
INFO:omni:<?xml version="1.0" ?>
INFO:omni:<!-- Reserved resources for:
        Slice: foamslice1
        At AM:
        URL: https://mallorea.gpolab.bbn.com:3626/foam/gapi
 -->
INFO:omni:
<rspec type="manifest" xmlns="http://www.protogeni.net/resources/rspec/2" xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/2" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="http://www.protogeni.net/resources/rspec/2               http://www.protogeni.net/resources/rspec/2/request.xsd               http://www.geni.net/resources/rspec/ext/openflow/2               http://www.geni.net/resources/rspec/ext/openflow/2/of-resv.xsd">  

      <openflow:sliver description="Luisa sliver description" email="lnevers@bbn.com" ref="http://www.bbn.com">    

            <openflow:controller type="primary" url="tcp:mallorea.gpolab.bbn.com:9933"/>    


            <openflow:group name="mygroup">      

                  <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:mallorea.gpolab.bbn.com+datapath:04:4d:00:12:e2:b8:a5:d0" component_manager_id="urn:publicid:IDN+openflow:foam:mallorea.gpolab.bbn.com+authority+am">         
                        <openflow:port name="GBE0/22" num="22"/>        
        </openflow:datapath>      

            </openflow:group>    

            <openflow:match>      
                    <openflow:use-group name="mygroup"/>      
                    <openflow:packet>        
                             <openflow:dl_dst value="00:0c:29:9a:28:00,00:0c:29:1f:75:b0"/>        
                    </openflow:packet>      
            </openflow:match>    

            <openflow:match>      
                    <openflow:use-group name="mygroup"/>      
                    <openflow:packet>        
                         <openflow:dl_src value="00:0c:29:9a:28:00,00:0c:29:1f:75:b0"/>         
                    </openflow:packet>      
           </openflow:match>    

      </openflow:sliver>  
</rspec>
INFO:omni: ------------------------------------------------------------
INFO:omni: Completed createsliver:

  Options as run:
                aggregate: https://mallorea.gpolab.bbn.com:3626/foam/gapi
                framework: pgeni
                native: True

  Args: createsliver foamslice1 FOAM.rspec

  Result Summary: Slice urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+foamslice1 expires within 1 day(s) on 2011-09-30 00:26:18 UTC
Reserved resources on https://mallorea.gpolab.bbn.com:3626/foam/gapi.  
INFO:omni: ============================================================

NOX Installation

Followed the NOX Installation instructions from the noxrepo.org web site. only evaluated Ubuntu instructions. Install dependencies:

$ cd /etc/apt/sources.list.d
$ sudo wget http://openflowswitch.org/downloads/debian/nox.list
$ sudo apt-get update
$ sudo apt-get install nox-dependencies

Downloaded the NOX source code, but had to install the following undocumented packages for the instruction to work:

$ sudo apt-get install git-core

NOX installation

$ git clone git://noxrepo.org/nox
$ cd nox
$ git checkout zaku 
$ ./boot.sh 
$ mkdir build/
$ cd build/
$ ../configure
$ make -j 5

Followed the Using NOX instructions from the noxrepo.org web site.

$ cd nox/build/src
$ ./nox_core -v -i ptcp:6633

Installed the nox-gui pre-requisites and started nox-gui:

$ sudo apt-get install python-qt4 python-simplejson
???

Expedient Installation

Installed Expedient using the git repository instructions found in the Checkout Repository section of the Installing Expedient page, but first had to install pre-requisites:

  $ sudo apt-get install python-2.6
  $ sudo apt-get install xmlsec1
  $ sudo apt-get install libxmlsec1-devel
  $ sudo apt-get install python-setuptools 
  $ sudo apt-get install python-django
  $ sudo apt-get install python-django-registration
  $ sudo apt-get install python-decorator
  $ sudo apt-get install m2crypto
  $ sudo apt-get install python-imaging (PIL)
  $ sudo apt-get install python-dateutil
  $ sudo apt-get install python-crypto
  $ sudo apt-get install python-paramiko
  $ sudo apt-get install python-webob            
  $ sudo apt-get install python-OpenSSL
  $ sudo apt-get install python-pyquery
  $ sudo apt-get install sphinxsearch
  $ sudo apt-get install python-pygments
  $ sudo apt-get install libxslt-dev   
  $ sudo apt-get install python-zsi 
  $ sudo apt-get install python-mysqldb
  $ sudo easy_install django-autoslug
  & sudo easy_install django-renderform

Checked out the code:

  $ git clone git://openflow.org/expedient
  $ cd expedient/src/python
  $ PYTHONPATH=. python expedient/clearinghouse/bootstrap_local_settings.py expedient/clearinghouse/
Traceback (most recent call last):
  File "expedient/clearinghouse/bootstrap_local_settings.py", line 10, in <module>
    from expedient.clearinghouse.commands.utils import bootstrap_local_settings
  File "/home/lnevers/expedient/src/python/expedient/clearinghouse/commands/utils.py", line 12, in <module>
    from expedient.clearinghouse.defaultsettings.django import CONF_DIR
  File "/home/lnevers/expedient/src/python/expedient/clearinghouse/defaultsettings/django.py", line 104, in <module>
    "TEMPLATE_LOADERS", TEMPLATE_LOADERS, globals())
  File "/home/lnevers/expedient/src/python/expedient/clearinghouse/defaultsettings/utils.py", line 31, in append_to_local_setting
    import localsettings
ImportError: No module named localsettings
lnevers@mallorea:~/expedient/src/python$ 

After running into several issues, stopped evaluation due to the documentation and source not being maintained.

Attachments (1)

Download all attachments as: .zip