All new accounts created on Gitlab now require administrator approval. If you invite any collaborators, please let Flux staff know so they can approve the accounts.

  1. 15 Sep, 2003 2 commits
  2. 11 Sep, 2003 2 commits
  3. 04 Sep, 2003 1 commit
    • Leigh B. Stoller's avatar
      Add variable netmask support to the parser. You can now do this in · 7d524fde
      Leigh B. Stoller authored
      your NS file:
      
      	tb-set-netmask $lan0  "255.255.240.0"
      	tb-set-netmask $link0 "255.255.255.248"
      	tb-set-netmask $link1 "255.255.255.240"
      
      Yep, more rope for the user to hang herself with. Notes:
      
      * You are restricted to 255.255.XXX.XXX. I did not see a reason to
        allow the user that much rope.
      
      * get_subnet can handle 10 or 192.168 addresses so that other sites
        can continue to operate without changing to 10 addresses, although
        they will still be able to change the netmask.
      
      * I've changed the handling for widearea networks to use 192.168, but
        I force the netmask to 255.255.255.248 so that we are not restricted
        to just 255 networks (not that it really matters). To avoid possible
        confusion, the user is not allowed to choose their own IPs for
        widearea networks, and I actually set them to 1.1.x.x, and then
        patch it up later. This is to avoid conflict with existing
        experiments where people may have used tb-set-ip in their NS files.
      
      * There are tmcd and staticroutes and image changes that are required
        to make this all work right!
      7d524fde
  4. 09 Aug, 2003 1 commit
    • Leigh B. Stoller's avatar
      Support for subnodes: · d053d84e
      Leigh B. Stoller authored
      	set myixp [$ns node]
      	set ixphost [$ns node]
      	tb-set-hardware $myixp ixp-bveil
      	tb-fix-node $myixp $ixphost
      	tb-set-node-os $ixphost RHL-STD
      
      This gives you a handle on the host node so you can treat it like a
      normal testbed node, including setting the OSID.
      
      There are associated assign_wrapper changes, but I won't check those
      in till I get back from vacation; not enough people around this coming
      week in case I screwed something up.
      d053d84e
  5. 07 Aug, 2003 1 commit
  6. 06 Aug, 2003 1 commit
    • Leigh B. Stoller's avatar
      Two new functions: · 27cc5adc
      Leigh B. Stoller authored
      * A node method to create a startup routine:
      
      	$node start-command "$mydir/batchcmd.sh >& $mydir/b1.log"
      
      * And some old style syntactic pepper:
      
      	tb-set-node-startcommand $nodeb1 "$mydir/batchcmd.sh >& $mydir/b1.log"
      
      The latter is intended to replace the exiting tb-set-node-startup
      function. The new implementation of the above is to use a program
      object that starts at time 0.
      27cc5adc
  7. 05 Aug, 2003 1 commit
    • Leigh B. Stoller's avatar
      The rest of the sync server additions: · 212cc781
      Leigh B. Stoller authored
      * Parser: Added new tb command to set the name of the sync server:
      
      	tb-set-sync-server <node>
      
        This initializes the sync_server slot of the experiment entry to the
        *vname* of the node that should run the sync server for that
        experiment. In other words, the sync server is per-experiment, runs
        on a node in the experiment, and the user gets to chose which node
        it runs on.
      
      * tmcd and client side setup. Added new syncserver command which
        returns the name of the syncserver and whether the requesting node
        is the lucky one to run the daemon:
      
          SYNCSERVER SERVER='nodeG.syncserver.testbed.emulab.net' ISSERVER=1
      
        The name of the syncserver is written to /var/emulab/boot/syncserver
        on the nodes so that clients can easily figure out where the server
        is.
      
        Aside: The ready bits are now ignored (no DB accesses are made) for
        virtual nodes; they are forced to use the new sync server.
      
      * New os/syncd directory containing the daemon and the client. The
        daemon is pretty simple. It waits for TCP (and UDP, although that
        path is not complete yet) connections, and reads in a little
        structure that gives the name of the "barrier" to wait for, and an
        optional count of clients in the group (this would be used by the
        "master" who initializes barriers for clients). The socket is saved
        (no reply is made, so the client is blocked) until the count reaches
        zero. Then all clients are released by writting back to the
        sockets, and the sockets are closed. Obviously, the number of
        clients is limited by the numbed of FDs (open sockets), hence the
        need for a UDP variant, but that will take more work.
      
        The client has a simple command line interface:
      
          usage: emulab-sync [options]
          -n <name>         Optional barrier name; must be less than 64 bytes long
          -d                Turn on debugging
          -s server         Specify a sync server to connect to
          -p portnum        Specify a port number to connect to
          -i count          Initialize named barrier to count waiters
          -u                Use UDP instead of TCP
      
          The client figures out the server by looking for the file created
          above by libsetup (/var/emulab/boot/syncserver). If you do not
          specify a barrier "name", it uses an internal default. Yes, the
          server can handle multiple barriers (differently named of course)
          at once (non-overlapping clients obviously).
      
          Clients can wait before a barrier in "initialized." The count on
          the barrier just goes negative until someone initializes the
          barrier using the -i option, which increments the count by the
          count. Therefore, the master does not have to arrange to get there
          "first." As an example, consider a master and one client:
      
      	nodeA> /usr/local/etc/emulab/emulab-sync -n mybarrier
      	nodeB> /usr/local/etc/emulab/emulab-sync -n mybarrier -i 1
      
          Node A waits until Node B initializes the barrier (gives it a
          count).  The count is the number of *waiters*, not including the
          master. The master is also blocked until all of the waiters have
          checked in.
      
          I have not made an provision for timeouts or crashed clients. Lets
          see how it goes.
      212cc781
  8. 30 Jul, 2003 1 commit
  9. 10 Jul, 2003 1 commit
    • Leigh B. Stoller's avatar
      Two sets of minor changes. · 7d0f59e6
      Leigh B. Stoller authored
      * In the parser, make -n (impotent) and -a (anonymous) more
        independent. Used to be that -n required -a, but that makes the
        preparse less useful, since it cannot catch project related errors
        (like bad osids, or node type permissions), and so the user does not
        get that until the email message later. Thats so annoying, even Mike
        whined about it.
      
        Note that impotent mode is sorta misnamed now, since the parse never
        operates on the DB. Rather, impotent mode now skips doing the XML
        output phase (still aptly named updateDB!).
      
      * Add -p (pass) option. I added this for my script that was parsing
        all the old NS files to get renderings. In this case, I do not want
        -n or -a; I want to upload the results into the DB, but the project
        related checks are obviously going to fail since I was doing it
        inside the testbed project. So, -p turns on some of the anon checks,
        and later might be used to turn certain features that are no longer
        supported, since all we really care about is the toplology (some NS
        files failed on old features and syntax).
      
      Upon reflection I think these three options could probably be rolled
      into just two, by cleaning up the current impotent and anonymous
      flags.
      7d0f59e6
  10. 30 Jun, 2003 1 commit
    • Leigh B. Stoller's avatar
      Make the new parser live on mini. New parser ssh'es over to ops to · 2202fc5a
      Leigh B. Stoller authored
      do the actual parse. The parser now spits out XML instead of DB
      queries, and the wrapper on boss converts that to DB insertions after
      verification. There are some makefile changes as well to install the
      new parser on ops via NFS, since otherwise the parser could
      intolerably out of date on ops!
      2202fc5a
  11. 05 Jun, 2003 1 commit
  12. 12 May, 2003 1 commit
  13. 08 Apr, 2003 2 commits
  14. 22 Mar, 2003 1 commit
    • Leigh B. Stoller's avatar
      Add three new control mechanisms to the front end to control the use · 62b4edc9
      Leigh B. Stoller authored
      of emulated and linkdelays on a per-link/lan basis (although you
      cannot make a lan emulated at this time).
      
      	tb-set-link-uselinkdelay $link0 1
      	tb-set-lan-uselinkdelay $lan0 1
      	tb-set-link-emulated $link0 1
      
      Added slots to the virt_lans table, used in assign_wrapper to control
      these features on a per link/lan basis. Note, the global options are
      still available to prefer/force linkdelays for an entire experiment.
      When setting uselinkdelays on a per link/basis, if the link would not
      otherwise be shaped, you are requesting that a linkdelay be inserted
      anyway (in otherwords, its the equiv of tb-set-forcelinkdelays on an
      individual basis).
      62b4edc9
  15. 25 Feb, 2003 1 commit
    • Leigh B. Stoller's avatar
      Add tb-set-uselinkdelays to switch between normal delay nodes and · 46155476
      Leigh B. Stoller authored
      link delays setup on the nodes.
      
      Add tb-set-forcelinkdelays to force a linkdelay (when uselinkdelays is
      on of course) to be inserted, even if the link was unshaped. This
      allows it to be controlled later, say via the event system. This is
      nice, cause in the current system an unshaped link cannot be later
      shaped.
      
      Note that these are currently require FBSD-47.
      46155476
  16. 15 Jan, 2003 1 commit
  17. 31 Dec, 2002 1 commit
  18. 18 Dec, 2002 1 commit
    • Leigh B. Stoller's avatar
      Allow slightly altered tb-fix-node syntax for creating jails on local · d564e0fb
      Leigh B. Stoller authored
      nodes. The second argument can now be an NS node instead of the name
      of a real testbed node. For example:
      
      	tb-set-hardware $node3  pc600
      	tb-set-hardware $nodev1 pcvm600
      	tb-fix-node $nodev1 $node3
      
      So, "fix" $nodev1 to $node3. The intent is that once $node3 is
      allocated by assign to a real testbed node, we can then allocate a
      virtual node on pcXX to $nodev1. I did this primarily to allow for
      easy testing of jails via my NS file, without having to hack assign
      wrapper to deeply. Note there are still hacks in assign_wrapper to
      support this, but they are not extensive.
      
      Also my old usewatunnels stuff I never checked in:
      
      	tb-set-usewatunnels 0/1
      d564e0fb
  19. 06 Nov, 2002 1 commit
    • Shashi Guruprasad's avatar
      NSE related changes: · 05bc3bd4
      Shashi Guruprasad authored
        - Fixes the routing problem
        - A new type "sim" has been created but not in the DB. node_types and
          nodes remain unchanged. This will change after we figure out how
          to represent in the DB the local multiple virtnodes in one phynode case
          The frontend tb_compat.tcl adds the sim type and ptopgen associates
          a huge number of sim nodes to all local PCs.
        - All simulated nodes go into one pc untill I finish coding the distributed
          nse case. Also, sim nodes go through assign but with an explicit
          "fix-node" directive in the top file. A random free pc is chosen using
          the avail script in assign_wrapper. If we don't fix node it, assign
          maps sim nodes to multiple phy nodes even when a valid all to one
          mapping is possible.
        - Syntax for nse:
      
         $ns make-simulated {
      
             set simnode1 [$ns node]
             set simnode2 [$ns node]
      
         }
         ...
      
         The old syntax
      
         set nsenode [$ns nsenode]
         $nsenode make-simulated {
         }
      
         is deprecated
      
        - All 38 frontend tests in the testsuite pass
      
        - A new table v2pmap has been added to handle multiple virt nodes to
          one phy node mapping. This is used in "tmcc hostnames" currently.
      
        - The phy node that is picked to run nse is loaded with a custom image
          FBSD45-NSE . This can use the default FBSD kernel if there is a mechanism
          to run at 1000HZ, have options IPFIREWALL_FORWARD and PERFMON turned on.
          The image is in the 'testbed' group. Do not delete this image.
      
        - Static routes now adds routes for the case dst == nexthop. The routing
          graph would be disconnected otherwise and I need to traverse this in
          assign_wrapper for nse. On the client side, such a route is filtered out in
          libsetup.pm
      
        - sim nodes are also correctly visualized
      05bc3bd4
  20. 28 Oct, 2002 1 commit
  21. 07 Jul, 2002 1 commit
  22. 31 May, 2002 1 commit
  23. 23 May, 2002 1 commit
  24. 22 May, 2002 1 commit
  25. 16 May, 2002 2 commits
  26. 12 May, 2002 1 commit
  27. 11 May, 2002 1 commit
  28. 23 Apr, 2002 1 commit
  29. 22 Apr, 2002 1 commit
  30. 08 Feb, 2002 1 commit
    • Leigh B. Stoller's avatar
      Big round of image/osid changes. This is the first cut (final cut?) at · a73e627e
      Leigh B. Stoller authored
      supporting autocreating and autoloading images. The imageid form now
      sports a field to specify a nodeid to create the image from; If set,
      the backend create_image script is invoked. Thats the easy part.
      Slightly harder is autoloading images based on the osid specified in
      the NS file. To support this, I have added a new DB table called
      osidtoimageid, which holds the mapping from osid/pctype to imageid.
      When users create images, they must specify what node types that image
      is good for. Obviously, the mappings have to be unique or it would be
      impossible to figure it out! Anyway, once that image mapping is
      in place and the image created, the user can specify that ID in the NS
      file. I've changed os_setup to to look for IDs that are not loaded,
      and to try and find one in the osidtoimageid. If found, it invokes
      os_load. To keep things running in parallel as much as possible,
      os_setup issues all the loads/reboots (could be more than a single set
      of loads is multiple IDs are in the NS file) at once, and waits for
      all the children to exit. I've hacked up os_load a bit to try and be
      more robust in the face of PXE failures, which still happen and are
      rather troublsesome. Need an event system!
      
      Contained in this revision are unrelated changed to make the OS and
      Image IDs per-project unique instead of globally unique, since thats a
      pain for the users. This turns out to be very messy, since underneath
      we do not want to pass around pid/ID in all the various places its
      used. Rather, I create a globally unique name and extened the OS and
      Image tables to include pid/name/ID. The user selects pid/name, and I
      create the globally unique ID. For the most part this is invisible
      throughout the system, except where we interface with the user, say in
      the web pages; the user should see his chosen name where possible, and
      the should invoke scripts (os_load, create_image, etc) using his/her
      name not the internal ID. Also, in the front end the NS file should
      use the user name not the ID. All in all, this accounted for a number
      of annoying changes and some special cases that are unavoidable.
      a73e627e
  31. 11 Jan, 2002 1 commit
  32. 08 Jan, 2002 1 commit
  33. 03 Jan, 2002 1 commit
  34. 20 Dec, 2001 1 commit
  35. 13 Dec, 2001 1 commit
  36. 19 Sep, 2001 1 commit