Version 5 (modified by, 8 years ago) (diff)


How to Share a VLAN

The contents of this page are adapted from an e-mail from Leigh Stoller.

This page describes how to convert a LAN into a Shared LAN without operator intervention.

The general process to share a LAN is:

  1. Reserve resources which contain a LAN.
  2. Run perform operational action with the command geni_sharelan and setting the two options geni_sharelan_lanname and geni_sharelan_token. geni_sharelan_lanname is the client_id of the LAN reserved in the previous step. geni_sharelan_token is the name the new shared VLAN will be known by.
  3. Reserve resources connect to a LAN (probably in another slice). Configured the LAN to be a shared LAN whose name matches the value of geni_sharelan_token in the previous step.
  4. Resources should now be able to communicate with each other using the shared VLAN.

The general process to unshare a LAN is:

  1. Run perform operational action with the command geni_unsharelan and setting the two options geni_sharelan_lanname and geni_sharelan_token set as they were when you originally shared it.
  2. Resource no longer be able to communicate with each other using the shared VLAN.


  1. The LAN being shared must obviously be a real VLAN, not a trivial link (link between two VMs on the same physical host). In other words, the minimal case requires two VMs which each have a different component_id.
  2. There is no change to idleness or expiration behavior; these resources must be renewed like other resources using the usual mechanisms.
  3. When the shared LAN is unshared, or the slice terminated, all of the other slices that were using that LAN will have the ports yanked out and disabled. However, the resources will remain.
  4. There is currently no way to determine which slice contains the LAN which is shared. You must keep track of this manually.
  5. As of November 8, this only works at ProtoGENI Utah.


A minimal RSpec to use for reserving resources is:

<rspec type="request" 
  <node client_id="VM_pc423" component_manager_id="" component_id="" component_name="pc110" exclusive="false">
    <sliver_type name="emulab-xen"/>
    <interface client_id="VM:if0">
  <node client_id="VM" component_manager_id="" exclusive="false">
    <sliver_type name="emulab-openvz"/>
    <interface client_id="VM-0:if0">
  <link client_id="lan0">
    <component_manager name=""/>
    <interface_ref client_id="VM:if0"/>
    <interface_ref client_id="VM-0:if0"/>
    <property source_id="VM:if0" dest_id="VM-0:if0"/>
    <property source_id="VM-0:if0" dest_id="VM:if0"/>
    <link_type name="lan"/>

In the above, we have chosen a xen VM (bound to pc423) and a openVZ container to force the LAN to be non-trivial.