tutorial: advanced topics in networking experiments using geni

43
Sponsored by the National Science Foundation Tutorial: Advanced Topics in Networking Experiments using GENI Niky Riga, Sarah Edwards GENI Project Office 26 July 2011

Upload: senta

Post on 22-Feb-2016

31 views

Category:

Documents


0 download

DESCRIPTION

Tutorial: Advanced Topics in Networking Experiments using GENI. Niky Riga, Sarah Edwards GENI Project Office 26 July 2011. Outline. Overview ProtoGeni resources MyPLC resources OpenFlow Resources Wrap Up. Tutorial Overview. Learn what is happening behind the scenes - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation

Tutorial: Advanced Topics in Networking Experiments using GENI

Niky Riga, Sarah EdwardsGENI Project Office

26 July 2011

Page 2: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 2GEC11: July 26, 2011

Outline

• Overview

• ProtoGeni resources • MyPLC resources

• OpenFlow Resources

• Wrap Up

Page 3: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 3GEC11: July 26, 2011

Tutorial Overview

• Learn what is happening behind the scenes– How is an experiment setup in GENI?– What are the key participants?

• Why is this useful?– Understand what might go wrong– Make more complicated experiments, build tools– Be brave and use resources that are not integrated yet

Page 4: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 4GEC11: July 26, 2011

Looking behind the scenes Disclaimer

• GENI is evolving fast– What is true today, might change tomorrow

• Use tutorial resources as a pointer

• Best place to get up-to-date info is the GENI wiki

• Email us with questions ([email protected])

http://groups.geni.net/geni/wiki/GeniExperiments

Page 5: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 5GEC11: July 26, 2011

GENIClearinghouse (CH)

Experimenter

Terminology

Slice

Sliver A Sliver B Sliver C

Slice Authority (SA)

AM A AM B AM C

Aggregate Managers (AMs)

Stitching

UC

SC

RSpecRSpec

RSpec

Page 6: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 6GEC11: July 26, 2011

GENIClearinghouse (CH)

Experimenter

For the Tutorial

Slice

Sliver A Sliver B Sliver C

Slice Authority (SA)

AM A AM B AM C

Stitchingemulab.net

pgeni.gpolab.bbn.com

MyPLC AggregateOpenFlow AggregateProtoGENI Aggregate

You

manual / OpenFlow

Page 7: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 7GEC11: July 26, 2011

OpenFlow Mesoscale Overview(code name Tango GENI)

OpenFlow Mesoscale deployment :• is a prototype GENI infrastructure • spans multiple sites connected over Layer 2

– 2 backbone, 7 regionals, 8 campuses• is open to experimenters that want to gain early

access to a Layer 2 infrastructure that combines multiple aggregates.

• includes : – OpenFlow aggregates – Private PlanetLab aggregates (MyPLC) – ProtoGeni aggregates

Page 8: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 8GEC11: July 26, 2011

Where are the tutorial resources?

10 OpenFlow AM (2 backbones (NLR, I2) + 8 campuses)8 MyPLC AM

- Clemson, GaTech, GPO, Indiana, Rutgers, Stanford, Wisconsin, Washington 2 ProtoGENI AM (GPO, Utah)

Page 9: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 9GEC11: July 26, 2011

Infrastructure setup

• Separate control and data plane– Control plane over commodity Internet– Data plane is Layer 2 over GENI backbone

• 2 VLANs over the same resources, providing different topologies

• All hosts have one interface directly connected to an OpenFlow switch

• 10 OpenFlow switches in the backbone

Page 10: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 10GEC11: July 26, 2011

Today’s GENI Experiment

Slice

ProtoGENI sliver

MyPLCsliverOpenFlow sliver

UC

Omni

Slice

ProtoGENI sliver

MyPLCsliver

OpenFlow sliver

UC

Omni

Page 11: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 11GEC11: July 26, 2011

Omni: Resource Reservation tool

• A command line experimenter tool

• Create slices and slivers using the GENI AM API

• Written in and scriptable from Python

• Use existing accounts– ProtoGENI– PlanetLab

• Works with aggregates that implement the GENI AM API – ProtoGENI, PlanetLab,

OpenFlow, …

