= EG-EXP-7: Click Router Experiment Acceptance Test = This page captures status for the test case EG-EXP-2, which verifies a click router scenario between two racks. For overall status see the [wiki:GENIRacksHome/InstageniRacks/AcceptanceTestStatus InstaGENI Acceptance Test Status] page. ''Last update: 2013/01/09'' = Test Status = This section captures the status for each step in the acceptance test plan. || '''Step''' || '''State''' || '''Date completed''' ||''' Ticket ''' || '''Comments''' || || Step 1 || || || || || || Step 2 || || || || || || Step 3 || || || || || || Step 4 || || || || || || Step 5 || || || || || || Step 6 || || || || || || Step 7 || || || || || || Step 8 || || || || || || Step 9 || || || || || || Step 10 || || || || || || Step 11 || || || || || || Step 12 || || || || || || Step 13 || || || || || || Step 14 || || || || || || Step 15 || || || || || || Step 16 || || || || || [[BR]] || '''State Legend''' || '''Description''' || || [[Color(green,Pass)]] || Test completed and met all criteria || || [[Color(#98FB98,Pass: most criteria)]] || Test completed and met most criteria. Exceptions documented || || [[Color(red,Fail)]] || Test completed and failed to meet criteria. || || [[Color(yellow,Complete)]] || Test completed but will require re-execution due to expected changes || || [[Color(orange,Blocked)]] || Blocked by ticketed issue(s). || || [[Color(#63B8FF,In Progress)]] || Currently under test. || [[BR]] = Test Plan Steps = the following aggregate manager nicknames are used: {{{ ig-utah=,https://utah.geniracks.net/protogeni/xmlrpc/am/2.0 ig-gpo=,https://instageni.gpolab.bbn.com/protogeni/xmlrpc/am/2.0 }}} == 1. As Experimenter1, request !ListResources from GPO and Utah InstaGENI == As user lnevers@bbn.com requested listresources from GPO and Utah InstaGENI aggregates: {{{ $ omni.py listresources -a ig-gpo -o $ omni.py listresources -a ig-utah -o }}} == 2. Review !ListResources output from both AMs == Reviews output files ''rspec-instageni-gpolab-bbn-com-protogeniv2.xml'' and ''rspec-utah-geniracks-net-protogeniv2.xml'' to determine available resources. == 3. Define a request RSpec for three VMs at GPO InstaGENI == For InstaGENI aggregates, the RSpec for a sliver can include resources from multiple aggregates. The aggregate handling the request will only allocate its own resources, therefore one RSpec is used to capture the resource requests for both sites in this scenario. Defined an RSpec that requests one three VMs at the GPO rack and three VMs at the Utah rack. For each rack aggregate, one of the VMs will be an end-point host and the other two VMs will be click routers. The RSpec generated is [http://groups.geni.net/geni/browser/trunk/GENIRacks/InstaGENI/Spiral4/RSpecs/AcceptanceTests/IG-EXP-7/IG-EXP-7.rspec IG-EXP-7.rspec] and the topology is shown in the following image using client_ids defined in the RSpec:[[BR]] [[Image(IG-EXP-7.jpg)]] == 4. Define a request RSpec for three VMs at Utah InstaGENI == The RSpec generated for the GPO aggregate is also used for the Utah aggregate, the file is [http://groups.geni.net/geni/browser/trunk/GENIRacks/InstaGENI/Spiral4/RSpecs/AcceptanceTests/IG-EXP-7/IG-EXP-7.rspec IG-EXP-7.rspec]. == 5. Create slice == Created a slice: {{{ $ omni.py createslice IG-EXP-7 }}} == 6. Create a sliver == In the slice IG-EXP-7 create a slivers at each AM, using the RSpecs defined above. {{{ $ omni.py createsliver -a ig-utah IG-EXP-7 IG-EXP-7.rspec INFO:omni:Loading config file /home/lnevers/.gcf/omni_config INFO:omni:Using control framework pg INFO:omni:Substituting AM nickname ig-utah with URL http://utah.geniracks.net/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN INFO:omni:Slice urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+IG-EXP-7 expires within 1 day on 2013-01-11 22:23:09 UTC INFO:omni:Substituting AM nickname ig-utah with URL http://utah.geniracks.net/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN INFO:omni:Substituting AM nickname ig-utah with URL http://utah.geniracks.net/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN INFO:omni:Creating sliver(s) from rspec file IG-EXP-7.rspec for slice urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+IG-EXP-7 INFO:omni:Got return from CreateSliver for slice IG-EXP-7 at http://utah.geniracks.net/protogeni/xmlrpc/am/2.0: INFO:omni: INFO:omni: INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createsliver: Options as run: aggregate: ['ig-utah'] framework: pg Args: createsliver IG-EXP-7 IG-EXP-7.rspec Result Summary: Got Reserved resources RSpec from utah-geniracks-net-protogeniv2 INFO:omni: ============================================================ $ omni.py createsliver -a ig-gpo IG-EXP-7 IG-EXP-7.rspec INFO:omni:Loading config file /home/lnevers/.gcf/omni_config INFO:omni:Using control framework pg INFO:omni:Substituting AM nickname ig-gpo with URL http://instageni.gpolab.bbn.com/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN INFO:omni:Slice urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+IG-EXP-7 expires within 1 day on 2013-01-11 22:23:09 UTC INFO:omni:Substituting AM nickname ig-gpo with URL http://instageni.gpolab.bbn.com/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN INFO:omni:Substituting AM nickname ig-gpo with URL http://instageni.gpolab.bbn.com/protogeni/xmlrpc/am/2.0, URN unspecified_AM_URN INFO:omni:Creating sliver(s) from rspec file IG-EXP-7.rspec for slice urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+IG-EXP-7 INFO:omni:Got return from CreateSliver for slice IG-EXP-7 at http://instageni.gpolab.bbn.com/protogeni/xmlrpc/am/2.0: INFO:omni: INFO:omni: INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createsliver: Options as run: aggregate: ['ig-gpo'] framework: pg Args: createsliver IG-EXP-7 IG-EXP-7.rspec Result Summary: Got Reserved resources RSpec from instageni-gpolab-bbn-com-protogeniv2 INFO:omni: ============================================================ }}} == 7. Install Click router == Determine login for each of the devices allocated: {{{ $ readyToLogin.py -a ig-gpo IG-EXP-7 <...> host1's geni_status is: ready (am_status:ready) User lnevers logins to host1 using: xterm -e ssh -p 31548 -i /home/lnevers/.ssh/id_rsa lnevers@pc2.instageni.gpolab.bbn.com & click-1's geni_status is: ready (am_status:ready) User lnevers logins to click-1 using: xterm -e ssh -p 31546 -i /home/lnevers/.ssh/id_rsa lnevers@pc2.instageni.gpolab.bbn.com & click-2's geni_status is: ready (am_status:ready) User lnevers logins to click-2 using: xterm -e ssh -p 31547 -i /home/lnevers/.ssh/id_rsa lnevers@pc2.instageni.gpolab.bbn.com & Download the Click Router software on the 4 nodes that will be routers in the experiment. Build the user-level Click program in the 'userlevel' directory on each of the 4 router nodes. $ readyToLogin.py -a ig-utah IG-EXP-7 <...> click-4's geni_status is: ready (am_status:ready) User lnevers logins to click-4 using: xterm -e ssh -p 32571 -i /home/lnevers/.ssh/id_rsa lnevers@pc1.utah.geniracks.net & click-3's geni_status is: ready (am_status:ready) User lnevers logins to click-3 using: xterm -e ssh -p 32570 -i /home/lnevers/.ssh/id_rsa lnevers@pc1.utah.geniracks.net & host2's geni_status is: ready (am_status:ready) User lnevers logins to host2 using: xterm -e ssh -p 32572 -i /home/lnevers/.ssh/id_rsa lnevers@pc1.utah.geniracks.net & }}} Login to each of the click nodes and install click router: {{{ $ sudo yum -y install git $ sudo git clone git://read.cs.ucla.edu/git/click /local/click $ cd /local/click $ sudo ./configure $ cd tools $ sudo make install ?? $ cd /local/click/userlevel/ $ sudo gmake $ sudo make install $ ./click ../conf/test.click }}} == 8. Determine Click router settings == On each of the four routers, determine the interface mappings and modify click configuration to add the router interfaces: The following are executed on each of the routers: {{{ $ /sbin/ifconfig $ cd /local/click/userlevel $ sudo vi ../conf/print-pings.click ## add router interfaces }}} or.... Edit /local/click conf/make-ip-conf.pl to generate full Click Router IP Example conf/print-pings.click: {{{ FromDevice(mv5.5) // read packets from device // (assume Ethernet device) -> Classifier(12/0800) // select IP-in-Ethernet -> Strip(14) // strip Ethernet header -> CheckIPHeader // check IP header, mark as IP -> IPFilter(allow icmp && icmp type echo) // select ICMP echo requests -> IPPrint // print them out -> Discard; }}} == 9. Run the user-level Click router == Login to each of the routers, and run the user-level Click router by providing the print pings configuration file name. Leave terminal connection open: {{{ $ cd /local/click/userlevel $ sudo ./click ../conf/print-pings.click }}} == 10. Log in to Host1 and send traffic to host2 == Log in to host1 and send traffic to host2 and leave traffic running. Review the output on the terminal for each of the Log in to host2 and send traffic to host1 == 11. Review Click logs on each Click router == == 16. Delete slivers ==