Skip to content
  • Leigh B. Stoller's avatar
    Various changes to support shared nodes (a node that can be shared · 02661f36
    Leigh B. Stoller authored
    between experiments and projects using VMs (jail, vservers, openvz,
    etc).
    
    * Add new slot to virt_nodes called "sharing_mode". Only admins can set
      this, via the NS file, to create an experiment consisting of nodes
      that are shared. A text string, in case we want to support different
      kinds of sharing modes.
    
    * Add new slot to reserved called "sharing_mode". This is copied from
      the virt_nodes table as above. Also, virtnodes that are currently
      allocated to a shared node, get this slot set, so that the rest of
      the system knows.
    
    * Add a toklen to the "erole" slot of the reserved table, called
      "sharedhost"; erole is returned to the client when it boots, and
      this is how the client knows it is acting as a shared host. We could
      probably compute this value in tmcd, but I did not want to change
      that now.
    
    * Add new slot to interfaces called "trunk". This is set when an
      interface should be set to trunking by "snmpit -t". We previously
      used the vinterfaces table to determine this, but there are other
      cases when we want an interface to be trunked.
    
      Aside: there is a problem with this approach I realized later;
      trunked interfaces are essentially shared resources of multiple
      vlans, which does not play well with the vlan optimizations in
      swapmod.
    
    * Add new slot to vinterfaces called "bandwidth"; this is the amount
      of bandwidth that link is defined to use (via the NS file). This is
      used in resource scheduling of link bandwidth.
    
    * Add new slot to interface_state called "remaining_bandwidth". For a
      shared node, we have to reserve both the nodes and the link bandwidth.
      We use this slot (with locking) from the mapper_wrapper to make sure that
      the link has not been consumed already by another assignment running at
      the same time.
    
    * Add new tokens "veth-ne", "veth-en", and "vlans" to the osfeatures slot
      of the os_info table. veth-en (encap) and veth-ne (no-encap) are intended
      to replace the current "veths" feature. "vlans" is set for OSs that
      support vlan devices.
    
    * Fix the primary key on the linkdelays table; it needed to have the
      exptidx in the key so that we can allocated linkdelays for different
      experiments to the same node.
    02661f36