$ omni.py createsliver aliceslice myRSpec.xml INFO:omni:Loading config file omni_config INFO:omni:Using control framework pgeni INFO:omni:Slice urn:publicid:IDN+pgeni.gpolab. expires within 1 day on 2011-07-07 INFO:omni:Creating sliver(s) from rspec fileINFO:omni:Writing result of createsliver for INFO:omni:Writing to ‘aliceslice-manifest-rspeINFO:omni: -----------------------------------INFO:omni: Completed createsliver:

Options as run: aggregate: https://www.emulab. framework: pgeni native: True

Args: createsliver aliceslice myRSpec.xml

Result Summary: Slice urn:publicid:IDN+pgeniReserved resources on https://www.emulab.net/p Saved createsliver results to aliceslice-manINFO:omni: ===================================

http://trac.gpolab.bbn.com/gcf/wiki/Omni

Page 12: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 12GEC11: July 26, 2011

AM API

• Common GENI Aggregate API which allows experimenters to manage resources

• AM API Commands:– GetVersion – ListResources – CreateSliver – DeleteSliver – SliverStatus – RenewSliver – Shutdown

Page 13: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 13GEC11: July 26, 2011

Omni Command Workflow

createslice

listmyslices

getversion

renewslice

createsliver

listresources

sliverstatus

deletesliver

Repeat for each aggregate

Repeat for each aggregate

CreateSlice

CreateSliver Cleanup

Legend: AM API command

Page 14: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 14GEC11: July 26, 2011

Configure omni_config[omni]default_cf = pgeni # Tutorial accounts are on GPO’s PGusers = alice # alice’s keys loaded on the VM to allow login

# ---------- Users ----------[alice]urn = urn:publicid:IDN+pgeni.gpolab.bbn.com+user+alice # Really important to get the keys correct!!!keys = ~/omni_tutorial/ssh/alice_key.pub #key to load on VM

# ---------- Frameworks ----------[pgeni]type = pgch = https://www.emulab.net:443/protogeni/xmlrpc/chsa = https://www.pgeni.gpolab.bbn.com:443/protogeni/xmlrpc/sa

# Tutorial certificate and keycert = ~/omni_tutorial/ssh/alice_cert_ct.pemkey = ~/omni_tutorial/ssh/alice_cert_ct.pem

Page 15: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 15GEC11: July 26, 2011

Getting Help

• omni.py –hLists all commands and their argumentsLists all command line optionsLists Omni versionLists url to find out more information about Omni

• Omni Troubleshooting page: http://trac.gpolab.bbn.com/gcf/wiki/OmniTroubleShoot

Page 16: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 16GEC11: July 26, 2011

Before we start

• Many people will be accessing the resources, so some calls might fail. Wait a bit and try again!

• Omni is a command line tool, copy-paste is your friend

• You can copy-paste between your computer and the VM.

Page 17: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 17GEC11: July 26, 2011

Let’s start …

I. Configure Omniomni.py getversion

II. Make a sliceomni.py createslice slicenameomni.py renewslice slicename dateomni.py listmyslices username

Note: -a aggregateUrl to specify an aggregate manager -o to save the output to a file

Slice

ProtoGENI sliver

MyPLCsliverOpenFlow sliver

UC

Omni

(I)(II)

Page 18: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 18GEC11: July 26, 2011

… now …

I. Configure Omniomni.py getversion

II. Make a sliceomni.py createslice slicenameomni.py renewslice slicename dateomni.py listmyslices username

Note: -a aggregateUrl to specify an aggregate manager -o to save the output to a file

Slice

ProtoGENI sliver

MyPLCsliverOpenFlow sliver

UC

Omni

(I)(II)

Page 19: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 19GEC11: July 26, 2011

Request Resources

Resource Specification Document (RSpec)• XML document that describes resources

– hosts, links, switches, etc• today 4 different RSpec versions are used

– ProtoGENI RSpec v2– ProtoGENI RSpec v0.2– PlanetLab RSpecs (SFA)– OpenFlow RSpecs

<?xml version="1.0" encoding="UTF-8"?><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/request.xsd” type="request" > <node client_id="my-node" exclusive="false"> <sliver_type name="emulab-openvz" /> </node></rspec>

Page 20: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 20GEC11: July 26, 2011

omni.py getversion

Page 21: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 21GEC11: July 26, 2011

ProtoGENI v2 RSpecs

<rspec type="request" xsi:schemaLocation=“… ” xmlns="http://www.protogeni.net/resources/rspec/2"> <node client_id=“…” component_manager_id=“urn:…" component_id=”urn:…” component_name=“…” exclusive="true"> <sliver_type name="raw-pc">

