[[PageOutline]] = 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 * [http://www.openflowhub.org/display/Indigo/Indigo+-+Download+Page Indigo] * Pica8 * !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. * [http://www.openflowhub.org/display/Snac/SNAC+OpenFlow+Controller+Packages SNAC] An !OpenFlow Controller which is a NOX module. Not covered here. * FOAM Version 0.2.x 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 [https://openflow.stanford.edu/display/flowvisor/fv_deploy FlowVisor deployment] page and !FlowVisor 0.8.1.2 found the following [attachment:"Feedback-Flowvisor0.8.1.2.txt" issues]. Reviewed several versions of the foam package (0.2.9, 0.2.11). Ran into several issues: - Advertisement rspecs do not have the component_manager_id in the openflow:datapath element - Advertisement rspecs have dpid attribute in the datapath element. - Foam package was corrupted in re-install due to process not being stopped before uninstall. The expedient review ran into to blocking issues that could not be resolved and evaluation was stopped. = 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 [attachment:"Feedback-Flowvisor0.8.1.2.txt" 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 was able to query for a list of resources: {{{ $ ./src/omni.py -n -a https://mallorea.gpolab.bbn.com:3626/foam/gapi listresources INFO:omni:Loading config file omni_config INFO:omni:Using control framework pgeni INFO:omni:Listed resources on 1 out of 1 possible aggregates. INFO:omni: INFO:omni: INFO:omni: INFO:omni: ------------------------------------------------------------ INFO:omni: Completed listresources: Options as run: aggregate: https://mallorea.gpolab.bbn.com:3626/foam/gapi framework: pgeni native: True Args: listresources Result Summary: Retrieved resources from 1 aggregates. Wrote rspecs from 1 aggregates. INFO:omni: ============================================================ }}} Generated a simple RSPEC using instructions from the [https://openflow.stanford.edu/display/FOAM/rspec Example RSPEC] and [http://groups.geni.net/geni/wiki/HowTo/ConvertExpedientToFoamRspecs Convert Expedient to FOAM RSPEC] page: {{{ }}} Using omni tools created a slice: {{{ $ ./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: ============================================================ }}} Then created a sliver: {{{ $ ./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: INFO:omni: INFO:omni: 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: ============================================================ }}} On the FOAM server verified that the sliver was created: {{{ $ foamctl list-slivers Password: { "slivers": [ { "status": "Pending", "slice_urn": "urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+foamslice1", "enabled": false, "id": 3, "flowvisor_slice": "2140384d-48fa-447c-930d-13c2066777bc", "sliver_urn": "urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+foamslice1:2140384d-48fa-447c-930d-13c2066777bc", "email": "lnevers@bbn.com", "desc": "Luisa sliver description" } ] } }}} Approved the sliver: {{{ $ foamctl approve-sliver -u urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+foamslice1:2140384d-48fa-447c-930d-13c2066777bc Password: true }}} Confirmed the approval: {{{ $ foamctl list-slivers Password: { "slivers": [ { "status": "Approved", "slice_urn": "urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+foamslice1", "enabled": true, "id": 3, "flowvisor_slice": "2140384d-48fa-447c-930d-13c2066777bc", "sliver_urn": "urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+foamslice1:2140384d-48fa-447c-930d-13c2066777bc", "email": "lnevers@bbn.com", "desc": "Luisa sliver description" } ] } }}} A pasword file can be created to store the foam password and used as an argument. Following is an example disable-sliver that uses a password file: {{{ $ foamctl disable-sliver --passwd-file=/opt/foam/etc/foampasswd disable-sliver -u urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+foamslice1:2140384d-48fa-447c-930d-13c2066777bc "" }}} Disabling puts the sliver back in pending state: {{{ $ foamctl list-slivers --passwd-file=/opt/foam/etc/foampasswd { "slivers": [ { "status": "Pending", "slice_urn": "urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+foamslice1", "enabled": false, "id": 3, "flowvisor_slice": "2140384d-48fa-447c-930d-13c2066777bc", "sliver_urn": "urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+foamslice1:2140384d-48fa-447c-930d-13c2066777bc", "email": "lnevers@bbn.com", "desc": "Luisa sliver description" } ] } }}} == NOX Installation == Followed the [http://noxrepo.org/noxwiki/index.php/NOX_Installation 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 [http://noxrepo.org/noxwiki/index.php/Using_NOX Using NOX] instructions from the noxrepo.org web site to start the NOX controller. {{{ $ cd nox/build/src $ ./nox_core -v -i ptcp:6633 }}} == Expedient Installation == Installed Expedient using the git repository instructions found in the [http://yuba.stanford.edu/~jnaous/expedient/docs/admin/install.html#admin-git-install-repo Checkout Repository] section of the [http://yuba.stanford.edu/~jnaous/expedient/docs/admin/install.html 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 from expedient.clearinghouse.commands.utils import bootstrap_local_settings File "/home/lnevers/expedient/src/python/expedient/clearinghouse/commands/utils.py", line 12, in from expedient.clearinghouse.defaultsettings.django import CONF_DIR File "/home/lnevers/expedient/src/python/expedient/clearinghouse/defaultsettings/django.py", line 104, in "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 }}} After running into several issues, stopped evaluation due to the documentation and source not being maintained.