= GR-EXP-6: GRAM and Meso-scale Multi-site !OpenFlow Acceptance Test = This page captures status for the test case GR-EXP-6. For additional information see the [wiki:GENIRacksHome/GRAMRacks/AcceptanceTestStatusMay2013 Acceptance Test Status - May 2013] page overall status, or the [wiki:GENIRacksHome/AcceptanceTests/GRAMAcceptanceTestsPlan GRAM Acceptance Test Plan] for details about the planned evaluation. ''Last Update: 2013/05/17" || '''Step''' || '''State''' ||''' Notes ''' || '''Tickets''' || || Step 1 ||[[span(Pass, style=background-color: green )]] || || || || Step 2 ||[[span(Pass, style=background-color: green )]] || || || Step 3 ||[[span(Pass: most criteria, style=background-color: #98FB98)]]||Aggregate retains information for failed sliver||# 71 || || Step 4 ||[[span(Pass, style=background-color: green )]] || || || || Step 5 ||[[span(Pass, style=background-color: green )]] || || || || Step 6 ||[[span(Pass: most criteria, style=background-color: #98FB98)]]||Unable to request IP Address||#56 || || Step 7 ||[[span(Pass, style=background-color: green )]] || || || || Step 8 ||[[span(Pass, style=background-color: green )]] || || || || Step 9 ||[[span(Pass, style=background-color: green )]] || || || || Step 10 ||[[span(Pass, style=background-color: green )]] || || || || Step 11 ||[[span(Pass, style=background-color: green )]] || || || || Step 12 ||[[span(Fail, style=background-color: red)]] ||Cannot install Iperf for baseline measurements ||#57 || || Step 13 ||[[span(Pass, style=background-color: green )]] || || || Step 14 ||[[span(Pass, style=background-color: green )]] || || || || Step 15 ||[[span(Pass, style=background-color: green )]] || || || || Step 16 ||[[span(Pass, style=background-color: green )]] || || || || Step 17 ||[[span(Fail, style=background-color: red)]] ||No tools available to install static flows into controller|| || || Step 18 ||[[span(Fail, style=background-color: red)]] ||No tools available to install static flows into controller|| || || Step 19 ||[[span(Pass, style=background-color: green )]] || || || [[BR]] || '''State Legend''' || '''Description''' || ||[[span(Pass, style=background-color: green )]] || Test completed and met all criteria || ||[[span(Pass: most criteria, style=background-color: #98FB98)]]|| Test completed and met most criteria. Exceptions documented || ||[[span(Fail, style=background-color: red)]] || Test completed and failed to meet criteria. || ||[[span(Complete, style=background-color: yellow)]] || Test completed but will require re-execution due to expected changes || ||[[span(Blocked, style=background-color: orange)]] || Blocked by ticketed issue(s). || ||[[span(In Progress, style=background-color: #63B8FF)]]|| Currently under test. || = Test Plan Steps = This test case uses the following aggregate nick_names: {{{ gram=,https://128.89.91.170:5001 }}} ''Evaluation Note:'' Test case in in one rack, there are no remote !OpenFlow aggregates. ''Evaluation Note:'' Failed sliver information is preserved in the aggregate. Ticket #71 ''Evaluation Note:'' Experimenter is not able to request IP addresses Ticket #56 '' Evaluation Note:'' Cannot install iperf for baseline measurements, No sudo. Ticket #57 '' Evaluation Note:'' No tools available to install static flows into controller. This is not a GRAM issue, but prevents steps 17 and 18 from being executed. == Step 1. As Experimenter1, request !ListResources from BBN GRAM == As experimenter lnevers requested a list of resources: {{{ $ omni.py listresources -a gram2 -V2 INFO:omni:Loading config file /home/lnevers/.gcf/omni_config INFO:omni:Using control framework gram INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN INFO:omni:Listed advertised resources at 1 out of 1 possible aggregates. INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN INFO:omni: INFO:omni: INFO:omni: INFO:omni: ------------------------------------------------------------ INFO:omni: Completed listresources: Options as run: aggregate: ['gram2'] framework: gram Args: listresources Result Summary: Queried resources from 1 of 1 aggregate(s). INFO:omni: ============================================================ }}} == Step 2. Review list resources and determine !OpenFlow resources == There is no way to review available !OpenFlow resources. It is possible to get a list from VMOC of the resources allocation in the switch, a registry of active slices and VLANs configured. {{{ lnevers@boscontroller:~$ echo "dump" |nc localhost 7001 }}} == Step 3. Define a request RSpec for a VM at the BBN GRAM. == The following RSpec was defined: {{{ }}} == Step 4. Create the first slice. == Create the slice: {{{ $ omni.py createslice ln6633 INFO:omni:Loading config file /home/lnevers/.gcf/omni_config INFO:omni:Using control framework gram INFO:omni:Created slice with Name ln6633, URN urn:publicid:IDN+geni:bos:gcf+slice+ln6633, Expiration 2013-05-17 15:25:34 INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createslice: Options as run: framework: gram Args: createslice ln6633 Result Summary: Created slice with Name ln6633, URN urn:publicid:IDN+geni:bos:gcf+slice+ln6633, Expiration 2013-05-17 15:25:34 INFO:omni: ============================================================ }}} == Step 5. Create a sliver using the RSpecs defined above. == '''Note:''' Failed sliver information is preserved in the aggregate. Ticket #71 {{{ $ omni.py -a gram2 -V2 createsliver ln6633 ./GR-EXP-6.rspec INFO:omni:Loading config file /home/lnevers/.gcf/omni_config INFO:omni:Using control framework gram INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN WARNING:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+ln6633 expires in <= 3 hours INFO:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+ln6633 expires on 2013-05-17 15:25:34 UTC INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN INFO:omni:Creating sliver(s) from rspec file ./GR-EXP-6.rspec for slice urn:publicid:IDN+geni:bos:gcf+slice+ln6633 INFO:omni:Got return from CreateSliver for slice ln6633 at https://128.89.91.170:5002: INFO:omni: INFO:omni: INFO:omni: INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createsliver: Options as run: aggregate: ['gram2'] framework: gram Args: createsliver ln6633 ./GR-EXP-6.rspec Result Summary: Got Reserved resources RSpec from 128-89-91-170-5002 INFO:omni: ============================================================ }}} == Step 6. Log in to each of the systems, verify IP address assignment. Send traffic to the other system, leave traffic running. == ''Note:'' Unable to verify IP Addresses, experimenter cannot request IP Addresses from GRAM, ticket #56. Get login information: {{{ $ egrep login ln6633-manifest-rspec-128-89-91-170-5002.xml }}} Log in to first host: {{{ $ ssh 128.89.91.170 -p 3000 lnevers@of-vm1:~$ ifconfig eth1 eth1 Link encap:Ethernet HWaddr fa:16:3e:27:43:6b inet addr:10.0.70.100 Bcast:10.0.70.255 Mask:255.255.255.0 inet6 addr: fe80::f816:3eff:fe27:436b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:128 errors:0 dropped:0 overruns:0 frame:0 TX packets:22 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:20707 (20.7 KB) TX bytes:3821 (3.8 KB) lnevers@of-vm2:~$ ifconfig eth1 eth1 Link encap:Ethernet HWaddr fa:16:3e:13:66:fa inet addr:10.0.70.101 Bcast:10.0.70.255 Mask:255.255.255.0 inet6 addr: fe80::f816:3eff:fe13:66fa/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:99 errors:0 dropped:0 overruns:0 frame:0 TX packets:19 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:15620 (15.6 KB) TX bytes:3630 (3.6 KB) }}} Log in to second host: {{{ $ ssh 128.89.91.170 -p 3001 lnevers@of-vm2:~$ ifconfig eth1 eth1 Link encap:Ethernet HWaddr fa:16:3e:13:66:fa inet addr:10.0.70.101 Bcast:10.0.70.255 Mask:255.255.255.0 inet6 addr: fe80::f816:3eff:fe13:66fa/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:99 errors:0 dropped:0 overruns:0 frame:0 TX packets:19 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:15620 (15.6 KB) TX bytes:3630 (3.6 KB) lnevers@of-vm2:~$ ping 10.0.70.100 PING 10.0.70.100 (10.0.70.100) 56(84) bytes of data. 64 bytes from 10.0.70.100: icmp_req=1 ttl=64 time=1.57 ms 64 bytes from 10.0.70.100: icmp_req=2 ttl=64 time=0.978 ms 64 bytes from 10.0.70.100: icmp_req=3 ttl=64 time=0.873 ms 64 bytes from 10.0.70.100: icmp_req=4 ttl=64 time=0.947 ms 64 bytes from 10.0.70.100: icmp_req=5 ttl=64 time=0.864 ms }}} Verified VMOC information for the two node experiment: {{{ lnevers@boscontroller:~$ echo "dump" |nc localhost 7001 >>GR-EXP-6-vmoc lnevers@boscontroller:~$ tail -10 GR-EXP-6-vmoc VMOC Slice Registry: urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-13: {'vlan_configurations': [], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-13'} urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-1: {'vlan_configurations': [], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-1'} urn:publicid:IDN+geni:bos:gcf+slice+lngram: {'vlan_configurations': [], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+lngram'} urn:publicid:IDN+geni:bos:gcf+slice+ln6633: {'vlan_configurations': [{'vlan': 1001, 'controller_url': u'tcp:10.10.8.71:6633'}], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+ln6633'} https://localhost:9000 tcp:10.10.8.71:6633 {'vlan_configurations': [{'vlan': 1001, 'controller_url': u'tcp:10.10.8.71:6633'}], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+ln6633'} 1001: {'vlan_configurations': [{'vlan': 1001, 'controller_url': u'tcp:10.10.8.71:6633'}], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+ln6633'} }}} == Step 7. As Experimenter2, define a request RSpec for two VMs at BBN GRAM. == As lnevers2, defined the following RSpec: {{{ }}} == Step 8. Create a second slice == As lnevers2, created slice: {{{ $ omni.py createslice GR-EXP-6-2 INFO:omni:Loading config file /home/lnevers2/.gcf/omni_config INFO:omni:Using control framework gram INFO:omni:Created slice with Name GR-EXP-6-2, URN urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2, Expiration 2013-05-17 15:54:30 INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createslice: Options as run: framework: gram Args: createslice GR-EXP-6-2 Result Summary: Created slice with Name GR-EXP-6-2, URN urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2, Expiration 2013-05-17 15:54:30 INFO:omni: ============================================================ }}} == Step 9. Create a second sliver via AM API V3 == Created sliver via AM API V3. First allocated resources: {{{ $ omni.py allocate GR-EXP-6-2 -a gram -V3 ./GR-EXP-6-2.rspec INFO:omni:Loading config file /home/lnevers2/.gcf/omni_config INFO:omni:Using control framework gram INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN WARNING:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 expires in <= 3 hours INFO:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 expires on 2013-05-17 15:54:30 UTC INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN INFO:omni:Allocate slivers in slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 at https://128.89.91.170:5001: INFO:omni:{ "geni_rspec": " INFO:omni: INFO:omni: \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n", "geni_slivers": [ { "geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+vm7eb21a0f-a59e-4a83-96b2-53df196057d0", "geni_expires": "2013-05-17T14:06:24.886914+00:00", "geni_allocation_status": "geni_allocated", "geni_operational_status": "geni_notready", "geni_error": "" }, { "geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+vmff538923-1154-4b9e-be2d-ad5a010ebaa0", "geni_expires": "2013-05-17T14:06:24.886914+00:00", "geni_allocation_status": "geni_allocated", "geni_operational_status": "geni_notready", "geni_error": "" }, { "geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+linka21589dd-1f36-4839-a704-01e21b6bfb75", "geni_expires": "2013-05-17T14:06:24.886914+00:00", "geni_allocation_status": "geni_allocated", "geni_operational_status": "geni_notready", "geni_error": "" } ] } INFO:omni:All slivers expire on '2013-05-17T14:06:24.886914' INFO:omni: ------------------------------------------------------------ INFO:omni: Completed allocate: Options as run: aggregate: ['gram'] api_version: 3 framework: gram Args: allocate GR-EXP-6-2 ./GR-EXP-6-2.rspec Result Summary: Slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 expires in <= 3 hours on 2013-05-17 15:54:30 UTC Allocated slivers in slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 at https://128.89.91.170:5001. Next sliver expiration: 2013-05-17T14:06:24.886914 INFO:omni: ============================================================ }}} Then provisioned resources: {{{ $ omni.py provision GR-EXP-6-2 -a gram -V3 INFO:omni:Loading config file /home/lnevers2/.gcf/omni_config INFO:omni:Using control framework gram INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN WARNING:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 expires in <= 3 hours INFO:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 expires on 2013-05-17 15:54:30 UTC INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN INFO:omni:Provision slivers in slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 at https://128.89.91.170:5001 INFO:omni:{ "geni_rspec": " INFO:omni: INFO:omni: \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n", "geni_slivers": [ { "geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+linka21589dd-1f36-4839-a704-01e21b6bfb75", "geni_expires": "2013-05-17T15:54:30+00:00", "geni_allocation_status": "geni_provisioned", "geni_operational_status": "geni_ready", "geni_error": "" }, { "geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+vmff538923-1154-4b9e-be2d-ad5a010ebaa0", "geni_expires": "2013-05-17T15:54:30+00:00", "geni_allocation_status": "geni_provisioned", "geni_operational_status": "geni_notready", "geni_error": "" }, { "geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+vm7eb21a0f-a59e-4a83-96b2-53df196057d0", "geni_expires": "2013-05-17T15:54:30+00:00", "geni_allocation_status": "geni_provisioned", "geni_operational_status": "geni_notready", "geni_error": "" } ] } INFO:omni:All slivers expire on '2013-05-17T15:54:30' INFO:omni: ------------------------------------------------------------ INFO:omni: Completed provision: Options as run: aggregate: ['gram'] api_version: 3 framework: gram Args: provision GR-EXP-6-2 Result Summary: Slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 expires in <= 3 hours on 2013-05-17 15:54:30 UTC Provisioned slivers in slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 at https://128.89.91.170:5001. Next sliver expiration: 2013-05-17T15:54:30 INFO:omni: ============================================================ }}} == Step 10. Log in to each of the systems in the slice, and send traffic to each other systems; leave traffic running == Determined login information: {{{ lnevers2@arendia:~$ omni.py describe GR-EXP-6-2 -a gram -V3 -o lnevers2@arendia:~$ egrep login GR-EXP-6-2-describe-128-89-91-170-5001.json }}} Logged into first host: {{{ lnevers2@arendia:~$ ssh 128.89.91.170 -p 3003 lnevers2@exp2-of-vm1:~$ ifconfig eth1 eth1 Link encap:Ethernet HWaddr fa:16:3e:a4:df:3f inet addr:10.0.71.100 Bcast:10.0.71.255 Mask:255.255.255.0 inet6 addr: fe80::f816:3eff:fea4:df3f/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:97 errors:0 dropped:0 overruns:0 frame:0 TX packets:19 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:15505 (15.5 KB) TX bytes:3114 (3.1 KB) lnevers2@exp2-of-vm1:~$ ping 10.0.71.101 PING 10.0.71.101 (10.0.71.101) 56(84) bytes of data. 64 bytes from 10.0.71.101: icmp_req=1 ttl=64 time=2.96 ms 64 bytes from 10.0.71.101: icmp_req=2 ttl=64 time=0.734 ms 64 bytes from 10.0.71.101: icmp_req=3 ttl=64 time=0.838 ms 64 bytes from 10.0.71.101: icmp_req=4 ttl=64 time=0.717 ms 64 bytes from 10.0.71.101: icmp_req=5 ttl=64 time=0.802 ms }}} Logged into second host: {{{ lnevers2@arendia:~$ ssh 128.89.91.170 -p 3004 lnevers2@exp2-of-vm2:~$ ifconfig eth1 eth1 Link encap:Ethernet HWaddr fa:16:3e:c9:95:2a inet addr:10.0.71.101 Bcast:10.0.71.255 Mask:255.255.255.0 inet6 addr: fe80::f816:3eff:fec9:952a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:103 errors:0 dropped:0 overruns:0 frame:0 TX packets:17 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:15297 (15.2 KB) TX bytes:2980 (2.9 KB) lnevers2@exp2-of-vm2:~$ ping 10.0.71.100 PING 10.0.71.100 (10.0.71.100) 56(84) bytes of data. 64 bytes from 10.0.71.100: icmp_req=1 ttl=64 time=1.59 ms 64 bytes from 10.0.71.100: icmp_req=2 ttl=64 time=0.778 ms 64 bytes from 10.0.71.100: icmp_req=3 ttl=64 time=0.753 ms }}} === Step 11. Verify that experiments traffic exchange === Verify that the 2 experiments run without impacting each other's traffic, and that data is exchanged over the path along which data is supposed to flow. Verify that experiment 1 (GR-EXP-6) hosts cannot communicate with experiment 2 (GR-EXP-6-2) hosts: {{{ lnevers@of-vm1:~$ ping 10.0.71.100 PING 10.0.71.100 (10.0.71.100) 56(84) bytes of data. ^C --- 10.0.71.100 ping statistics --- 17 packets transmitted, 0 received, 100% packet loss, time 16000ms lnevers@of-vm1:~$ }}} Verify that experiment 2 (GR-EXP-6-2) hosts cannot communicate with experiment 1 (GR-EXP-6) hosts: {{{ lnevers2@exp2-of-vm1:~$ ping 10.0.70.100 PING 10.0.70.100 (10.0.70.100) 56(84) bytes of data. ^C --- 10.0.70.100 ping statistics --- 31 packets transmitted, 0 received, 100% packet loss, time 30239ms lnevers2@exp2-of-vm1:~$ }}} == Step 12. Review baseline monitoring statistics and checks. == '''Note:''' Cannot install iperf for baseline measurements. Ticket #57 == Step 13. As site administrator, identify all controllers that the BBN GRAM !OpenFlow switch is connected to. == Check the VMOC controller for the data path for each experiment (GR-EXP-6 and GR-EXP-6-2) on the controller : {{{ lnevers@boscontroller:~$ echo "dump" |nc localhost 7001 ..... VMOC Slice Registry: urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-13: {'vlan_configurations': [], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-13'} urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-1: {'vlan_configurations': [], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-1'} urn:publicid:IDN+geni:bos:gcf+slice+lngram: {'vlan_configurations': [], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+lngram'} urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2: {'vlan_configurations': [{'vlan': 1002, 'controller_url': u'tcp:10.10.8.71:6633'}], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+G urn:publicid:IDN+geni:bos:gcf+slice+ln6633: {'vlan_configurations': [{'vlan': 1001, 'controller_url': u'tcp:10.10.8.71:6633'}], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+ln663 https://localhost:9000 tcp:10.10.8.71:6633 {'vlan_configurations': [{'vlan': 1001, 'controller_url': u'tcp:10.10.8.71:6633'}], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+ln6633'} {'vlan_configurations': [{'vlan': 1002, 'controller_url': u'tcp:10.10.8.71:6633'}], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2'} 1001: {'vlan_configurations': [{'vlan': 1001, 'controller_url': u'tcp:10.10.8.71:6633'}], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+ln6633'} 1002: {'vlan_configurations': [{'vlan': 1002, 'controller_url': u'tcp:10.10.8.71:6633'}], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2'} }}} Controller for each VLAN can be shown on the switch, which provide address and port number for the VMOC controller: {{{ bosswitch# show openflow 1001 Openflow Configuration - VLAN 1001 Openflow state [Disabled] : Disabled Controller pseudo-URL : tcp:128.89.91.170:6633 Listener pseudo-URL : Openflow software rate limit [100] : 100 Openflow connecting max backoff [60] : 60 Openflow hardware acceleration [Enabled] : Enabled Openflow hardware rate limit [0] : 0 Openflow hardware stats max refresh rate [0] : 0 Openflow fail-secure [Disabled] : Enabled Second Controller pseudo-URL : Third Controller pseudo-URL : Openflow Status - VLAN 1001 Switch MAC address : 00:25:61:36:9D:00 Openflow datapath ID : 03E9002561369D00 Instance not running, no controller connection Number of hardware rules: 0 bosswitch# show openflow 1002 Openflow Configuration - VLAN 1002 Openflow state [Disabled] : Disabled Controller pseudo-URL : tcp:128.89.91.170:6633 Listener pseudo-URL : Openflow software rate limit [100] : 100 Openflow connecting max backoff [60] : 60 Openflow hardware acceleration [Enabled] : Enabled Openflow hardware rate limit [0] : 0 Openflow hardware stats max refresh rate [0] : 0 Openflow fail-secure [Disabled] : Enabled Second Controller pseudo-URL : Third Controller pseudo-URL : Openflow Status - VLAN 1002 Switch MAC address : 00:25:61:36:9D:00 Openflow datapath ID : 03EA002561369D00 Instance not running, no controller connection Number of hardware rules: 0 }}} == Step 14. Set the hard and soft timeout of flowtable entries == The hard and soft timeouts defaults can be modified by editing the VMOC source file VMOCUtils.py found in /home/gram/gram/src/vmoc directory. Default values are in VMOCUtils.py for soft timeout (idle_timeout) is 10 seconds, and for hard timeout the default is 30 seconds. == Step 15. Get switch statistics and flowtable entries for slivers from the !OpenFlow switch. == Connect to switch and captured OpenFlow statistics: {{{ bosswitch# show openflow Openflow Configuration Openflow aggregate VLANs [Disabled] : Openflow aggregate management VlanId [0] : 0 Openflow second aggregate management VlanId [0] : 0 Openflow aggregate configuration VlanId [0] : 0 VID State HW Controller Pseudo-URL Conn ---- ----- --- -------------------------------------------------- ---- 1000 Off On tcp:128.89.91.170:6633 No 1001 Off On tcp:128.89.91.170:6633 No 1002 Off On tcp:128.89.91.170:6633 No 1003 Off On tcp:128.89.91.170:6633 No 1004 Off On tcp:128.89.91.170:6633 No 1005 On On tcp:128.89.91.170:6633 Yes 1006 On On tcp:128.89.91.170:6633 Yes 1007 On On tcp:128.89.91.170:6633 Yes 1008 On On tcp:128.89.91.170:6633 Yes 1009 On On tcp:128.89.91.170:6633 Yes 1010 On On tcp:128.89.91.170:6633 Yes }}} Show information for VLAN 1001 which is used by the first experiment (ln6633) {{{ bosswitch# show openflow 1001 Openflow Configuration - VLAN 1001 Openflow state [Disabled] : Disabled Controller pseudo-URL : tcp:128.89.91.170:6633 Listener pseudo-URL : Openflow software rate limit [100] : 100 Openflow connecting max backoff [60] : 60 Openflow hardware acceleration [Enabled] : Enabled Openflow hardware rate limit [0] : 0 Openflow hardware stats max refresh rate [0] : 0 Openflow fail-secure [Disabled] : Enabled Second Controller pseudo-URL : Third Controller pseudo-URL : Openflow Status - VLAN 1001 Switch MAC address : 00:25:61:36:9D:00 Openflow datapath ID : 03E9002561369D00 Instance not running, no controller connection Number of hardware rules: 0 bosswitch# show vlans 1001 Status and Counters - VLAN Information - VLAN 1001 VLAN ID : 1001 Name : vlan1001 Status : Port-based Voice : No Jumbo : No Port Information Mode Unknown VLAN Status ---------------- -------- ------------ ---------- 8 Tagged Learn Up 16 Tagged Learn Up 24 Tagged Learn Up 34 Tagged Learn Up }}} Show information for second experiment: {{{ bosswitch# show vlan 1002 Status and Counters - VLAN Information - VLAN 1002 VLAN ID : 1002 Name : vlan1002 Status : Port-based Voice : No Jumbo : No Port Information Mode Unknown VLAN Status ---------------- -------- ------------ ---------- 8 Tagged Learn Up 16 Tagged Learn Up 24 Tagged Learn Up 34 Tagged Learn Up bosswitch# show mac-address Status and Counters - Port Address Table MAC Address Port VLAN ------------- ------ ---- 001b21-bc2710 48 820 00c0b7-58dca9 48 820 782bcb-4f626e 48 820 782bcb-505c02 48 820 782bcb-506801 48 820 782bcb-506803 48 820 782bcb-51a684 48 820 ccef48-675bd0 48 820 fa163e-1366fa 8 1001 fa163e-27436b 34 1001 fa163e-f60aa6 16 1001 fa163e-25abbf 16 1002 fa163e-a4df3f 34 1002 fa163e-c9952a 8 1002 }}} The MAC address for port "8" for VLAN 1002 is for "of-vm2" for experiment GR-EXP-6-2. We show some traffic statistics for the VM "of-vm2" on port 8: {{{ bosswitch# show interfaces 8 Status and Counters - Port Counters for port 8 Name : MAC Address : 002561-369de0 Link Status : Up Totals (Since boot or last clear) : Bytes Rx : 49,103,554 Bytes Tx : 245,278,086 Unicast Rx : 200,103 Unicast Tx : 162,608 Bcast/Mcast Rx : 84,953 Bcast/Mcast Tx : 1,259,131 Errors (Since boot or last clear) : FCS Rx : 0 Drops Tx : 0 Alignment Rx : 0 Collisions Tx : 0 Runts Rx : 0 Late Colln Tx : 0 Giants Rx : 0 Excessive Colln : 0 Total Rx Errors : 0 Deferred Tx : 0 Others (Since boot or last clear) : Discard Rx : 0 Out Queue Len : 0 Unknown Protos : 0 Rates (5 minute weighted average) : Total Rx (bps) : 4,199,472 Total Tx (bps) : 4,037,200 Unicast Rx (Pkts/sec) : 0 Unicast Tx (Pkts/sec) : 0 B/Mcast Rx (Pkts/sec) : 0 B/Mcast Tx (Pkts/sec) : 0 Utilization Rx : 00.41 % Utilization Tx : 00.40 % }}} Show information for VLAN 1002 which is used by the second experiment (GR-EXP-6-2) {{{ bosswitch# show openflow 1002 Openflow Configuration - VLAN 1002 Openflow state [Disabled] : Disabled Controller pseudo-URL : tcp:128.89.91.170:6633 Listener pseudo-URL : Openflow software rate limit [100] : 100 Openflow connecting max backoff [60] : 60 Openflow hardware acceleration [Enabled] : Enabled Openflow hardware rate limit [0] : 0 Openflow hardware stats max refresh rate [0] : 0 Openflow fail-secure [Disabled] : Enabled Second Controller pseudo-URL : Third Controller pseudo-URL : Openflow Status - VLAN 1002 Switch MAC address : 00:25:61:36:9D:00 Openflow datapath ID : 03EA002561369D00 Instance not running, no controller connection Number of hardware rules: 0 }}} == Step 16. Get layer 2 topology information about slivers in each slice. == Form the controller: {{{ $ python /etc/gram/dump_gram_snapshot.py --directory . --snapshot 2013_05_17_09_56_24_0.json Dumping snapshot 2013_05_17_09_56_24_0.json: Slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-2-exp1 Slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-1a Slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 Sliver urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+linka21589dd-1f36-4839-a704-01e21b6bfb75 User: urn:publicid:IDN+geni:bos:gcf+user+lnevers2 Sliver urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+vmff538923-1154-4b9e-be2d-ad5a010ebaa0 User: urn:publicid:IDN+geni:bos:gcf+user+lnevers2 Sliver urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+interface2a49e96f-ee7a-45c0-984c-c0dbfadb0b27 User: urn:publicid:IDN+geni:bos:gcf+user+lnevers2 Sliver urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+interface052ebf9a-083f-4836-abd2-0d8d849623ca User: urn:publicid:IDN+geni:bos:gcf+user+lnevers2 Sliver urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+vm7eb21a0f-a59e-4a83-96b2-53df196057d0 User: urn:publicid:IDN+geni:bos:gcf+user+lnevers2 }}} From the snapshot 2013_05_17_10_01_50_0.json, ARP infornatib us available: {{{ "network_interfaces": ["urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+interface35638f90-4383-440b-897e-f76f35a24c7d"], "__type__": "VirtualMachine", "last_octet": "100", "operational_state": "geni_ready", "os_version": "12", "mgmt_net_addr": "192.168.10.4", "manifest_rspec": " [VMOCControllerConnection DPID 282038087208836352 URL https://localhost:9000 VLAN 1001] [VMOCControllerConnection DPID 285978736882785536 URL https://localhost:9000 VLAN 1001] [VMOCControllerConnection DPID 285978736882785536 URL https://localhost:9000 VLAN 1001] [VMOCControllerConnection DPID 285978736882785536 URL https://localhost:9000 VLAN 1001] [VMOCControllerConnection DPID 285978736882785536 URL https://localhost:9000 VLAN 1001] [VMOCControllerConnection DPID 285978736882785536 URL https://localhost:9000 VLAN 1001] [VMOCControllerConnection DPID 282038087208836352 URL https://localhost:9000 VLAN 1001] [VMOCControllerConnection DPID 285415786929364224 URL https://localhost:9000 VLAN 1001] Controllers (by VLAN) 1001 [VMOCControllerConnection DPID 285978736882785536 URL https://localhost:9000 VLAN 1001] [VMOCControllerConnection DPID 285978736882785536 URL https://localhost:9000 VLAN 1001] [VMOCControllerConnection DPID 282038087208836352 URL https://localhost:9000 VLAN 1001] [VMOCControllerConnection DPID 285978736882785536 URL https://localhost:9000 VLAN 1001] [VMOCControllerConnection DPID 285415786929364224 URL https://localhost:9000 VLAN 1001] urn:publicid:IDN+geni:bos:gcf+slice+ln6633: {'vlan_configurations': [{'vlan': 1001, 'controller_url': u'tcp:10.10.8.71:6633'}], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+ln6633'} {'vlan_configurations': [{'vlan': 1001, 'controller_url': u'tcp:10.10.8.71:6633'}], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+ln6633'} 1002: {'vlan_configurations': [{'vlan': 1002, 'controller_url': u'tcp:10.10.8.71:6633'}], 'slice_id': u'urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2'} }}} }}} == Step 17. Install layer 2 flows == Install flows that match only on layer 2 fields, and confirm whether the matching is done in hardware. '''Note:''' No tools are available to install static flows. == Step 18. Install layer 3 flows == If supported, install flows that match only on layer 3 fields, and confirm whether the matching is done in hardware '''Note:''' No tools are available to install static flows. == Step 19. Delete slivers. == As lnevers delete first sliver: {{{ $ omni.py deletesliver -a gram2 -V2 ln6633INFO:omni:Loading config file /home/lnevers/.gcf/omni_config INFO:omni:Using control framework gram INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN WARNING:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+ln6633 expires in <= 3 hours INFO:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+ln6633 expires on 2013-05-17 19:23:00 UTC INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN INFO:omni:Deleted sliver urn:publicid:IDN+geni:bos:gcf+slice+ln6633 on unspecified_AM_URN at https://128.89.91.170:5002 INFO:omni: ------------------------------------------------------------ INFO:omni: Completed deletesliver: Options as run: aggregate: ['gram2'] framework: gram Args: deletesliver ln6633 Result Summary: Deleted sliver urn:publicid:IDN+geni:bos:gcf+slice+ln6633 on unspecified_AM_URN at https://128.89.91.170:5002 INFO:omni: ============================================================ }}} As lnevers2 delete second sliver: {{{ lnevers2@arendia:~$ omni.py delete GR-EXP-6-2 -a gram -V3 INFO:omni:Loading config file /home/lnevers2/.gcf/omni_config INFO:omni:Using control framework gram INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN WARNING:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 expires in <= 3 hours INFO:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 expires on 2013-05-17 19:24:44 UTC INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN INFO:omni:Deleted slivers in slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 on unspecified_AM_URN at https://128.89.91.170:5001 INFO:omni:Deletion of slivers in slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 at AM URL https://128.89.91.170:5001 INFO:omni:[] INFO:omni: ------------------------------------------------------------ INFO:omni: Completed delete: Options as run: aggregate: ['gram'] api_version: 3 framework: gram Args: delete GR-EXP-6-2 Result Summary: Deleted slivers in slice urn:publicid:IDN+geni:bos:gcf+slice+GR-EXP-6-2 on unspecified_AM_URN at https://128.89.91.170:5001 INFO:omni: ============================================================ }}}