<disk_image name=”urn:…”> </sliver_type> <services> <execute command=“…” shell=“…” /> <install install_path=“…” url=“…” file_type=“…”/> </services> </node></rspec>

Page 22: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 22GEC11: July 26, 2011

… continue …Slice

ProtoGENI sliver

MyPLCsliverOpenFlow sliver

UC

Omni

III. Make a ProtoGENI sliveromni.py createsliver slicename reqRSpecomni.py sliverstatus slicename

(III)

Page 23: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 23GEC11: July 26, 2011

… now …Slice

ProtoGENI sliver

MyPLCsliverOpenFlow sliver

UC

Omni

III. Make a ProtoGENI sliveromni.py createsliver slicename reqRSpecomni.py sliverstatus slicename

(III)

Page 24: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 24GEC11: July 26, 2011

The Three Types of RSpecs

AggregateManager

Client

Advertisement

Request

Manifest

Advertisement RSpec : What does the AM have?Request RSpec : What does the Experimenter want? Manifest RSpec: What does the Experimenter have?

omni.py list

resources sl

icename

omni.py list

resources

omni.py createsliver slicename reqRSpec

Page 25: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 25GEC11: July 26, 2011

Too many RSpecs ….

• There is an art in writing well formed RSpecs

• Do not try to write one from scratch– Find example RSpecs and use

them as your base– Use tools, like Flack, to generate

sample RSpecs for you– When appropriate modify

advertisement RSpecs

Page 26: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 26GEC11: July 26, 2011

PlanetLab: Modifying an ad RSpec

<RSpec type="SFA"> <network name="plc"> <site id="s1"> <name>MyPLC</name> <node id="n1"> <hostname> host1.geni.net </hostname> </node> <node id="n2"> <hostname> host2.geni.net </hostname> </node> </site> </network></RSpec>

<RSpec type="SFA"> <network name="plc"> <site id="s1"> <name>MyPLC</name> <node id="n1"> <hostname> host1.geni.net </hostname> <sliver/> </node> <node id="n2"> <hostname> host2.geni.net </hostname> </node> </site> </network></RSpec>

Insert a <sliver/> tag in the node tag, for the node you want to reserve

Page 27: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 27GEC11: July 26, 2011

Scripting Omni

• You can write custom Python scripts – Call existing Omni functions– Parse the Output

• Example: getMyLogin.py– Calls sliverstatus– Parses output of sliverstatus– Determines ssh command to log into node

• More examples distributed with Omni

Page 28: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 28GEC11: July 26, 2011

… continue …Slice

ProtoGENI sliver

MyPLCsliverOpenFlow sliver

UC

Omni(IV)

(V)IV. Make a MyPLC sliver

omni.py listresources [slicename]omni.py createsliver slicename reqRSpec

Note : After creating your sliver wait for 1 minute before trying to login. If you can’t login for more than 5 minutes something is wrong

V. Run Layer 2 Ping

Page 29: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 29GEC11: July 26, 2011

… now …Slice

ProtoGENI sliver

MyPLCsliverOpenFlow sliver

UC

Omni

IV. Make a MyPLC sliveromni.py listresources [slicename]

omni.py createsliver slicename reqRSpecNote : After creating your sliver wait for 1 minute before trying to login. If

you can’t login for more than 5 minutes something is wrong

V. Run Layer 2 Ping

(IV)

(V)

Page 30: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 30GEC11: July 26, 2011

OpenFlow resources

Switch

Data Path (Hardware)

Control Path OpenFlow

Any Host

OpenFlow Controller

OpenFlow Protocol (SSL/TCP)

Modified slide from : http://www.deutsche-telekom-laboratories.de/~robert/GENI-Experimenters-Workshop.ppt

OpenFlow is an API– Controls how packets are forwarded– Implementable on COTS hardware– Make deployed networks programmable

FlowSpace describes packet flows :– Layer 1: Incoming port on switch– Layer 2: Ethernet src/dst addr, type, vlanid– Layer 3: IP src/dst addr, protocol, ToS– Layer 4: TCP/UDP src/dst port

An experimenter can control multiple FlowSpaces

Page 31: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 31GEC11: July 26, 2011

Aggregate

Experimenter

OpenFlow in GENI

OpenFlow AM(Expedient)

Opt-in Manager

FlowVisor

