= [wiki:GENIEducation/SampleAssignments/TcpAssignment/ExerciseLayout TCP 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. '''2. Use Omni to create the topology: [[BR]]''' Download the RSPEC from http://www.gpolab.bbn.com/experiment-support/TCPExampleExperiment/star.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 'shufengTCP' 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 shufengTCP, URN urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP, Expiration 2013-05-08 21:17:05 INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createslice: Options as run: framework: portal project: ShufengProject Args: createslice shufengTCP Result Summary: Created slice with Name shufengTCP, URN urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP, Expiration 2013-05-08 21:17:05 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 shufengTCP 20130509 }}} 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-05-09T00:00:00' INFO:omni:Slice shufengTCP now expires at 2013-05-09 00:00:00 UTC INFO:omni:Slice urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP expires within 1 day on 2013-05-09 00:00:00 UTC INFO:omni: ------------------------------------------------------------ INFO:omni: Completed renewslice: Options as run: framework: portal project: ShufengProject Args: renewslice shufengTCP 20130509 Result Summary: Slice shufengTCP now expires at 2013-05-09 00:00:00 UTC Slice urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP expires within 1 day(s) on 2013-05-09 00:00:00 UTC INFO:omni: ============================================================ }}} '''Step 3. Create Sliver using star.rspec:''' {{{ omni.py createsliver -a pg-utah shufengTCP star.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+shufengTCP expires within 1 day on 2013-05-09 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 star.rspec for slice urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP INFO:omni: (PG log url - look here for details on any failures: https://www.emulab.net/spewlogfile.php3?logfile=03ab3733e54e717594433659b39ca150) INFO:omni:Got return from CreateSliver for slice shufengTCP 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 shufengTCP star.rspec Result Summary: Got Reserved resources RSpec from www-emulab-net-protogeniv2 INFO:omni: ============================================================ }}} The above output shows the reserved nodes: pc73, pc81, pc55, pc47, pc84 and how they are connected. In this case, pc73 is the central node of the star topology. [[BR]] Alternatively, you can use the following command to show the reserved nodes as well as ways to login: {{{ readyToLogin.py shufengTCP -a pg-utah }}} The result is something like the following: {{{ #======================================== #SSH CONFIGURATION INFO for User shufeng #======================================== Host right Port 22 HostName pc55.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host bottom Port 22 HostName pc84.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host center Port 22 HostName pc73.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host top Port 22 HostName pc47.emulab.net User shufeng IdentityFile /Users/shuang/.ssh/geni_key Host left Port 22 HostName pc81.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@pc55.emulab.net & bottom's geni_status is: ready (am_status:ready) User shufeng logins to bottom using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc84.emulab.net & center's geni_status is: ready (am_status:ready) User shufeng logins to center using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc73.emulab.net & top's geni_status is: ready (am_status:ready) User shufeng logins to top using: xterm -e ssh -i /Users/shuang/.ssh/geni_key shufeng@pc47.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@pc81.emulab.net & }}} '''Step 4. Renew the sliver:''' {{{ omni.py renewsliver -a pg-utah shufengTCP 20130509 }}} 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+shufengTCP expires within 1 day on 2013-05-09 00:00:00 UTC INFO:omni:Renewing Sliver shufengTCP until 2013-05-09 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 WARNING:omni:Failed to renew sliver urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP on unspecified_AM_URN (https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0) (got result 'None'). Error from Aggregate: code 14. protogeni AM code: 14: slice is busy; try again later (PG log url - look here for details on any failures: https://www.emulab.net/spewlogfile.php3?logfile=daae02988bdac3f0d008b48b6397e0fb). INFO:omni: ------------------------------------------------------------ INFO:omni: Completed renewsliver: Options as run: aggregate: ['pg-utah'] framework: portal project: ShufengProject Args: renewsliver shufengTCP 20130509 Result Summary: Slice urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP expires within 1 day(s) on 2013-05-09 00:00:00 UTC Failed to renew sliver urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP on unspecified_AM_URN (https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0) (got result 'None'). Error from Aggregate: code 14. protogeni AM code: 14: slice is busy; try again later (PG log url - look here for details on any failures: https://www.emulab.net/spewlogfile.php3?logfile=daae02988bdac3f0d008b48b6397e0fb). 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. OK. After this point, we are ready to log on to the nodes and do our experiments! :-) ''' Using GENI Portal to get virtual machines from instaGENI:'''[[BR]] '''0. GET GENI Portal Account''' [[BR]] As usual, get a GENI Portal account via: [https://panther.gpolab.bbn.com Portal Main Site] [[BR]] Here is a very good tutorial on setting up GENI Portal account: [http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/PortalSimpleLayer2Example/SetupAccount Setup_Portal_Account] '''1. Prepare Omni by following this tutorial: [http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/HelloOmni HelloOmni] [[BR]]''' As a result, if you have already installed omni, all u need to do now is to do "omni-configure.py -f portal" [[BR]] Apparently GENI Portal also uses Omni to control and manage GENI resources. '''Very Important: using omni-configure.py -f portal will over-write ~/.ssh/geni_key and ~/.ssh/geni_key.pub. The result is, user can not login the reserved nodes using their omni keys (the original geni_key pair)''' [[BR]] '''So, the simplest way to deal with this is, over-write the public/private keys. i.e., type 'Y' when prompt asks whether you want to replace the two files. Then use portal credentials to reserve resources.''' [[BR]] '''2. Using GENI Portal to create the star topology''' [[BR]] Step 1. Log in to your Portal account, and then create a slice using the "create slice" button. Note that you should give your slice a unique name. Here I used "shufengPortalTCP" [[BR]] Step 2. Click your newly created slice, choose "add resources" [[Image(addResource.png, 40%)]] Step 3. Pick '''TCP Assignment - Virtual Machine''' in the drop-down box right to "Choose Resources" [[BR]] The rspec file that is used can be found at http://www.gpolab.bbn.com/experiment-support/TCPExampleExperiment/star-vm.rspec [[BR]] And choose an Aggregate, in our case, we choose "GPO instaGENI", then click "Reserve Resources" [[BR]] This particular RSPEC file will reserve a 5 virtual machines forming a star topology as described earlier. [[BR]] [[Image(selectRspec.png, 40%)]] Step 4. If there is no error(s), the output should be as follows. Note that at this point the nodes are not ready yet. [[BR]] [[Image(reserveResource.png, 40%)]] Step 5. Go back to the slice page and wait until the slivers are ready. [[BR]] Since we reserved our nodes from GPO instaGENI, we only need to click the "get status" button on GPO instaGENI column. [[BR]] A note of "READY" with green background means the slivers are ready. (Do not forget to renew your slice after it is ready). See: [[Image(sliceReady.png, 40%)]] Step 6. Click "Details" button to get the detailed information, including the ways to login each nodes and then start to do your experiment! [[BR]] [[Image(reserveResource.png, 40%)]] ''' Using Omni to get virtual machines from '''ExoGENI''':''' [[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. '''2. Use Omni to create the topology: [[BR]]''' Download the RSPEC from http://www.gpolab.bbn.com/experiment-support/TCPExampleExperiment/star-exo-vm.rspec [[BR]] - '''Note:''' If we compare the RSPEC we used here to reserve nodes from ExoGENI with the RSPEC we used [http://www.gpolab.bbn.com/experiment-support/TCPExampleExperiment/star-vm.rspec here] to reserve nodes from InstaGENI, we can find the following difference: - slivertype. For InstaGENI, it is `emulab-openvz`; For ExoGENI, it is `m1.small`. In fact, there are a handful of virtual machine types available for users to choose from. Check out this [https://wiki.exogeni.net/doku.php?id=public:experimenters:resource_types:start Link] - disk_image. For InstaGENI, the user does not need to specify a disk_image, it automatically chooses a default one (a version of Fedora Core). For ExoGENI, the user have to specify one. Again, we have a handful of choices, see [https://wiki.exogeni.net/doku.php?id=public:experimenters:images this link]. - interface. Since ExoGENI provides KVM VMs, the user needs to manually define the IP address of each interface on each ExoGENI nodes. - boot up execution scripts. When nodes are up in ExoGENI, the interfaces are not yet configured. ExoGENI relies on a `neuca` service to configure those interfaces. Unfortunately, this `neuca` service will over-write any network configurations once in a while. So the best way right now is to stop `neuca` service when the interfaces are up and running. The execution scripts help to detect whether interfaces are up then stops neuca service. Interested users can download the scripts and take a look. - xml header. 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 'shufengTCP' 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 shufengTCP, URN urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP, Expiration 2013-05-15 02:11:03 INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createslice: Options as run: framework: portal project: ShufengProject Args: createslice shufengTCP Result Summary: Created slice with Name shufengTCP, URN urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP, Expiration 2013-05-15 02:11:03 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 shufengTCP 20130516 }}} 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-05-16T00:00:00' INFO:omni:Slice shufengTCP now expires at 2013-05-16 00:00:00 UTC INFO:omni:Slice urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP expires on 2013-05-16 00:00:00 UTC INFO:omni: ------------------------------------------------------------ INFO:omni: Completed renewslice: Options as run: framework: portal project: ShufengProject Args: renewslice shufengTCP 20130516 Result Summary: Slice shufengTCP now expires at 2013-05-16 00:00:00 UTC Slice urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP expires on 2013-05-16 00:00:00 UTC INFO:omni: ============================================================ }}} '''Step 3. Create Sliver using star-exo-vm.rspec:''' [[BR]] Here we used eg-gpo as the aggregate manager because we want to reserve resources from ExoGENI. [[BR]] Any aggregate manager name that starts with `eg` indicates that it is an ExoGENI aggregate. For more aggregate manager names you can check out ~/.gcf/omni_config {{{ omni.py createsliver -a eg-gpo shufengTCP star-exo-vm.rspec }}} Output: {{{ INFO:omni:Loading config file /Users/shuang/.gcf/omni_config INFO:omni:Using control framework portal INFO:omni:Substituting AM nickname eg-gpo with URL https://bbn-hn.exogeni.net:11443/orca/xmlrpc, URN unspecified_AM_URN INFO:omni:Slice urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP expires on 2013-05-21 00:00:00 UTC INFO:omni:Substituting AM nickname eg-gpo with URL https://bbn-hn.exogeni.net:11443/orca/xmlrpc, URN unspecified_AM_URN INFO:omni:Substituting AM nickname eg-gpo with URL https://bbn-hn.exogeni.net:11443/orca/xmlrpc, URN unspecified_AM_URN INFO:omni:Creating sliver(s) from rspec file star-exo-vm.rspec for slice urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP INFO:omni:Got return from CreateSliver for slice shufengTCP at https://bbn-hn.exogeni.net:11443/orca/xmlrpc: INFO:omni: INFO:omni: INFO:omni: INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createsliver: Options as run: aggregate: ['eg-gpo'] framework: portal project: ShufengProject Args: createsliver shufengTCP star-exo-vm.rspec Result Summary: Got Reserved resources RSpec from bbn-hn-exogeni-net-11443-orca INFO:omni: ============================================================ }}} Note here that unlike instaGENI, the above output does not show any login information. [[BR]] For the time this page is created, the only way to get login information to access ExoGENI node is via: {{{ readyToLogin.py shufengTCP -a eg-gpo }}} The result is something like the following (Note that depends on the number of resources/nodes you reserved, you might wait for several minutes before you can see the following): {{{ #======================================== #SSH CONFIGURATION INFO for User root #======================================== Host right Port 22 HostName 192.1.242.66 User root IdentityFile /Users/shuang/.ssh/geni_key Host top Port 22 HostName 192.1.242.68 User root IdentityFile /Users/shuang/.ssh/geni_key Host bottom Port 22 HostName 192.1.242.65 User root IdentityFile /Users/shuang/.ssh/geni_key Host center Port 22 HostName 192.1.242.67 User root IdentityFile /Users/shuang/.ssh/geni_key Host left Port 22 HostName 192.1.242.64 User root IdentityFile /Users/shuang/.ssh/geni_key ================================================================================ LOGIN INFO for AM: https://bbn-hn.exogeni.net:11443/orca/xmlrpc ================================================================================ User root logins to right using: xterm -e ssh -i /Users/shuang/.ssh/geni_key root@192.1.242.66 & User root logins to top using: xterm -e ssh -i /Users/shuang/.ssh/geni_key root@192.1.242.68 & User root logins to bottom using: xterm -e ssh -i /Users/shuang/.ssh/geni_key root@192.1.242.65 & User root logins to center using: xterm -e ssh -i /Users/shuang/.ssh/geni_key root@192.1.242.67 & User root logins to left using: xterm -e ssh -i /Users/shuang/.ssh/geni_key root@192.1.242.64 & }}} '''Step 4. Renew the sliver:''' {{{ omni.py renewsliver -a eg-gpo shufengTCP 20130516 }}} Output: {{{ INFO:omni:Loading config file /Users/shuang/.gcf/omni_config INFO:omni:Using control framework portal INFO:omni:Substituting AM nickname eg-gpo with URL https://bbn-hn.exogeni.net:11443/orca/xmlrpc, URN unspecified_AM_URN INFO:omni:Slice urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP expires on 2013-05-16 00:00:00 UTC INFO:omni:Renewing Sliver shufengTCP until 2013-05-16 00:00:00+00:00 (UTC) INFO:omni:Substituting AM nickname eg-gpo with URL https://bbn-hn.exogeni.net:11443/orca/xmlrpc, URN unspecified_AM_URN INFO:omni:Renewed sliver urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP at unspecified_AM_URN (https://bbn-hn.exogeni.net:11443/orca/xmlrpc) until 2013-05-16T00:00:00+00:00 (UTC) INFO:omni: ------------------------------------------------------------ INFO:omni: Completed renewsliver: Options as run: aggregate: ['eg-gpo'] framework: portal project: ShufengProject Args: renewsliver shufengTCP 20130516 Result Summary: Slice urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP expires on 2013-05-16 00:00:00 UTC Renewed sliver urn:publicid:IDN+panther:ShufengProject+slice+shufengTCP at unspecified_AM_URN (https://bbn-hn.exogeni.net:11443/orca/xmlrpc) until 2013-05-16T00:00:00+00:00 (UTC) INFO:omni: ============================================================ }}} Note: When dealing with specific slivers, we need to add "-a eg-gpo" 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 ExoGENI Rack at GPO. '''Again, you can do all the above through GENI Portal. The name for the RSPEC on GENI Portal is called `TCP Assignment - ExoGENI Virtual Machine` ''' Note: when you try to login the nodes, you might encounter errors like the following: {{{ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the RSA key sent by the remote host is 12:3b:a0:19:db:b8:62:46:5d:a3:e2:06:27:eb:de:e2. Please contact your system administrator. Add correct host key in /Users/shuang/.ssh/known_hosts to get rid of this message. Offending RSA key in /Users/shuang/.ssh/known_hosts:20 RSA host key for 192.1.242.65 has changed and you have requested strict checking. Host key verification failed. }}} This type of error happens when you have previously logged in a machine with the same IP address and that machine happens not to be the same one as the VM you want to log in. [[BR]] As a result, this error might happen a lot, especially if you have done experiments on ExoGENI before (since it always uses the same IP range for its VMs and each VM is different from each other, i.e., with different RSA keys). [[BR]] In this case, simply open ''~/.ssh/known_hosts'' and remove the line corresponding to the IP address you are trying to login. In our case here, find ''192.1.242.65'' and remove that line. [[BR]] '''Note that the nodes are ready to login does not mean the interfaces are up and well configured. Users may need to wait for up to 5 minutes after nodes are up. ''' '''Enable IP forwarding and configure routing tables -- you can omit this step since the rspec has already done it for you :-)''' This is a very important step in terms of using ExoGENI. [[BR]] Since ExoGENI does not automatically configure IP address/routing table/IP forwarding for the user (unlike protoGENI and InstaGENI), the user needs to do it manually. [[BR]] Step 1. enable IP forwarding on center node (we need to first stop a routine that over-write any network configurations in ExoGENI node): [[BR]] On center node, run the following: {{{ /etc/init.d/neuca stop sysctl -w net.ipv4.ip_forward=1 }}} Step 2. configure default routes on the rest node: On left node, run the following: {{{ route add -net 172.16.0.0/16 gw 172.16.2.1 }}} On right node, run the following: {{{ route add -net 172.16.0.0/16 gw 172.16.3.1 }}} On top node, run the following: {{{ route add -net 172.16.0.0/16 gw 172.16.4.1 }}} On bottom node, run the following: {{{ route add -net 172.16.0.0/16 gw 172.16.5.1 }}} After these steps, we can start to do the experiments on ExoGENI virtual machines! '''Difference between ExoGENI and InstaGENI in terms of using:''' [[BR]] || || '''ExoGENI''' || '''InstaGENI''' || || '''VM type''' || KVM VM || OpenVZ || || '''RSPEC''' || Need to specify image, IP address, etc. || have default image, automatically assigns IP address || || '''Aggregate Manager''' || name begins with eg- || name begins with ig- || || '''Login Method''' || uses `root`, can only get from using `readyToLogin.py` and GENI Portal || uses your user account name, can get from flack, readyToLogin.py, GENI Portal. || || '''Flack interface''' || can only be accessible if launched from GENI Portal || accessible from directly using protogeni.net || || '''Routing and Forwarding''' || user have to manually enable forwarding and adding routing entries (can put in the RSPEC file) || the system automatically configures it for the user || || '''Others''' || user may need to clear corresponding entries/lines in file ~/.ssh/known_hosts in order to login || None || = [wiki:GENIEducation/SampleAssignments/TcpAssignment/ExerciseLayout/Execute Next: Run Experiment] =