1. 02 Oct, 2003 3 commits
  2. 26 Sep, 2003 2 commits
    • Robert Ricci's avatar
      New for subnodes: the host of a subnode now automatically gets a · 4e11b844
      Robert Ricci authored
      desire for 'hosts-<type>', where <type> is the type of its child node.
      This helps assign, because it can now limit the number of places to
      try assigning the host, and it means that we can give the hosts this
      feature, so that they don't get used for other purposes. For example,
      we can give the IXP-hosting nodes the feature 'hosts-ixp-bv' with
      weight 1, and they will never get used for anything but IXP hosting.
      
      This means that the node_type_features (or just node_features) table
      must now have hosts-<type> entires to work correctly.
      4e11b844
    • Robert Ricci's avatar
      Support for vnode desires in the frontend. In an NS file, you can now · 2a23edce
      Robert Ricci authored
      put:
      $node add-desire desire weight
      
      This will end up in the virt_node_desires table. assign_wrapper now
      puts the desires from this table into the top file.
      2a23edce
  3. 18 Sep, 2003 1 commit
  4. 17 Sep, 2003 1 commit
  5. 15 Sep, 2003 2 commits
  6. 11 Sep, 2003 3 commits
  7. 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
  8. 12 Aug, 2003 1 commit
  9. 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
  10. 07 Aug, 2003 1 commit
  11. 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
  12. 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
  13. 01 Aug, 2003 1 commit
  14. 30 Jul, 2003 1 commit
  15. 14 Jul, 2003 1 commit
  16. 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
  17. 03 Jul, 2003 1 commit
  18. 02 Jul, 2003 2 commits
  19. 01 Jul, 2003 1 commit
  20. 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
  21. 25 Jun, 2003 1 commit
    • Shashi Guruprasad's avatar
      Fixed the traffic generator TCL statement ordering problem. · f4c667ea
      Shashi Guruprasad authored
      Now, an agent connect statement can come before application attach-agent
      which complies with NS. In addition, the order of
      "$ns attach-agent <node> <agent>" and "$ns connect <agent1> <agent2>"
      can by anything now. Reversing the order in NS causes problems for this though.
      However, in emulab's case, we don't need that order. Most of these checks
      are now moved to updatedb reducing some clutter in traffic.tcl
      
      One thing that NS supports and it would be difficult for us is the order
      of application attach-agent and "$ns at" statements. In NS, its ok to
      flip the order. In emulab, its still not. Thats coz "$ns at" statements
      need to know what vnode is the event going to. Of course, this can be
      fixed by making "$ns at" storing the eventstring as is and only parsing
      during the updatedb/$ns run phase. Seems like its not worth changing now.
      f4c667ea
  22. 19 Jun, 2003 1 commit
  23. 18 Jun, 2003 1 commit
  24. 06 Jun, 2003 1 commit
  25. 05 Jun, 2003 3 commits
  26. 12 May, 2003 1 commit
  27. 01 May, 2003 2 commits
    • Leigh B. Stoller's avatar
      Add "terminate" as alias for halt. · 366322fd
      Leigh B. Stoller authored
      366322fd
    • Leigh B. Stoller's avatar
      Add the long desired halt/swap event directives. You can now put this · 5116cd33
      Leigh B. Stoller authored
      in your NS file:
      
      	$ns at 2000.0 "$ns halt"
      or
      	$ns at 2000.0 "$ns swapout"
      
      The first causes the experiment to terminate, the later causes it to
      swap out. I know some wiseass is going to ask for a swapin event!
      You can also send these events from tevc:
      
      	tevc -e testbed/stopme now ns halt
      or
      	tevc -e testbed/stopme now ns swapout
      
      Does it need to be said that this is insecure? That we could get swap
      wars going on as people try to get nodes for their experiments by
      swapping out someone else? Well, if that happens we will apply the big
      hammer and squash their nuts.
      
      Details: I added an SIMULATOR "agent", and HALT/SWAPOUT event types in
      the usual places. In the event scheduler, SIMULATOR events are treated
      specially (not actually sent anywhere), but handled internally. Very
      convenient, cause the scheduler runs as the person who swapped the
      experiment in, and so I just run either swapexp or endexp, right from
      the scheduler. At some point we need to give the permission issue some
      thought.
      5116cd33
  28. 30 Apr, 2003 1 commit
  29. 29 Apr, 2003 1 commit
  30. 21 Apr, 2003 1 commit