OpenFlow Firmware(on a switch)

OpenFlow Controller

The aggregate administrator needs to approve the RSpec

flowspace

Administrator

RSpec

Page 32: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 32GEC11: July 26, 2011

OpenFlow RSpec<resv_rspec type="openflow" version="2"> <user … /> <project … /> <slice controller_url="tcp:host:port” expiry="1326139200"/> <flowspace> <switch urn=“urn: … ”/> <port urn=“urn: … ”/> <pkt_field from=”…" to=”…"/></flowspace>>

expiry is in Unix timestamp pkt_field can be :

– dl_src, dl_dst, dl_type, dl_vlan– nw_src, nw_dst, nw_proto, nw_tos– tp_src, tp_dst

Page 33: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 33GEC11: July 26, 2011

Monitoring

• Each Aggregate is being monitored• Statistics are collected at GMOC (GENI Meta-

operation center)• Statistics graphed, look at : http://monitor.gpolab.bbn.com/tango/

Page 34: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 34GEC11: July 26, 2011

… continue …Slice

ProtoGENI sliver

MyPLCsliverOpenFlow sliver

UC

Omni

(VI)

VI. Make an OpenFlow sliveromni.py createsliver slicename reqRSpec

After you create your sliver, ask us to opt-in your traffic.Look at your traffic being opted-in.

Page 35: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 35GEC11: July 26, 2011

… now …Slice

ProtoGENI sliver

MyPLCsliverOpenFlow sliver

UC

Omni

(VI)

VI. Make an OpenFlow sliveromni.py createsliver slicename reqRSpec

After you create your sliver, ask us to opt-in your traffic.Look at your traffic being opted-in.

Page 36: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 36GEC11: July 26, 2011

Cleanup

• When your experiment is done, you should always release your resources. – Archive your data– Delete all your slivers

• OpenFlow slivers might outlive your slice, make sure you delete them before your slice expires

– When appropriate delete your slice

Page 37: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 37GEC11: July 26, 2011

Backbone #1

Backbone #2

Campus#3

Campus#2

Access#1

ResearchTestbed

Campus Your GENI Slice

• Get an account to run experiments on GENI

• Contact us at [email protected]

• More information on Experimenter Portal:– http://groups.geni.net/geni/wiki/ExperimenterPortal

Running Experiments on GENI

Page 38: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 38GEC11: July 26, 2011

… continue …Slice

ProtoGENI sliver

MyPLCsliverOpenFlow sliver

UC

Omni

VII. Cleanup resourcesomni.py deletesliver slicename

VIII. Request your own account– We will help you set up a ProtoGENI user account

(VII)(VIII)

Page 39: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 39GEC11: July 26, 2011

… the end!

UC

Omni

UC

Omni

Happy experimenting!

Page 40: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 40GEC11: July 26, 2011

Backup Slides

Page 41: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 41GEC11: July 26, 2011

Omni Resources

• Primary Information– omni.py -h– Omni Troubleshooting page: http://trac.gpolab.bbn.com/gcf/wiki/

OmniTroubleShoot– For Omni specific help: [email protected]– For general GENI help: [email protected]

• Omni Wiki (install instructions, documentation, bug reporting): http://trac.gpolab.bbn.com/gcf/wiki/Omni

• For an overview of GENI Experimentation using Omni:– http://groups.geni.net/geni/wiki/GENIExperimenter

• Example experiment walk-through:– http://groups.geni.net/geni/wiki/GENIExperimenter/ExperimentExample

• Example script walk-throughs:– http://trac.gpolab.bbn.com/gcf/wiki/OmniScriptingWithOptions and

http://trac.gpolab.bbn.com/gcf/wiki/OmniScriptingExpiration

Page 42: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 42GEC11: July 26, 2011

Omni Commands

• omni.py getversion• omni.py createslice slicename• omni.py renewslice slicename date• omni.py listmyslices username• omni.py createsliver slicename requestRSpec

• omni.py sliverstatus slicename• omni.py listresources [slicename]

-t ProtoGENI 2 to request PGV2 Rspecs• omni.py deletesliver slicename

Page 43: Tutorial: Advanced Topics in Networking Experiments using GENI

Sponsored by the National Science Foundation 43GEC11: July 26, 2011

Other Omni command line arguments

-c omni_config to use another omni_config-f plc to use a different framework-t ProtoGENI 2 to specify the version of the Rspec