...
Once in GENI, you must join a project in order to actually reserve resources. For this course, the project you should be a member of is ece-4400-6400. You can browse all available projects from the "Projects" tab. Please to not try to join projects other than the one for our course. Once you join a project, there is no need to rejoin in the future – you will be a member until the project is terminated.
Create your Topology
Slices and Slivers
In GENI, there are two terms you should become familiar with – slice and sliver. A slice is your running experiment and might encompass multiple physical resources and/or racks around the country. You can think of a slice as your network topology including any end hosts you have attached to it. A sliver, on the other hand, defines your resources at a particular GENI location.
For example, if you were to reserve two VMs at both Clemson InstaGENI and Stanford InstaGENI with a layer 2 connection linking the VMs, your slice would be the four VMs and the tunnel (i.e. everything), whereas there would be three slivers – one at Clemson InstaGENI, one at Stanford InstaGENI, and one called AL2S (Advanced Layer 2 Services), which is responsible for establishing the link between the Clemson and Stanford slivers. If you ever ask for help on geni-users@googlegroups.com, they might throw these terms at you, which is why I introduce them now.
RSPECs
In order to reserve your resources, you need to first define what those resources are. To do this, GENI uses resource specification files or rspecs for short. An rspec is an XML file where you can define your resources using certain XML tags. An example rspec is given below:
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="utf-8"?> <rspec expires="2015-04-07T13:40:37Z" type="manifest" xmlns="http://www.geni.net/resources/rspec/3" xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab1" xmlns:jacks="http://www.protogeni.net/resources/rspec/ext/jacks/1" xmlns:tour="http://www.protogeni.net/resources/rspec/ext/apt-tour/1" xmlns:vtop="http://www.protogei.net/resources/rspec/ext/emulab/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/manifest.xsd"> <node client_id="client-stan" component_id="urn:publicid:IDN+instageni.stanford.edu+node+pc2" component_manager_id="urn:publicid:DN+instageni.stanford.edu+authority+cm" exclusive="false" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24452" xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"> <icon url="https://portal.geni.net/images/VM-noTxt-centered.svg" xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1"/> <sliver_type name="default-vm"/> <services> <login authentication="ssh-keys" hostname="pc2.instageni.stanford.edu" port="33851" username="rizard01"/> <emulab:console server="pc2.instageni.stanford.edu"/> </services> <interface client_id="if-client-ovs-stan" component_id="rn:publicid:IDN+instageni.stanford.edu+interface+pc2:lo0" mac_address="02e5da91e2bc" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24459"> <ip address="10.10.2.2" type="ipv4"/> </interface> <emulab:vnode name="pcvm2-12"/> <host name="client-stan.sos1.ch-geni-net.instageni.stanford.edu"/> </node> <node client_id="ovs-stan" component_id="urn:publicid:IDN+instageni.stanford.edu+node+pc2" component_manager_id="urn:publicid:IDNinstageni.stanford.edu+authority+cm" exclusive="false" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24453" xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"> <icon url="https://portal.geni.net/images/VM-noTxt-centered.svg" xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1"/> <routable_control_ip xmlns="http://www.protogeni.net/resources/rspec/ext/emulab/1"/> <sliver_type name="default-vm"/> <services> <login authentication="ssh-keys" hostname="pcvm2-13.instageni.stanford.edu" port="22" username="kwang01"/> <login authentication="ssh-keys" hostname="pcvm2-13.instageni.stanford.edu" port="22" username="rizard01"/> <emulab:console server="pcvm2-13.instageni.stanford.edu"/> </services> <interface client_id="link-stanford-max-stan" component_id="urn:publicid:IDN+instageni.stanford.edu+interface+pc2:eth0" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24456"> <ip address="10.0.150.1" netmask="255.255.255.0" type="ipv4"/> </interface> <interface client_id="if-ovs-client-stan" component_id="rn:publicid:IDN+instageni.stanford.edu+interface+pc2:lo0" mac_address="02547113add2" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24458"> <ip address="10.10.2.1" type="ipv4"/> </interface> <interface client_id="if-ovs-agent-stan" component_id="un:publicid:IDN+instageni.stanford.edu+interface+pc2:lo0" mac_address="0274b45e7138" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24462"> <ip address="10.10.3.2" type="ipv4"/> </interface> <emulab:vnode name="pcvm2-13"/> <host name="ovs-stan.sos1.ch-geni-net.instageni.stanford.edu"/> </node> <node client_id="agent-stan" component_id="urn:publicid:IDN+instageni.stanford.edu+node+pc2" component_manager_id="urn:publicid:IN+instageni.stanford.edu+authority+cm" exclusive="false" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24451" xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"> <icon url="https://portal.geni.net/images/VM-noTxt-centered.svg" xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1"/> <sliver_type name="default-vm"/> <services> <login authentication="ssh-keys" hostname="pc2.instageni.stanford.edu" port="33850" username="kwang01"/> <login authentication="ssh-keys" hostname="pc2.instageni.stanford.edu" port="33850" username="rizard01"/> <emulab:console server="pc2.instageni.stanford.edu"/> </services> <interface client_id="if-agent-ovs-stan" component_id="un:publicid:IDN+instageni.stanford.edu+interface+pc2:lo0" mac_address="02b0b691cb89" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24461"> <ip address="10.10.3.1" type="ipv4"/> </interface> <emulab:vnode name="pcvm2-11"/> <host name="agent-stan.sos1.ch-geni-net.instageni.stanford.edu"/> </node> <node client_id="agent-max" component_id="urn:publicid:IDN+instageni.maxgigapop.net+node+pc3" component_manager_id="urn:publicid:ID+instageni.maxgigapop.net+authority+cm" exclusive="false" sliver_id="urn:publicid:IDN+instageni.maxgigapop.net+sliver+15668" xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"> <icon url="https://portal.geni.net/images/VM-noTxt-centered.svg" xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1"/> <sliver_type name="default-vm"/> <services> <login authentication="ssh-keys" hostname="pc3.instageni.maxgigapop.net" port="32314" username="kwang01"/> <login authentication="ssh-keys" hostname="pc3.instageni.maxgigapop.net" port="32314" username="rizard01"/> <emulab:console server="pc3.instageni.maxgigapop.net"/> </services> <interface client_id="if-agent-ovs-max" component_id="urn:ublicid:IDN+instageni.maxgigapop.net+interface+pc3:lo0" mac_address="026b11909905" sliver_id="urn:publicid:IDN+instageni.maxgigapop.net+sliver+15676"> <ip address="10.10.2.2" type="ipv4"/> </interface> <emulab:vnode name="pcvm3-1"/> <host name="agent-max.sos1.ch-geni-net.instageni.maxgigapop.net"/> </node> <node client_id="client-max" component_id="urn:publicid:IDN+instageni.maxgigapop.net+node+pc3" component_manager_id="urn:publicid:IN+instageni.maxgigapop.net+authority+cm" exclusive="false" sliver_id="urn:publicid:IDN+instageni.maxgigapop.net+sliver+15669" xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"> <icon url="https://portal.geni.net/images/VM-noTxt-centered.svg" xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1"/> <sliver_type name="default-vm"/> <services> <login authentication="ssh-keys" hostname="pc3.instageni.maxgigapop.net" port="32315" username="kwang01"/> <login authentication="ssh-keys" hostname="pc3.instageni.maxgigapop.net" port="32315" username="rizard01"/> <emulab:console server="pc3.instageni.maxgigapop.net"/> </services> <interface client_id="if-client-ovs-max" component_id="urnpublicid:IDN+instageni.maxgigapop.net+interface+pc3:lo0" mac_address="02eb4374e711" sliver_id="urn:publicid:IDN+instageni.maxgigapop.net+sliver+15679"> <ip address="10.10.3.2" type="ipv4"/> </interface> <emulab:vnode name="pcvm3-2"/> <host name="client-max.sos1.ch-geni-net.instageni.maxgigapop.net"/> </node> <node client_id="ovs-max" component_id="urn:publicid:IDN+instageni.maxgigapop.net+node+pc3" component_manager_id="urn:publicid:IDN+nstageni.maxgigapop.net+authority+cm" exclusive="false" sliver_id="urn:publicid:IDN+instageni.maxgigapop.net+sliver+15670" xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"> <icon url="https://portal.geni.net/images/VM-noTxt-centered.svg" xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1"/> <routable_control_ip xmlns="http://www.protogeni.net/resources/rspec/ext/emulab/1"/> <sliver_type name="default-vm"/> <services> <login authentication="ssh-keys" hostname="pcvm3-17.instageni.maxgigapop.net" port="22" username="kwang01"/> <login authentication="ssh-keys" hostname="pcvm3-17.instageni.maxgigapop.net" port="22" username="rizard01"/> <emulab:console server="pcvm3-17.instageni.maxgigapop.net"/> </services> <interface client_id="link-stanford-max-max" component_id="urn:publicid:IDN+instageni.maxgigapop.net+interface+pc3:eth0" sliver_id="urn:publicid:IDN+instageni.maxgigapop.net+sliver+15673"> <ip address="10.0.150.2" netmask="255.255.255.0" type="ipv4"/> </interface> <interface client_id="if-ovs-agent-max" component_id="urn:ublicid:IDN+instageni.maxgigapop.net+interface+pc3:lo0" mac_address="025b1bc80530" sliver_id="urn:publicid:IDN+instageni.maxgigapop.net+sliver+15675"> <ip address="10.10.2.1" type="ipv4"/> </interface> <interface client_id="if-ovs-client-max" component_id="urnpublicid:IDN+instageni.maxgigapop.net+interface+pc3:lo0" mac_address="0206b1582723" sliver_id="urn:publicid:IDN+instageni.maxgigapop.net+sliver+15678"> <ip address="10.10.3.1" type="ipv4"/> </interface> <emulab:vnode name="pcvm3-17"/> <host name="ovs-max.sos1.ch-geni-net.instageni.maxgigapop.net"/> </node> <link client_id="link-stanford-max" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24455" xmlns:vtop="http://www.protogeni.net/resources/rspec/ext/emulab/1"> <link_type name="egre-tunnel"/> <interface_ref client_id="link-stanford-max-stan" component_id="urn:publicid:IDN+instageni.stanford.edu+interface+pc2:eth0" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24456"/> <interface_ref client_id="link-stanford-max-max"/> <component_manager name="urn:publicid:IDN+instageni.stanford.edu+authority+cm"/> <component_manager name="urn:publicid:IDN+instageni.maxgigapop.net+authority+cm"/> <vtop:link_attribute key="nomac_learning" value="yep"/> <property capacity="150000" dest_id="link-stanford-max-max" source_id="link-stanford-max-stan"/> </link> <link client_id="link-client-ovs-stan" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24457" xmlns:vtop="http://www.protogeni.net/resources/rspec/ext/emulab/1"> <interface_ref client_id="if-ovs-client-stan" component_id="urn:publicid:IDN+instageni.stanford.edu+interface+pc2:lo0" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24458"/> <interface_ref client_id="if-client-ovs-stan" component_id="urn:publicid:IDN+instageni.stanford.edu+interface+pc2:lo0" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24459"/> <component_manager name="urn:publicid:IDN+instageni.stanford.edu+authority+cm"/> <vtop:link_attribute key="nomac_learning" value="yep"/> <property capacity="150000" dest_id="if-client-ovs-stan" source_id="if-ovs-client-stan"/> </link> <link client_id="link-agent-ovs-stan" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24460" xmlns:vtop="http://www.protogeni.net/resources/rspec/ext/emulab/1"> <interface_ref client_id="if-agent-ovs-stan" component_id="urn:publicid:IDN+instageni.stanford.edu+interface+pc2:lo0" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24461"/> <interface_ref client_id="if-ovs-agent-stan" component_id="urn:publicid:IDN+instageni.stanford.edu+interface+pc2:lo0" sliver_id="urn:publicid:IDN+instageni.stanford.edu+sliver+24462"/> <component_manager name="urn:publicid:IDN+instageni.stanford.edu+authority+cm"/> <vtop:link_attribute key="nomac_learning" value="yep"/> <property capacity="150000" dest_id="if-ovs-agent-stan" source_id="if-agent-ovs-stan"/> </link> <link client_id="link-agent-ovs-max" xmlns="http://www.geni.net/resources/rspec/3"> <interface_ref client_id="if-ovs-agent-max" xmlns="http://www.geni.net/resources/rspec/3"/> <interface_ref client_id="if-agent-ovs-max" xmlns="http://www.geni.net/resources/rspec/3"/> <component_manager name="urn:publicid:IDN+instageni.maxgigapop.net+authority+cm" xmlns="http://www.geni.net/resources/rspec/3"/> <vtop:link_attribute key="nomac_learning" value="yep"/> <property capacity="150000" dest_id="if-agent-ovs-max" source_id="if-ovs-agent-max"/> </link> <link client_id="link-client-ovs-max" xmlns="http://www.geni.net/resources/rspec/3"> <interface_ref client_id="if-ovs-client-max" xmlns="http://www.geni.net/resources/rspec/3"/> <interface_ref client_id="if-client-ovs-max" xmlns="http://www.geni.net/resources/rspec/3"/> <component_manager name="urn:publicid:IDN+instageni.maxgigapop.net+authority+cm" xmlns="http://www.geni.net/resources/rspec/3"/> <vtop:link_attribute key="nomac_learning" value="yep"/> <property capacity="150000" dest_id="if-client-ovs-max" source_id="if-ovs-client-max"/> </link> <rs:site_info xmlns:rs="http://www.protogeni.net/resources/rspec/ext/site-info/1"> <rs:location country="US" latitude="37.43" longitude="-122.17"/> </rs:site_info> <rs:site_info xmlns:rs="http://www.protogeni.net/resources/rspec/ext/site-info/1"> <rs:location country="US" latitude="38.970941" longitude="-76.921971"/> </rs:site_info> </rspec> |
...
Now, that looks nasty. And up until a year or so ago, we were writing these by hand. Lucky for you – the next generation of GENI users – there is Jacks.
Jacks
Jacks is a JavaScript-based GUI where you can define your slices in graphical way without the need to actually write an rspec by hand. There are some types of exotic slices that still require "massaging" an rspec manually in order to get the exact topology needed. However, for this course, everything we do will be straightforward enough to use Jacks.