1. 21 Apr, 2009 1 commit
  2. 20 Apr, 2009 1 commit
  3. 17 Apr, 2009 1 commit
    • Leigh B. Stoller's avatar
      Add a "regression" mode to both the old assign_wrapper and the new · ecb66ab5
      Leigh B. Stoller authored
      mapper wrapper. In regression mode, the wrapper/mapper proceeds
      normally, creating a .vtop file, and then running assign with a fixed
      seed. If the wrapper and the mapper agree on the .vtop file, then the
      solution from assign should be identical.
      
      The wrapper/mapper then proceeds normally, reserving resources and
      making all the DB changes. Needless to say, this has to be on a
      private copy of the database, with all nodes free. Creating that DB
      was a tale in its own right.
      
      At completion, call the existing BackupPhysicalState() function that
      we use in swapmod, and write all the physical tables we have changed
      (just the rows corresponding to the experiment of course). The delete
      all that state, and free the nodes.
      
      If everything is working correctly, those physical tables should be
      identical when created by the mapper or the wrapper.
      
      Of course, its not quite there yet. I have a few things to fix up
      before diff -r produces no results.
      ecb66ab5
  4. 14 Apr, 2009 1 commit
    • Kevin Atkinson's avatar
      Implement front-end parts for backfill changes. Added the following · bca66466
      Kevin Atkinson authored
      NS commands:
        tb-set-link-backfill <link> <bw>
        tb-set-link-simplex-backfill <link> <src node> <bw>
        tb-set-lan-backfill <lan> <bw>
        tb-set-node-lan-backfill <node> <lan> <bw>
        tb-set-lan-simplex-backfill <lan> <node> <tobw> <frombw>
      for now the tbres/FBSD410-DEL-BACKFILL image needs to be used.
      bca66466
  5. 19 Mar, 2009 1 commit
  6. 03 Mar, 2009 1 commit
  7. 22 Oct, 2008 1 commit
    • Leigh B. Stoller's avatar
      Fix to previous revision. This code: · 5ceddc05
      Leigh B. Stoller authored
          my $node_type = virtnodetype($virtual);
          if (!(virtnodeisremote($virtual)
       	 && !nodetypeisdedicatedremote($node_type)));
      
      breaks things cause calling virtnodetype() without first checking to
      see if its a real vnode, places a null entry in the array, and messes
      up anyone else using the virtnodeisvnode() predicate. Instead:
      
          if (!virtnodeisvnode($virtual) ||
              !(virtnodeisremote($virtual)
      	  && !nodetypeisdedicatedremote(virtnodetype($virtual))));
      
      hopefully I got the logic that Dave was intending, correct!
      5ceddc05
  8. 10 Sep, 2008 1 commit
    • David Johnson's avatar
      Changes to handle "dedicated" remote nodes in roughly the same way we · 7d388c15
      David Johnson authored
      handle local nodes -- to assign_wrapper and ptopgen, they're pretty
      much the same.  If the "dedicated_widearea" node_type_attribute is
      set for nodes of class pcRemote, we treat remote nodes like locals.
      I stuck with using a node_type_attribute for this, but it makes fast
      queries ugly.  I believe node_type_attributes are better than adding
      yet another bit to the node_types table, but others may feel
      differently.
      7d388c15
  9. 09 Sep, 2008 1 commit
  10. 09 Jul, 2008 1 commit
    • Leigh B. Stoller's avatar
      My attempt to improve swapmod ... · 3593d9c6
      Leigh B. Stoller authored
      Previously, any error in assign wrapper would cause the experiment to
      swap out because the "DB had been modified" ... well I have isolated
      all of the changes that are made, and errors in assign_wrapper proper
      no longer do that. tbswap now restores the experiment back the way it
      was. Not that errors after assign_wrapper (like in os_setup) are still
      a problem.
      
      In addition, rather then kill off all of the vlans, leave them in
      place and then do a comparison after assign wrapper, removing obsolete
      and modified vlans only. I have made use of the obsolete vlans table
      for this by having snmpit track its changes in that table. There is a
      bunch of new code in Lan.pm for doing the comparisons.
      3593d9c6
  11. 23 Jun, 2008 1 commit
  12. 18 Apr, 2008 1 commit
    • Leigh B. Stoller's avatar
      Bug fix for a rare case; when a lan of virtual interfaces is · 2df9e0f7
      Leigh B. Stoller authored
      constructed it is possible that assign will place the "lannode" on one
      node and all the other interfaces on another node (trivial lan). This
      is dealt with by the "virtpatch" code, that according to the comments,
      "only Rob and Leigh understand." Wish that were true! Anyway, when
      this happens, NewVirtIface never gets called with an underlying
      physical interface (which signals it to set the current_speed on the
      interface), so the current_speed is left at zero. Not good. So, in
      PatchVirts (which installs the vinterfaces for that lannode), also set
      the current_speed on the underlying phys interface.
      
      This stuff is totally bizarre, certain to break some other special
      case of the hundreds of special case in assign_wrapper.
      
      Oh, the code was easy, but testing it was a pain since assign is so
      random; it only rarely splits the lan up in the above manner.
      2df9e0f7
  13. 28 Mar, 2008 1 commit
  14. 17 Mar, 2008 1 commit
  15. 31 Jan, 2008 1 commit
    • Leigh B. Stoller's avatar
      First cut at porting our jail setup to linux vservers. Most of the · 0910c65c
      Leigh B. Stoller authored
      changes are on the client side where I took mkjail and retargeted it
      to vservers (called it mkvserver.pl, clever eh?) in the linux
      directory. The real time sync was understanding how vservers work, how
      they boot how they die, how they handle signals, etc. Very interesting
      and very bizarre. Anyway, this first cut is done with the version 2.2
      vserver code which does not virtualize the network stack or even the
      loopback device, so I pretty much ignored the experimental network and
      the host routine stuff. So, in your NS file you can now do this:
      
      	set ns [new Simulator]
      	set v0 [$ns node]
      	set v1 [$ns node]
      
      	tb-set-hardware $v0 pcvm
      	tb-set-hardware $v1 pcvm
      	tb-set-node-os $v0 FC-VSERVER
      	tb-set-node-os $v1 FC-VSERVER
      
      As you can see, I am using the osid to indicate jails vs
      vservers. There are some small changes in assign_wrapper that use the
      nextosid of the osid to map to the actual osid to install on the
      hosting node. If you try to collocate a jail and a vserver assign will
      refuse, cause we use features and desires for the osids. Sweet.
      
      Oh, the ssh button in the web interface does not work yet cause the page
      assumes that local virtnodes can bind to port 22 in each vserver, but
      that will not work yet.
      0910c65c
  16. 30 Jan, 2008 1 commit
  17. 29 Jan, 2008 1 commit
  18. 14 Jan, 2008 1 commit
  19. 11 Jan, 2008 2 commits
  20. 10 Jan, 2008 2 commits
  21. 20 Dec, 2007 1 commit
  22. 22 Oct, 2007 1 commit
  23. 14 Sep, 2007 1 commit
  24. 07 Sep, 2007 2 commits
  25. 17 Aug, 2007 1 commit
    • Robert Ricci's avatar
      Improve support for link types: · c8455019
      Robert Ricci authored
      Add functions for checking for wireless and subtypes
      Get the proper link type into the top file in many places we had
        harcoded "ethernet"
      c8455019
  26. 02 Aug, 2007 1 commit
  27. 24 May, 2007 1 commit
  28. 06 Mar, 2007 1 commit
  29. 19 Sep, 2006 2 commits
  30. 18 Sep, 2006 1 commit
    • Mike Hibler's avatar
      Exclude "ipv4" protocol LANs from the "__all_lans" group. Why? Read on... · bd0fbe25
      Mike Hibler authored
      Rob added code to let you put plab nodes in a LAN (with protocol "ipv4")
      so that the LAN could be traced.
      
      Meanwhile, Leigh has been adding completion events for various event types
      and creating various combo event groups for addressing all elements of a LAN,
      all LANs, etc.
      
      For pelab we have a link "reset" event which is sent to the "__all_lans"
      event group to reset the shaping of all links/lans.  Unfortunately, plab
      nodes don't run a delay agent, so link events sent there fall on deaf ears.
      
      Ergo, the event scheduler waits for completions from all agents it send
      the "reset" to, but the plab nodes will never respond since there are no
      link agents.
      bd0fbe25
  31. 16 Sep, 2006 1 commit
  32. 14 Sep, 2006 1 commit
    • Leigh B. Stoller's avatar
      Add completion event to pcapper SNAPSHOT so that the caller (say, loghole) · 53c3944c
      Leigh B. Stoller authored
      knows when the logfiles are actually rolled.
      
      Event groups complicated things a bit. To make this work properly, we
      no longer subscribe to the link-tracemon event, but instead use a
      real event group, created by assign wrapper for all of the linktrace
      agents. So, you can know do things like this:
      
      	tevc -w -e testbed/TT now link0_tracemon snapshot
      or
      	tevc -w -e testbed/TT now __all_tracemon snapshot
      
      where __all_tracemon is a group of all tracemon agents for all links and
      lans. I plan to change loghole to use this.
      53c3944c
  33. 07 Sep, 2006 1 commit
    • Leigh B. Stoller's avatar
      Some changes to how log files are handled; this too way too long to · c01f7b3e
      Leigh B. Stoller authored
      do!
      
      The original operation was to save up every log file forever in the
      work directory, and copy that out to both the user directory and the
      info directory (long term archive). When I cleaned /proj on ops
      yesterday of all this old cruft, I recoved 17GB of disk space. Yow!
      
      So, the new operation is:
      
      * Only files that end in .log are copied to the user directory. No
        longer copying out .top, .ptop, and a couple of other logs; 99% of
        users never look at these things. We still have them available to us
        though, on boss.
      
      * At the beginning of each swap operation, clean out the work
        directory of all the old log files. These are named a variety of
        ways, so I use some pattern patches to do this.
      
      * Jigger the names a little so that we do not name things in the form
        "$$.log", to avoid copying out different named files to the user
        directory each time; instead link the .log file to the real output
        file so that it gets overwritten each time, while still getting the
        per-swap files for long term storage.
      c01f7b3e
  34. 06 Sep, 2006 1 commit
    • Leigh B. Stoller's avatar
      Okay, this is a nasty little hack ... Add support for a global delays · d4881005
      Leigh B. Stoller authored
      reset. I've done this with an event group cause otherwise I was going
      to get sucked into the event system and spit out the other end. You can
      reset the delays in your experiment either from the ns file:
      
      	$ns at 100 "$ns reset-lans"
      
      or from the command line:
      
      	tevc -e foo/bar now all_lans reset
      
      and yes, "all_lans" is a magic token.
      
      It would be nice to support per-link or lan reset, but that is going
      to require reorganizing the delay start up scripts on the delay nodes,
      since right now a single delay agent operates for muliple links and lans.
      d4881005
  35. 16 Aug, 2006 1 commit
    • Kevin Atkinson's avatar
      - Added tbreport database schema (added three tables), storage for · 9c5d3308
      Kevin Atkinson authored
        tbreport errors & context.
      
      - Modified fatal() in swapexp, batchexp, and tbprerun, and die_noretry()
        in os_setup to pass hash parameter to tblog functions.
      
      - Added tbreport errror & context information for select errors in
        swapexp, tbswap, assign_wrapper2, snmpit_lib, snmpit, batchexp,
        assign_wrapper, os_setup, parse-ns, & tbprerun.
      
      - Added assign error parser in assign_wrapper2.
      
      - Added parse.tcl error parser in parse-ns.
      
      - Added severity constants for tbreport in libtblog_simple.
      
      - Added tbreport() function & context table mappging for reporting
        discrete error types to libtblog.
      9c5d3308
  36. 03 Aug, 2006 1 commit
    • Leigh B. Stoller's avatar
      Support for capturing the trace data that is stored in the pcal files · 4ce9c421
      Leigh B. Stoller authored
      into per-experiment databases on ops. Additional support for reconsituting
      those databases back into temporary databases on ops, for post processing.
      
      * This revision relies on the "snort" port (/usr/ports/security/snort)
        to read the pcap files and load them into a database. The schema is
        probably not ideal, but its better then nothing. See the file
        ops:/usr/local/share/examples/snort/create_mysql for the schema.
      
      * For simplicity, I have hooked into loghole, which already had all
        the code for downloading the trace data. I added some new methods to
        the XMLRPC server for loghole to use, to get the users DB password
        and the name of the per-experiment database. There is a new slot in
        the traces table that indicates that the trace should be snorted to
        its DB. In case you forgot, at the end of a run or when the instance
        is swapped out, loghole is run to download the trace data.
      
      * For reconsituting, there are lots of additions to opsdb_control and
        opsdb_control.proxy to create "temporary" databases and load them
        from a dump file that is stored in the archive. I've added a button
        to the Template Record page, inappropriately called "Analyze" since
        right now all it does is reconsitute the trace data into a DB on
        ops.
      
        Currently, the only indication of what has been done (the name of
        the DBs created on ops) is the log email that the user gets. A
        future project is tell the user this info in the web interface.
      
      * To turn on database capturing of trace data, do this in your NS
        file:
      
      	set link0 ...
      	$link0 trace
      	$link0 trace_snaplen 128
      	$link0 trace_db 1
      
         the increase in snaplen is optional, but a good idea if you want
         snort to undertand more then just ip headers.
      
      * Also some changes to the parser to allow plain experiments to take
        advantage of all this stuff. To simple get yourself a per-experiment
        DB, put this in your NS file:
      
      	tb-set-dpdb 1
      
        however, anytime you turn trace_db on for a link or lan, you
        automatically get a per-experiment DB.
      
      * To capture the trace data to the DB, you can run loghole by hand:
      
      	loghole sync -s
      
        the -s option turns on the "post-process" phase of loghole.
      4ce9c421