= [wiki:GENIEducation/SampleAssignments/CCNAssignment/ExerciseLayout CCN ASSIGNMENT] = {{{ #!html
Hello GENI index Hello GENI index Hello GENI index
}}} = STEPS FOR SETTING UP = ''' Using Omni to get physical PCs from ProtoGENI:''' [[BR]] '''0. Get account: (Ignore this if you already have one) [[BR]]''' Go to [https://www.pgeni.gpolab.bbn.com/reqaccount.php3 Request_GENI_Account] for an emulab account and to join a GENI project.[[BR]] Apparently 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. '''1. Prepare Omni''' [[BR]] Here is a very good tutorial on setting up Omni environment: [http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/HelloOmni HelloOmni] [[BR]] Simply follow the tutorial to set up Omni. = Create an Experimental Topology for CCNx network for sharing precipitation data = '''1. Use Omni to create the topology: [[BR]]''' Download the RSPEC from http://www.gpolab.bbn.com/experiment-support/CCNExampleExperiment/precip.rspec [[BR]] Next, we need to create this experiment using the RSPEC file: [[BR]] '''Step 1. Create slice (use a unique name for your slice):''' {{{ omni.py createslice }}} Output should be something like the following (here I am using 'CCN' as the sample slice name): {{{ INFO:omni:Loading config file /Users/shuang/.gcf/omni_config INFO:omni:Using control framework portal INFO:omni:Created slice with Name CCN, URN urn:publicid:IDN+panther:ShufengProject+slice+CCN, Expiration 2013-05-29 22:04:13 INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createslice: Options as run: framework: portal project: ShufengProject Args: createslice CCN Result Summary: Created slice with Name CCN, URN urn:publicid:IDN+panther:ShufengProject+slice+CCN, Expiration 2013-05-29 22:04:13 INFO:omni: ============================================================ }}} '''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):''' {{{ omni.py renewslice CCN 20130604 }}} Output: {{{ INFO:omni:Loading config file /Users/shuang/.gcf/omni_config INFO:omni:Using control framework portal INFO:omni.pgch:Requesting new slice expiration '2013-06-04T00:00:00' INFO:omni:Slice CCN now expires at 2013-06-04 00:00:00 UTC INFO:omni:Slice urn:publicid:IDN+panther:ShufengProject+slice+CCN expires on 2013-06-04 00:00:00 UTC INFO:omni: ------------------------------------------------------------ INFO:omni: Completed renewslice: Options as run: framework: portal project: ShufengProject Args: renewslice CCN 20130604 Result Summary: Slice CCN now expires at 2013-06-04 00:00:00 UTC Slice urn:publicid:IDN+panther:ShufengProject+slice+CCN expires on 2013-06-04 00:00:00 UTC INFO:omni: ============================================================ }}} '''Step 3. Create Sliver using precip.rspec:''' {{{ omni.py createsliver -a pg-utah CCN precip.rspec }}} Output: {{{ INFO:omni:Loading config file /Users/shuang/.gcf/omni_config INFO:omni:Using control framework portal INFO:omni:Substituting AM nickname pg-utah with URL https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN INFO:omni:Slice urn:publicid:IDN+panther:ShufengProject+slice+CCN expires on 2013-06-04 00:00:00 UTC INFO:omni:Substituting AM nickname pg-utah with URL https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN INFO:omni:Substituting AM nickname pg-utah with URL https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN INFO:omni:Creating sliver(s) from rspec file precip.rspec for slice urn:publicid:IDN+panther:ShufengProject+slice+CCN INFO:omni: (PG log url - look here for details on any failures: https://www.emulab.net/spewlogfile.php3?logfile=0fac52bbb5785bf9e358661ffb053ae9) INFO:omni:Got return from CreateSliver for slice CCN at https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0: INFO:omni: INFO:omni: INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createsliver: Options as run: aggregate: ['pg-utah'] framework: portal project: ShufengProject Args: createsliver CCN precip.rspec Result Summary: Got Reserved resources RSpec from www-emulab-net-protogeniv2 INFO:omni: ============================================================ }}} The above output shows the reserved nodes: pc325, pc354, pc201, pc203, pc289, pc308, pc310, pc293 and how they are connected. [[BR]] Alternatively, you can use the following command to show the reserved nodes as well as ways to login: {{{ readyToLogin.py CCN -a pg-utah }}} 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]] Otherwise, the result is something like the following: {{{ #======================================== #SSH CONFIGURATION INFO for User shufeng #======================================== Host datasource2 Port 22 HostName pc289.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host researcher1 Port 22 HostName pc325.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host collaborator1 Port 22 HostName pc203.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host researcher2 Port 22 HostName pc293.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host collaborator2 Port 22 HostName pc201.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host datasource1 Port 22 HostName pc308.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host collaborator3 Port 22 HostName pc310.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host router Port 22 HostName pc354.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key ================================================================================ LOGIN INFO for AM: https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0 ================================================================================ datasource2's geni_status is: ready (am_status:ready) User shufeng logins to datasource2 using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc289.emulab.net & researcher1's geni_status is: ready (am_status:ready) User shufeng logins to researcher1 using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc325.emulab.net & collaborator1's geni_status is: ready (am_status:ready) User shufeng logins to collaborator1 using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc203.emulab.net & researcher2's geni_status is: ready (am_status:ready) User shufeng logins to researcher2 using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc293.emulab.net & collaborator2's geni_status is: ready (am_status:ready) User shufeng logins to collaborator2 using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc201.emulab.net & datasource1's geni_status is: ready (am_status:ready) User shufeng logins to datasource1 using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc308.emulab.net & collaborator3's geni_status is: ready (am_status:ready) User shufeng logins to collaborator3 using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc310.emulab.net & router's geni_status is: ready (am_status:ready) User shufeng logins to router using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc354.emulab.net & }}} '''Step 4. Renew the sliver:''' {{{ omni.py renewsliver -a pg-utah CCN 20130602 }}} Output: {{{ INFO:omni:Loading config file /Users/shuang/.gcf/omni_config INFO:omni:Using control framework portal INFO:omni:Substituting AM nickname pg-utah with URL https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN INFO:omni:Slice urn:publicid:IDN+panther:ShufengProject+slice+CCN expires on 2013-06-04 00:00:00 UTC INFO:omni:Renewing Sliver CCN until 2013-06-02 00:00:00+00:00 (UTC) INFO:omni:Substituting AM nickname pg-utah with URL https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN INFO:omni: (PG log url - look here for details on any failures: https://www.emulab.net/spewlogfile.php3?logfile=85ae878711f47058145b35f9be5c25ec) INFO:omni:Renewed sliver urn:publicid:IDN+panther:ShufengProject+slice+CCN at unspecified_AM_URN (https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0) until 2013-06-02T00:00:00+00:00 (UTC) INFO:omni: ------------------------------------------------------------ INFO:omni: Completed renewsliver: Options as run: aggregate: ['pg-utah'] framework: portal project: ShufengProject Args: renewsliver CCN 20130602 Result Summary: Slice urn:publicid:IDN+panther:ShufengProject+slice+CCN expires on 2013-06-04 00:00:00 UTC Renewed sliver urn:publicid:IDN+panther:ShufengProject+slice+CCN at unspecified_AM_URN (https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0) until 2013-06-02T00:00:00+00:00 (UTC) INFO:omni: ============================================================ }}} 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]] For a list of available aggregates, please see the file ~/.gcf/omni_config, check out `ProtoGENI AMs` section. OK. After this point, we are ready to log on to the nodes and do the CCNx network for sharing precipitation data experiments! :-) [[BR]] Please go to [wiki:GENIEducation/SampleAssignments/CCNAssignment/ExerciseLayout/Execute Next: Run Experiment] to checkout the instructions on running the experiment. = Create an Experimental Topology for LoadBalancing with OpenFlow = To create the Load Balancing Topology, simply follow the same steps as when you created the Fire Wall Topology. [[BR]] '''1. Use Omni to create the topology: [[BR]]''' Download the RSPEC from http://www.gpolab.bbn.com/experiment-support/OpenFlowExampleExperiment/lb.rspec [[BR]] Next, we need to create this experiment using the RSPEC file: [[BR]] '''Step 1. Create slice (use a unique name for your slice): Here I am using OpenFlowLB''' {{{ omni.py createslice OpenFlowLB }}} '''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):''' {{{ omni.py renewslice OpenFlowLB 20130521 }}} '''Step 3. Create Sliver using lb.rspec:''' {{{ omni.py createsliver -a pg-utah OpenFlowLB lb.rspec }}} Again, you can use the following command to show the reserved nodes as well as ways to login: {{{ readyToLogin.py OpenFlowLB -a pg-utah }}} 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]] Otherwise, the result is something like the following: {{{ #======================================== #SSH CONFIGURATION INFO for User shufeng #======================================== Host right Port 22 HostName pc135.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host router Port 22 HostName pc140.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host left Port 22 HostName pc138.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host switch Port 22 HostName pc137.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key ================================================================================ LOGIN INFO for AM: https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0 ================================================================================ right's geni_status is: ready (am_status:ready) User shufeng logins to right using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc135.emulab.net & router's geni_status is: ready (am_status:ready) User shufeng logins to router using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc140.emulab.net & left's geni_status is: ready (am_status:ready) User shufeng logins to left using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc138.emulab.net & switch's geni_status is: ready (am_status:ready) User shufeng logins to switch using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc137.emulab.net & }}} '''Step 4. Renew the sliver:''' {{{ omni.py renewsliver -a pg-utah OpenFlowLB 20130521 }}} 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]] For a list of available aggregates, please see the file ~/.gcf/omni_config, check out `ProtoGENI AMs` section. OK. After this point, we are ready to log on to the nodes and do the OpenFlow Load Balancing experiments! :-) [[BR]] Please go to [wiki:GENIEducation/SampleAssignments/OpenFlowAssignment/ExerciseLayout/Execute Next: Run Experiment] to checkout the instructions on running the load balancing experiment. = [wiki:GENIEducation/SampleAssignments/OpenFlowAssignment/ExerciseLayout/Execute Next: Run Experiment] =