1. 24 Sep, 2012 1 commit
    • Eric Eide's avatar
      Replace license symbols with {{{ }}}-enclosed license blocks. · 6df609a9
      Eric Eide authored
      This commit is intended to makes the license status of Emulab and
      ProtoGENI source files more clear.  It replaces license symbols like
      "EMULAB-COPYRIGHT" and "GENIPUBLIC-COPYRIGHT" with {{{ }}}-delimited
      blocks that contain actual license statements.
      
      This change was driven by the fact that today, most people acquire and
      track Emulab and ProtoGENI sources via git.
      
      Before the Emulab source code was kept in git, the Flux Research Group
      at the University of Utah would roll distributions by making tar
      files.  As part of that process, the Flux Group would replace the
      license symbols in the source files with actual license statements.
      
      When the Flux Group moved to git, people outside of the group started
      to see the source files with the "unexpanded" symbols.  This meant
      that people acquired source files without actual license statements in
      them.  All the relevant files had Utah *copyright* statements in them,
      but without the expanded *license* statements, the licensing status of
      the source files was unclear.
      
      This commit is intended to clear up that confusion.
      
      Most Utah-copyrighted files in the Emulab source tree are distributed
      under the terms of the Affero GNU General Public License, version 3
      (AGPLv3).
      
      Most Utah-copyrighted files related to ProtoGENI are distributed under
      the terms of the GENI Public License, which is a BSD-like open-source
      license.
      
      Some Utah-copyrighted files in the Emulab source tree are distributed
      under the terms of the GNU Lesser General Public License, version 2.1
      (LGPL).
      6df609a9
  2. 23 Nov, 2010 1 commit
    • Robert Ricci's avatar
      Fix a bookkeeping bug in the ptop parsers - all of them · c0419958
      Robert Ricci authored
      Fix a bug where the total bandwidth for pnodes that are directly
      connected (without an intervening switch) is not kept track of
      correctly.
      
      Originally introduced into parse_ptop.cc, and spread to the other
      parsers via copy and paste.
      c0419958
  3. 10 Nov, 2010 1 commit
  4. 13 Oct, 2010 1 commit
    • Robert Ricci's avatar
      Fifth attempt at fixing fixed interfaces in assign · a773d833
      Robert Ricci authored
      Think I got it this time (yeah, I've said that four times before).
      It requires some extra bookkeeping; we were recording source and
      dest interface names in tb_plink, but not source and dest node
      names. With this new information, find_best_link() now has sole
      responsibility for figuring out if the vlink and plink go in the
      same direction, and the callers of find_best_link() are now
      responsible for knowing which direction they are traversing the
      vlink in (and thus whether they should tell find_best_link() to
      check the source or dest of the vlink.)
      a773d833
  5. 20 May, 2009 1 commit
  6. 31 Mar, 2008 1 commit
  7. 17 Dec, 2007 1 commit
    • Robert Ricci's avatar
      Fix for fixed interfaces: move the code that filters interfaces whose · 43333bb7
      Robert Ricci authored
      name's don't match from resolve_link() to find_best_link() - the latter
      returns only one link of each type, so it's too late to find the right
      interface by the time we get back out to resolve_link(). Also fixed
      a built-in assmption about the 'direction' that physical links go in.
      The old code (explicity) assumed that links to from node to switch - now
      we flip around our comparison if the directions of the links do not
      match.
      
      This was a bugger, even though it didn't involve much code, since the
      'flipping' involves a 'parity' issue - it's really easy to mess up the
      parity in several places and get it to work under *some* circumstances.
      
      As a side effect, added some more information to the plink strucutre.
      This turned out to not be necessary for the solution I finally came
      up with - it was part of an earlier, abandoned one. But, it's probably
      good information to have around in the future.
      43333bb7
  8. 29 Mar, 2007 1 commit
  9. 25 Jan, 2006 1 commit
    • Robert Ricci's avatar
      Merge in changes from the assign-devel branch. This includes: · ed3cbc13
      Robert Ricci authored
      Ripping out crope and replacing (almost) all cropes, char*s and
      strings with fstring
      
      Beginnings of XML parser support (not built by default yet).
      
      Significant re-org of code.
      
      Should now compile with the latest gcc.
      
      Putting link information in stored solutions.
      
      Support for fixing interfaces.
      ed3cbc13
  10. 31 Jan, 2005 1 commit
  11. 19 Jan, 2005 1 commit
    • Robert Ricci's avatar
      Add support for the set-type-limit command in the ptop file. · 8eaec842
      Robert Ricci authored
      It looks like this:
      set-type-limit <type> <count>
      
      This can be placed anywhere in the ptop file.  It limits the number of
      physical nodes of a given type that an experimenter is allowed to use.
      
      For example, we may limit a user to 10 PCs, or 5 pc850s. In the latter
      case, if the experimenter had simply asked for 10 generic PCs, then we
      will try to find them some mapping of nodes that uses types of PCs
      other than pc850s.
      
      Added a precheck to tell the user up-front if they asked for more
      nodes than they are allowed to use of a given type.
      8eaec842
  12. 12 Aug, 2004 1 commit
  13. 11 Aug, 2004 1 commit
  14. 03 Jun, 2004 1 commit
    • Robert Ricci's avatar
      'port' assign to compile under gcc 3 (specifically tested with 3.3.1). · f05e1008
      Robert Ricci authored
      This mostly required messing with the STL #includes.
      
      Still builds under gcc 2.95, and won't be built with 3.3 by default
      until I've spent more time testing it.
      
      One reason for doing this is that gcc 3.3 seems to generate faster
      code from templated functions. Tests so far show that the
      gcc3-compiled binary shaves 15-30% off of assign's runtime.
      
      The other reason for doing this is forward-looking. When we end up
      getting boss running on FreeBSD 5 or a recent Linux distro, the
      compiler is likely to be from the gcc 3 branch.
      f05e1008
  15. 26 Apr, 2004 1 commit
    • Robert Ricci's avatar
      Some big changes to assign, and some related changes to assign_wrapper · 238dce73
      Robert Ricci authored
      and ptopgen.
      
      Add link typing to assign. Each virtual link is given a single type.
      Each physical link is given one or more types. A virtual link will
      only be mapped to a physical link which can satisfy its type. In both
      the top and ptop files, the link types are now mandatory, and they
      fall at the end of the mandatory link arguments.
      
      This differers from the 'regular' type system in two ways. First, a
      plink is not constrained to filling only one type at a time. If we are
      using emulated links, a plink could satisfy, say, an 'ethernet' link
      and an 'fxp' link at the same time. This seems to more naturally match
      the way we'll use link types.  Second, there are no counts assoicated
      with link types, as there are for node types. ie. a link is not an
      'ethernet:1' link, it's an 'ethernet' link. Presumably, when
      multiplexing virtual links onto a physical one, it's bandwidth that's
      the factor that limits the multiplexing.
      
      The link type is now taken into account when constructing pclasses,
      and in the mapping precheck.
      
      As a side-effect of these changes, the silly 'count' argument on the
      end of link lines in the ptop file, which was used for the fake LAN
      nodes, is no longer supported.
      
      The implementation could be a bit more efficient, but that would mean
      tossing more of the stuff we do with boost's graph library. I think
      this should happen, but today is not the day.
      
      Modify assign_wrapper and ptopgen to spit out top and ptop files in
      the new format.
      
      Changed the constant LINK_UKNOWN to LINK_UNMAPPED - the new name more
      accurately reflects the way this constant is used.
      
      Add a new '-n' flag that tells assign not to do annealing, just exit
      after the type precheck.
      
      Clarify the usage message for the -c flag.
      
      Removed some dead code for dealing with LAN nodes.
      238dce73
  16. 15 Apr, 2004 1 commit
  17. 10 Oct, 2003 1 commit
  18. 29 Sep, 2003 1 commit
  19. 15 Sep, 2003 1 commit
    • Robert Ricci's avatar
      Some fixes aimed at vnodes: · 7848e357
      Robert Ricci authored
      Don't allow intraswitch links to vnodes on switches - they'll get
      scored as direct links. Since LANs are now directly on switches, there
      were situations where we could have scored the same link as either
      direct or intraswitch, which results in two different scores. This can
      cause those 'contact calfeld' warnings, and might have caused some
      strange scoring fluxuations as assign ran.
      
      When picking a link to a switch, for emulated links, pick the least
      loaded link, not the one with the fewest users. This helps in situations
      where the link bandwidths are heterogenous.
      7848e357
  20. 11 Sep, 2003 1 commit
  21. 08 Sep, 2003 1 commit
  22. 04 Sep, 2003 1 commit
  23. 02 Sep, 2003 1 commit
  24. 18 Jul, 2003 1 commit
  25. 26 Jun, 2003 1 commit
    • Robert Ricci's avatar
      Major changes to the way assign handles LAN nodes. · 83cfa8ec
      Robert Ricci authored
      LAN nodes are no longer treated specially. Instead, I've introduced
      the idea of 'static' types (old-style types retroactively become
      'dynamic' types). While a pnode can only satisfy one dynamic type at a
      time, it can always satisfy its static types (assuming it has enough
      capacity left.) Static types are flagged by prepending them with a '*'
      in the ptop file. So, for example, you may give switches the
      '*lan:10000' type so that they can satisfy virtual LAN nodes. Of
      course, other pnodes can have this type too, so that we can get
      'trivial LANs'.
      
      Actually, removing special treatment for LANs cleans up a lot of code.
      However, it may have some negative impacts on solutions, since we're
      not as smart about where to place LAN nodes as we used to be (they get
      annealed along with everything else, and not migrated.) I haven't seen
      any evidence of this yet, however.
      
      This leaves us with a single type of special pnode, a switch.
      
      Also added a new bit of syntax in ptop files - when '*' is given as a
      the maxiumum load for a type, the node is allowed to take on an
      infinite (well, actually, just a really big number of) vnodes of that
      type.
      
      ptopgen was modified to always report switches as being capable of
      hosting LANs, and assign_wrapper now understands direct links to LANs,
      which is what we get when the LAN is hosted directly on a switch.
      
      Fixed a bug in scoring direct links, in which the penatly was being
      added once when a direct link was mapped, but subtracted only once
      when it was freed.
      
      Added a '-T' option for doing simple self-testing. When adding a node
      to the solution, assign records the score, adds the node, removes it
      again, and checks to make sure that the resulting score is the same as
      the original score. The usefulness of this feature in debugging
      scoring problems cannot be understated...
      83cfa8ec
  26. 20 Jun, 2003 1 commit
  27. 28 May, 2003 1 commit
    • Robert Ricci's avatar
      Added the TRIVIAL_LINK_BW option, which allows, in the ptop file, · 5c67bf1f
      Robert Ricci authored
      specification of how much bandwidth can be used on the node for
      trivial links. Clearly, there will be some limit to loopback
      transfers, and this makes assign aware of it.
      
      While I was in there, cleaned up and commented some of the code I was
      working on.
      
      Also fixed a bug with the type pre-check and emulated links that are
      trivial_ok - we can't add these into the total for a vnode, because
      they could end up being satisified with trivial links.
      5c67bf1f
  28. 18 Apr, 2003 1 commit
  29. 17 Apr, 2003 1 commit
    • Robert Ricci's avatar
      Several changes to assign: · 1003657e
      Robert Ricci authored
      Add features and desires to the PER_VNODE_TT restrictions. For
      desires, we can tell the user which ones can't be satisfied, but for
      features, we don't even try to figure out which one(s) keep us from
      mapping. From the assign_todo file, this is:
      9.   add features/desires to PER_VNODE_TT restrictions
      
      Add a new -P switch, when PER_VNODE_TT is in use. This casues it to
      prune out pclasses that no vnode can map to - this can lead to _huge_
      time savings, particularly since we put things like wide-area nodes
      into the ptop file. I've seen a 98% reduction in time when using both
      -p and -P! But, it's not the default yet, because I need to do more
      testing to make sure that this isn't hurting solution quality
      significantly.  todo item:
      8.   prune pclasses when using PER_VNODE_TT
      
      Standardize the exit values from assign:
      On success, returns 0
      On failures that are not retryable (ie. this top can never be mapped
          to this ptop), returns 2
      If SA fails to find a solution (ie., we might consider retrying),
          returns 1
      
      Fix a bug that has annoyed me for a very, very long time - if the
      input files don't exist, exit instead of hanging forever!
      
      Make the weight at which a feature/desire is considered 'hard' (ie. it
      generates a violation if unsatisifed or undesired) a variable, so that
      we'll be able to change it from 1.0 if we want.
      
      Put some more messages that should appear inline in the mail to stderr
      instead of stdout.
      1003657e
  30. 16 Apr, 2003 1 commit
    • Robert Ricci's avatar
      Fix PER_VNODE_TT to work with vclasses and emulated links. Now, we can turn it · 690ec56d
      Robert Ricci authored
      on in production!
      
      PER_VNODE_TT handles emulated links by simply adding up the total bandwidth
      consumed by a vnode, and the total bandwidth available on each pnode. Of
      course, this can lead to false positives (knapsack problem), but that's okay,
      because it just means we won't bail up front - we'll have to do the full
      annealing pass before we decide it's unmappable.
      
      PER_VNODE_TT now also tries to figure out why a vnode is not mappable - if
      there are _no_ pclasses that match one of the restrictions, it will print out
      something like:
        *** No possible mapping for nodeA
            Too many links!
        *** No possible mapping for nodeB
            Too much bandwidth on emulated links!
      
      This completes the following two items from assign_todo.txt:
      
      6.   fix PER_VNODE_TT and vclasses
      7.   fix PER_VNODE_TT and emulated vlinks
      690ec56d
  31. 15 Apr, 2003 1 commit
  32. 25 Mar, 2003 1 commit
  33. 20 Mar, 2003 1 commit
    • Robert Ricci's avatar
      Two changes: · 4c25a593
      Robert Ricci authored
      First, don't select a plink for an emulated link that would cause us
      to go over bandwidth.
      
      Second, make FIX_PLINK_ENDPOINTS the default, and add a #define that
      makes it the default (instead of having to specify it on each plink
      line.)
      4c25a593
  34. 10 Mar, 2003 1 commit
  35. 05 Mar, 2003 1 commit
  36. 10 Feb, 2003 1 commit
  37. 04 Feb, 2003 1 commit
  38. 10 Jan, 2003 1 commit
  39. 03 Jul, 2002 1 commit
  40. 29 May, 2002 1 commit