Skip to content. | Skip to navigation

Personal tools

Navigation

You are here: Home / Wiki / Sppnodes

Sppnodes

ProtoGeni now supports the creation of vlans on the SPP nodes. To create a vlan, you must submit an RSpec rspec to the ProtoGeni XMLRPC interface that specified which of the spp nodes you want, and what ports you want. For simplicity, the node and port names are named according to the diagram on the Geni Integration page. Lets just start with a simple example, which should make it clear.

To create a link between port 1 on Utah's SPP node, and port 4 on Washington's SPP node, you would submit the following rspec:

<rspec xmlns="http://protogeni.net/resources/rspec/0.1">
 <node virtual_id="spp1" 
       virtualization_type="emulab-vnode" 
       virtualization_subtype="emulab-spp"
       component_uuid="urn:publicid:IDN+emulab.net+node+sppsalt-1"> 
   <interface virtual_id="virt0" component_id="eth1"/> 
 </node>
 <node virtual_id="spp2" 
       virtualization_type="emulab-vnode" 
       virtualization_subtype="emulab-spp"
       component_uuid="urn:publicid:IDN+emulab.net+node+sppwash-1"> 
   <interface virtual_id="virt0" component_id="eth5"/> 
 </node>
 <link virtual_id="link0"> 
  <bandwidth>1000000</bandwidth>
  <latency>0</latency>
  <link_type type_name="ethernet" />
  <packet_loss>0</packet_loss>
  <interface_ref 
            virtual_interface_id="virt0" 
            virtual_node_id="spp1"> 
  </interface_ref>
  <interface_ref 
            virtual_interface_id="virt0" 
            virtual_node_id="spp2"> 
 </interface_ref>
  </link> 
</rspec>

Notes about the above rspec:

  • The component names for the SPP nodes are 'sppsalt-1', 'sppwash-1', and 'sppkans-1', in URN format.
  • The component names for the ports on the SPP nodes are 'ethX' where X is 1-7 on the Utah and Kansas nodes, and 1-6 on the Washington node.
  • The virtual names exist simply to match the interfaces in the link section to the interface names in the node section. In the above example, 'virt0:eth5' on the Washington node ('sppwash-1') will be assigned to the 'spp1:virt0' interface in the link section.
  • The above rspec is "fully specified" which means that the specific physical nodes and interfaces are specified in the rspec. If you like, you can wildcard the interfaces and the nodes, letting the ProtoGeni system pick free nodes and interfaces for you. Examples for creating a link and a lan are attached to this page.

To submit the rspec, use the ProtoGeni test scripts. There is additional information on using ProtoGeni in the tutorial. For example, first register a slice, and then submit the rspec as follows:

mypc> registerslice.py -n sppslice
mypc> createsliver.py -n sppslice spp-link.rspec

If createsliver.py succeeds, you will see a print out of the sliver manifest, which is essentially your rspec, annotated with essential information you need to use the resources productively. For brevity, only the most important parts of the manifest are shown here:

<manifest>
  <link>
    <interface_ref>
      <virtual_interface_id>spp1:0</virtual_interface_id>
      <virtual_node_id>spp1</virtual_node_id>
    </interface_ref>
    <interface_ref>
      <virtual_interface_id>spp2:0</virtual_interface_id>
      <virtual_node_id>spp2</virtual_node_id>
    </interface_ref>
    <virtual_id>lan0</virtual_id>
    <vlantag>1207</vlantag>
  </link>
  <node>
    <component_urn>urn:publicid:IDN+emulab.net+node+sppwash-vm1-1</component_urn>
    <interface>
      <component_id>eth6</component_id>
      <virtual_id>spp1:0</virtual_id>
    </interface>
    <sliver_urn>urn:publicid:IDN+emulab.net+sliver+2479</sliver_urn>
    <virtual_id>spp1</virtual_id>
  </node>
  <node>
    <component_urn>urn:publicid:IDN+emulab.net+node+sppkans-vm1-1</component_urn>
    <interface>
      <component_id>eth5</component_id>
      <virtual_id>spp2:0</virtual_id>
    </interface>
    <sliver_urn>urn:publicid:IDN+emulab.net+sliver+2480</sliver_urn>
    <virtual_id>spp2</virtual_id>
  </node>
  <valid_until>2009-12-18T16:57:36</valid_until>
</manifest>

Notes about the manifest:

  • The nodes that were selected are provided in the "component_urn" field of the nodes section.
  • The interfaces that were selected are provided in the "component_id" field of the "interface" section of the nodes section.
  • The vlan tag that the switch selected is provided in the "vlantag" field of link section. Note that all vlans that include SPP nodes are placed in trunk mode.

By default, your sliver is set to expire after a fairly short time. The "valid_until" field in the manifest tells you precisely when that will happen. You will want to renew your sliver before it expires. For example, using the "renewsliver.py" script, you can set the expiration time. The script takes a simple integer; the number of minutes in the future you want the sliver to expire. Internally, the script converts that to a standard datetime representation:

mypc> renewsliver.py -n sppslice 5000
Got my SA credential
Found the slice, asking for a credential ...
Got the slice credential, asking for a sliver credential ...
Got the sliver credential, starting the sliver
Sliver has been renewed until 20091222T03:45:29

When you are done, terminate your sliver:

mypc> deletesliver.py -n sppslice
Got my SA credential. Looking for slice ...
Found the slice, asking for a credential ...
Got the slice credential, asking for a sliver credential ...
Got the sliver credential, deleting the sliver
Sliver has been deleted.

Note about existing vlans

There are number of vlans that already exist on the switches. Rather then clear those vlans and have you submit rspecs for them, we can wait until you are ready to clear them. After they are cleared (by hand), you can proceed with using the ProtoGeni interface.

The ports that are currently assigned to vlans are marked as busy in the Emulab DB, so you can still try out the ProtoGeni interface, allocating the free ports, with out worrying about your existing vlans getting changed.