= OG-EXP-2: OpenGENI Single Site Acceptance Test = This page captures status for the test case OG-EXP-2. For additional information see the [wiki:GENIRacksHome/OpenGENIRacks/AcceptanceTestStatusMay2013 Acceptance Test Status - May 2013] page overall status, or the [wiki:GENIRacksHome/AcceptanceTests/OpenGENIAcceptanceTestsPlan OpenGENI Acceptance Test Plan] for details about the planned evaluation. ''Last Update: 2013/05/15" || '''Step''' || '''State''' ||''' Notes ''' || '''Tickets''' || || Step 1 ||[[span(Pass, style=background-color: green )]] || || || || Step 2 ||[[span(Pass, style=background-color: green )]] || || || || Step 3 ||[[span(In Progress, style=background-color: #63B8FF)]]|| No experimenter customization available (only admin)|| || || Step 4 ||[[span(In Progress, style=background-color: #63B8FF)]]||Cannot request publically routable IP addresses|| #55 || || Step 5 ||[[span(Pass, style=background-color: green )]] || || || || Step 6 ||[[span(Pass, style=background-color: green )]] || || #54 || || Step 7 ||[[span(Pass, style=background-color: green )]] || Unable to request IP Address || #56 || || Step 8 ||[[span(Fail, style=background-color: red)]] || No sudo access || #57 || || Step 9 ||[[span(Pass: most criteria, style=background-color: #98FB98)]]|| || #57 || || Step 10 ||[[span(Pass, style=background-color: green )]]|| || || || Step 11 ||[[span(Pass, style=background-color: green )]]|| || || || Step 11 ||[[span(Pass, style=background-color: green )]]|| || || || Step 12 ||[[span(Pass, style=background-color: green )]]|| || || || 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(Pass, style=background-color: green )]]|| || || || Step 18 ||[[span(Pass, style=background-color: green )]]|| || || || Step 19 ||[[span(Pass, style=background-color: green )]]|| || || || Step 20 ||[[span(Pass: most criteria, style=background-color: #98FB98)]]|| Sliver with traffic are not deleted and resources remain available|| #58 || [[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:'' Experimenters cannot save customized images. Administrator can create a variety of images with customization that can be made available to experimenters. (#50) ''Evaluation Note:'' There is only one OS image available to users Ubuntu 12.04. ''Evaluation Note:'' Routable IP Addresses not supported (#55) '' Evaluation Note:'' Experimenter is not able to request IP addresses (#56) '' Evaluation Note'' There is no sudo access, cannot install iperf or load kernel module required in step in this test case. == Step 1. As Experimenter1, request !ListResources from BBN OpenGENI. == As experimenter "lnevers", issued a listresources command to determine available compute resources: {{{ $ omni.py listresources -a gram -V3 INFO:omni:Loading config file /home/lnevers/.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 INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN INFO:omni:Listed advertised resources at 1 out of 1 possible aggregates. INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN INFO:omni: INFO:omni: INFO:omni: INFO:omni: ------------------------------------------------------------ INFO:omni: Completed listresources: Options as run: aggregate: ['gram'] api_version: 3 framework: gram Args: listresources Result Summary: Queried resources from 1 of 1 aggregate(s). INFO:omni: ============================================================ }}} == Step 2. Review advertisement RSpec for a list of OS images which can be loaded, and identify available resources. == The OS available is ''''. Available resources are available on ''node client_id="VM"''. == Step 3. Verify that the GPO Ubuntu customized image is available in the advertisement RSpec. == There is no customization available for experimenters. Administrators can create customized images and make them available to experimenters. == Step 4. Define a request RSpec for two VMs, each with a GPO Ubuntu image. Request a publically routable IP address and public TCP/UDP port mapping for the control interface on each node. == Routable IP Addresses is not available, modified experiment to not include Routable IP Address Created the following RSpec: {{{ }}} == Step 5. Create the first slice. == Created the slice: {{{ $ omni.py createslice OG-EXP-2-exp1 INFO:omni:Loading config file /home/lnevers/.gcf/omni_config INFO:omni:Using control framework gram INFO:omni:Created slice with Name OG-EXP-2-exp1, URN urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1, Expiration 2013-05-15 16:37:21 INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createslice: Options as run: framework: gram Args: createslice OG-EXP-2-exp1 Result Summary: Created slice with Name OG-EXP-2-exp1, URN urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1, Expiration 2013-05-15 16:37:21 INFO:omni: ============================================================ }}} == Step 6. Create a sliver in the first slice, using the RSpec defined in step 4. == Allocate the sliver: {{{ $ omni.py allocate OG-EXP-2-exp1 -a gram ./OG-EXP-2-exp1.rspec -V3 INFO:omni:Loading config file /home/lnevers/.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+OG-EXP-2-exp1 expires in <= 3 hours INFO:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 expires on 2013-05-15 16:37:21 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+OG-EXP-2-exp1 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", "geni_slivers": [ { "geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+vm6a2af27d-23cc-4a6c-9b55-6e940cf88fe0", "geni_expires": "2013-05-15T14:58:48.137629+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+vma9675a33-1910-4fb1-879e-cc5a00b80ed2", "geni_expires": "2013-05-15T14:58:48.137629+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+link0275c641-28e8-44b8-8ac5-65845f814c60", "geni_expires": "2013-05-15T14:58:48.137629+00:00", "geni_allocation_status": "geni_allocated", "geni_operational_status": "geni_notready", "geni_error": "" } ] } INFO:omni:All slivers expire on '2013-05-15T14:58:48.137629' INFO:omni: ------------------------------------------------------------ INFO:omni: Completed allocate: Options as run: aggregate: ['gram'] api_version: 3 framework: gram Args: allocate OG-EXP-2-exp1 ./OG-EXP-2-exp1.rspec Result Summary: Slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 expires in <= 3 hours on 2013-05-15 16:37:21 UTC Allocated slivers in slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 at https://128.89.91.170:5001. Next sliver expiration: 2013-05-15T14:58:48.137629 INFO:omni: ============================================================ }}} Provision the sliver: {{{ $ omni.py provision OG-EXP-2-exp1 -a gram -V3 INFO:omni:Loading config file /home/lnevers/.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+OG-EXP-2-exp1 expires in <= 3 hours INFO:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 expires on 2013-05-15 16:37:21 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+OG-EXP-2-exp1 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 \n \n", "geni_slivers": [ { "geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+vm6a2af27d-23cc-4a6c-9b55-6e940cf88fe0", "geni_expires": "2013-05-15T16:37:21+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+vma9675a33-1910-4fb1-879e-cc5a00b80ed2", "geni_expires": "2013-05-15T16:37:21+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+link0275c641-28e8-44b8-8ac5-65845f814c60", "geni_expires": "2013-05-15T16:37:21+00:00", "geni_allocation_status": "geni_provisioned", "geni_operational_status": "geni_ready", "geni_error": "" } ] } INFO:omni:All slivers expire on '2013-05-15T16:37:21' INFO:omni: ------------------------------------------------------------ INFO:omni: Completed provision: Options as run: aggregate: ['gram'] api_version: 3 framework: gram Args: provision OG-EXP-2-exp1 Result Summary: Slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 expires in <= 3 hours on 2013-05-15 16:37:21 UTC Provisioned slivers in slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 at https://128.89.91.170:5001. Next sliver expiration: 2013-05-15T16:37:21 INFO:omni: ============================================================ }}} From the above manifest it is possible to see that exp1-host1 is allocated on boscompute1 and is accessible via the boscontroller on port 30001: {{{ component_id=\"urn:publicid:IDN+boscontroller.gpolab.bbn.com+node+boscompute1\" }}} From the above manifest it is possible to see that exp1-host2 is allocated on boscompute2 and is accessible via the boscontroller on port 30002: {{{ component_id=\"urn:publicid:IDN+boscontroller.gpolab.bbn.com+node+boscompute2\" }}} == Step 7. Log in to each of the systems, and send traffic to the other system sharing a VLAN. == Logged into to exp1-host1 and pinged exp1-host2: {{{ $ ssh 128.89.91.170 -p 3001 Warning: Permanently added '[128.89.91.170]:3001' (RSA) to the list of known hosts. Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-41-virtual x86_64) * Documentation: https://help.ubuntu.com/ System information as of Wed May 15 14:50:16 UTC 2013 System load: 0.15 Processes: 68 Usage of /: 3.9% of 19.67GB Users logged in: 0 Memory usage: 2% IP address for eth0: 192.168.10.5 Swap usage: 0% IP address for eth1: 10.0.37.100 Graph this data and manage this system at https://landscape.canonical.com/ Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud Use Juju to deploy your cloud instances and workloads: https://juju.ubuntu.com/#cloud-precise 0 packages can be updated. 0 updates are security updates. The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. lnevers@exp1-host1:~$ ping exp1-host2 PING exp1-host2-link-0 (10.0.37.101) 56(84) bytes of data. 64 bytes from exp1-host2-link-0 (10.0.37.101): icmp_req=1 ttl=64 time=2.72 ms 64 bytes from exp1-host2-link-0 (10.0.37.101): icmp_req=2 ttl=64 time=0.822 ms 64 bytes from exp1-host2-link-0 (10.0.37.101): icmp_req=3 ttl=64 time=0.812 ms 64 bytes from exp1-host2-link-0 (10.0.37.101): icmp_req=4 ttl=64 time=1.00 ms 64 bytes from exp1-host2-link-0 (10.0.37.101): icmp_req=5 ttl=64 time=0.832 ms ^C --- exp1-host2-link-0 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 0.812/1.238/2.723/0.746 ms }}} Logged into to exp1-host2 and pinged exp1-host1: {{{ $ ssh 128.89.91.170 -p 3002 Warning: Permanently added '[128.89.91.170]:3002' (RSA) to the list of known hosts. Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-41-virtual x86_64) * Documentation: https://help.ubuntu.com/ System information as of Wed May 15 14:50:31 UTC 2013 System load: 0.3 Processes: 68 Usage of /: 3.9% of 19.67GB Users logged in: 0 Memory usage: 2% IP address for eth0: 192.168.10.6 Swap usage: 0% IP address for eth1: 10.0.37.101 Graph this data and manage this system at https://landscape.canonical.com/ Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud Use Juju to deploy your cloud instances and workloads: https://juju.ubuntu.com/#cloud-precise 0 packages can be updated. 0 updates are security updates. The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. lnevers@exp1-host2:~$ /sbin/ifconfig eth0 Link encap:Ethernet HWaddr fa:16:3e:01:4b:ea inet addr:192.168.10.6 Bcast:192.168.10.255 Mask:255.255.255.0 inet6 addr: fe80::f816:3eff:fe01:4bea/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:300 errors:0 dropped:0 overruns:0 frame:0 TX packets:224 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:40779 (40.7 KB) TX bytes:24975 (24.9 KB) eth1 Link encap:Ethernet HWaddr fa:16:3e:42:73:c2 inet addr:10.0.37.101 Bcast:10.0.37.255 Mask:255.255.255.0 inet6 addr: fe80::f816:3eff:fe42:73c2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:65 errors:0 dropped:0 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:10989 (10.9 KB) TX bytes:942 (942.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lnevers@exp1-host2:~$ }}} ''Note:'' Allocated nodes did not use requested IP address. == Step 8. Using root privileges on one of the VMs load a Kernel module. If not supported on !OpenStack nodes, testing will proceed past this step. == The following commands are executed: {{{ # lsmod # modprobe dummy # lsmod |grep dummy # modprobe -r dummy # lsmod |grep dummy }}} The above commands cannot be executed, because there is no sudo access on the allocated nodes. == Step 9. Run a netcat listener and bind to port XYZ on each of the VMs in the BBN OpenGENI rack. == In cases where there are no routable IP addresses available this test is modified to exchange iperf traffic between two hosts. But iperf is not installed and there is no sudo access for installing packages (ticket #57.) Therefore going back to netcat scenario. On exp1-host1 start the listener: {{{ lnevers@exp1-host2:~$ nc -l 5000 }}} == Step 10. Send traffic to port XYZ on each of the VMs in the OpenGENI rack over the control network from any commodity Internet host. == On the host exp1-host2 send traffic: {{{ lnevers@exp1-host1:~$ nc exp1-host2 5000 hello this is exp1-host1 goodbye! lnevers@exp1-host1:~$ }}} Verified that the text appeared on the exp1-host1 listener: {{{{ lnevers@exp1-host2:~$ nc -l 5000 hello this is exp1-host1 goodbye! lnevers@exp1-host2:~$ }}} == Step 11. As Experimenter2, request !ListResources from Site2 OpenGENI. == As experimenter lnevers2, issued a listresources for OpenGENI: {{{ lnevers2@arendia:~$ omni.py listresources -a gram2 -V2 INFO:omni:Loading config file /home/lnevers2/.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: ============================================================ lnevers2@arendia:~$ }}} == Step 12. Define a request RSpec for two physical nodes, both using the uploaded GPO Ubuntu images. If not available, VMs and other images will be used. == The following RSpec was defined: {{{ }}} == Step 13. Create the second slice. == Created slice: {{{ $ omni.py createslice OG-EXP-1-exp2 INFO:omni:Loading config file /home/lnevers2/.gcf/omni_config INFO:omni:Using control framework gram INFO:omni:Created slice with Name OG-EXP-1-exp2, URN urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-1-exp2, Expiration 2013-05-15 18:00:45 INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createslice: Options as run: framework: gram Args: createslice OG-EXP-1-exp2 Result Summary: Created slice with Name OG-EXP-1-exp2, URN urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-1-exp2, Expiration 2013-05-15 18:00:45 INFO:omni: ============================================================ }}} == Step 14. Create a sliver in the second slice, using the RSpec defined in step 12. == Created sliver: {{{ $ omni.py createsliver -a gram2 -V2 OG-EXP-1-exp2 ./OG-EXP-2-exp2.rspec INFO:omni:Loading config file /home/lnevers2/.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+OG-EXP-1-exp2 expires in <= 3 hours INFO:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-1-exp2 expires on 2013-05-15 18:00:45 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 ./OG-EXP-2-exp2.rspec for slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-1-exp2 INFO:omni:Got return from CreateSliver for slice OG-EXP-1-exp2 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 OG-EXP-1-exp2 ./OG-EXP-2-exp2.rspec Result Summary: Got Reserved resources RSpec from 128-89-91-170-5002 INFO:omni: ============================================================ }}} == Step 15. Log in to each of the systems, and send traffic to the other system. == Once sliver was ready used login information from the manifest: {{{ == Step 16. Verify that experimenters 1 and 2 cannot use the control plane to access each other's resources. == == Step 17. Review system statistics and VM isolation and network isolation on data plane. == Reviewed system statistics on allocated nodes: {{{ lnevers2@exp2-host2:~$ vmstat -s 2051764 K total memory 275148 K used memory 40336 K active memory 182508 K inactive memory 1776616 K free memory 11356 K buffer memory 197008 K swap cache 0 K total swap 0 K used swap 0 K free swap 657 non-nice user cpu ticks 527 nice user cpu ticks 376 system cpu ticks 65975 idle cpu ticks 351 IO-wait cpu ticks 0 IRQ cpu ticks 0 softirq cpu ticks 0 stolen cpu ticks 214454 pages paged in 387044 pages paged out 0 pages swapped in 0 pages swapped out 14350 interrupts 31139 CPU context switches 1368633739 boot time 1610 forks lnevers2@exp2-host2:~$ top top - 16:14:41 up 12 min, 1 user, load average: 0.08, 0.03, 0.03 Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 2051764k total, 275172k used, 1776592k free, 11380k buffers Swap: 0k total, 0k used, 0k free, 197116k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1621 lnevers2 20 0 17312 1224 944 R 0.3 0.1 0:00.01 top 1 root 20 0 24276 2280 1360 S 0.0 0.1 0:00.61 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/0 5 root 20 0 0 0 0 S 0.0 0.0 0:00.09 kworker/u:0 6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 7 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset 9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 11 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 sync_supers 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 bdi-default 14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ata_sff 17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khubd 18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md 19 root 20 0 0 0 0 S 0.0 0.0 0:00.13 kworker/0:1 22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd 23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0 24 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd 25 root 39 19 0 0 0 S 0.0 0.0 0:00.00 khugepaged 26 root 20 0 0 0 0 S 0.0 0.0 0:00.00 fsnotify_mark 27 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ecryptfs-kthrea 28 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto 36 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kthrotld 37 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0 38 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_1 }}} == Step 18. Verify that each VM has a distinct MAC address for that interface. == Verified that MAC addresses are unique and match the value in the manifest. The manifest shows for exp2-host1: {{{