1. 25 Aug, 2006 1 commit
    • Leigh Stoller's avatar
      Add support for dynamic registration of ports on experimental nodes so · 73102ef8
      Leigh Stoller authored
      that clients and servers can avoid using hardwired ports on those
      experimental nodes. I have added the following tmcd operation:
      
      	tmcc portregister <service> [<port>]
      
      where we assume its the control network IP (from the DB), and the pid/eid
      of the node the experiment belongs to. The given port is entered into
      the port_registration table for the experiment, using the service as the
      tag. Supplying port=0 clears the registration from the table.
      
      When called like:
      
      	tmcc portregister <service>
      
      we return the registered port, or nothing.
      
      I hacked up a little C library module in libtb so that there is something
      that looks like a C interface to this:
      
       	int
       	PortRegister(char *service, int port);
      
       	int
       	PortLookup(char *service, char *hostname, int namelen, int *port);
      
      The above routines call out to tmcc of course.
      
      Lastly, I changed the sync server and client to use the new port
      registration, via the library calls above.
      
      There are other emulab services that need to be changed as well, but
      they can be done on an as needed basis.
      73102ef8
  2. 10 Aug, 2006 1 commit
    • Kirk Webb's avatar
      · e087f217
      Kirk Webb authored
      Send along the IP address of the plab node in the return string from
      the 'plabconfig' command.  We can't trust that the node will have
      a resolvable hostname (or have working DNS even..), so slap down the IP
      we have on record in the DB into a file.  This will be used by the
      event proxy, which needs to know the node's routable IP in order to
      subscripe to elvind on ops properly.
      e087f217
  3. 09 Aug, 2006 1 commit
  4. 18 Jul, 2006 1 commit
    • Leigh Stoller's avatar
      Changes necessary for moving most of the stuff in the node_types · 624a0364
      Leigh Stoller authored
      table, into a new table called node_type_attributes, which is intended
      to be a more extensible way of describing nodes.
      
      The only things left in the node_types table will be type,class and the
      various isXXX boolean flags, since we use those in numerous joins all over
      the system (ie: when discriminating amongst nodes).
      
      For the most part, all of that other stuff is rarely used, or used in
      contexts where the information is needed, but not for type descrimination.
      Still, it made for a lot of queries to change!
      
      Along the way I added a NodeType library module that represents the type
      info as a perl object. I also beefed up the existing Node module, and
      started using it in more places. I also added an Interfaces module, but I
      have not done much with that yet.
      
      I have not yet removed all the slots from the node_types table; I plan to
      run the new code for a few days and then remove the slots.
      
      Example using the new NodeType object:
      
      	use NodeType;
      
      	my $typeinfo = NodeType->Lookup($type);
      
              if ($typeinfo->control_interface(\$control_iface) ||
                  !$control_iface) {
        	    warn "No control interface for $type is defined in the DB!\n";
              }
      
      or using the Node:
      
      	use Node;
      
              my $nodeobject = Node->Lookup($node_id);
              my $imageable  = $nodeobject->NodeTypeInfo()->imageable();
      or
              my $rebootable = $nodeobject->isrebootable();
      or
              $nodeobject->NodeTypeAttribute("control_interface", \$control_iface);
      
      Lots of way to accomplish the same thing, but the main point is that the
      Node is able to override the NodeType (if it wants to), which I think is
      necessary for flexibly describing one/two of a kind things like switches, etc.
      624a0364
  5. 13 Jul, 2006 4 commits
  6. 03 Jul, 2006 1 commit
    • Mike Hibler's avatar
      Framework for supporting 802.1q tagged VLANs as a form of multiplexed link. · 3f1c15e2
      Mike Hibler authored
      Actually, most of the changes here were just to generalize the "virtual
      interface" state in the DB.  Other than the client-side scripts, there
      is very little specific here specific to tagged VLANs.
      
      In fact, you cannot specify "vlan" as a type yet as we haven't done the
      snmpit support for setting up the switches.
      
      For more info see bas:~mike/flux/doc/testbed-virtinterfaces.txt, which I
      will integrate into the knowledge base and the Emulab doc at some point.
      3f1c15e2
  7. 26 Jun, 2006 1 commit
  8. 24 May, 2006 1 commit
  9. 19 May, 2006 1 commit
  10. 18 May, 2006 1 commit
    • Kirk Webb's avatar
      · ebfdfbf7
      Kirk Webb authored
      Fixup the plabconfig command in tmcd to return immediately if the calling node
      is not a plab vserver (sliver).
      ebfdfbf7
  11. 15 May, 2006 1 commit
  12. 11 Apr, 2006 1 commit
  13. 04 Apr, 2006 1 commit
  14. 15 Mar, 2006 1 commit
  15. 08 Mar, 2006 1 commit
  16. 06 Mar, 2006 1 commit
  17. 01 Mar, 2006 1 commit
    • Kirk Webb's avatar
      · 727dbd61
      Kirk Webb authored
      Plab connectivity monitoring changes:
      
      * tmcd/tmcd.c
      
      Updated connectivity log file names to include the date, and hence automatically
      roll every 24 hours - much more friendly to the filesave, and easier to archive
      off.
      
      * tmcd/common/watchdog
      
      Undo the conversion to minutes for the rusage time period (back to seconds)
      to get the finer granularity Jay wants.  Not deployed yet.  Note that this
      means the watchdog/rusage field will specify the number of _seconds_ not
      minutes as it currently does.  I will update it's description to reflect this.
      727dbd61
  18. 27 Feb, 2006 1 commit
    • Kirk Webb's avatar
      · 16651fbf
      Kirk Webb authored
      Add call "plabeventkeys" for listing all event system keys for the
      experiments on a particular plab pnode.  Can only be called by the
      service slice.
      
      Returns tuples, one per line, for each experiment on the node like so:
      
      PID=<pid> EID=<eid> KEY=<eventsys_key>
      16651fbf
  19. 09 Feb, 2006 1 commit
  20. 06 Feb, 2006 1 commit
  21. 03 Feb, 2006 2 commits
    • Kirk Webb's avatar
      · 03299db0
      Kirk Webb authored
      Be sure to only log if it is the service sliver reporting.
      03299db0
    • Kirk Webb's avatar
      · 3ceadbff
      Kirk Webb authored
      Per Jay's request, log plab isalive events originating from the plab service
      slivers in order to track elab<->node connectivity.
      
      A timeval struct is appended to a file (one per node) inside
      /usr/testbed/log/plabisalive.  The reporting rate has been cranked up to
      once per minute.  Therefore, if all 650 plab nodes where reporting in, that
      amounts to about 10 reports/sec, or 14KB/min leading to a disk consumption
      rate of 21MB/day (617MB/mo or 7.5GB/year).  Not sure how long we are going
      to be running this.
      3ceadbff
  22. 02 Feb, 2006 1 commit
  23. 30 Jan, 2006 1 commit
    • Kirk Webb's avatar
      · 75c5845d
      Kirk Webb authored
      Add svcslice bit to plabconfig
      75c5845d
  24. 25 Jan, 2006 2 commits
    • Kirk Webb's avatar
      · 270aaffd
      Kirk Webb authored
      Reorg last tmcd checkin a bit and fix a potential problem.
      270aaffd
    • Kirk Webb's avatar
      · c6b8cf83
      Kirk Webb authored
      Changes to support reporting back the port elvind bound to in the
      management slice, and also sending this back to non-MS slivers.
      c6b8cf83
  25. 23 Jan, 2006 1 commit
  26. 30 Nov, 2005 1 commit
    • Mike Hibler's avatar
      Well, that took longer than anticipated... · 080626a9
      Mike Hibler authored
      Modify the firewall /etc/hosts setup to include unqualified control net IP
      addresses so that NS firewall rules can include the symbolic node names.
      
      Modified the tmcc firewallinfo command to return the host info and rc.firewall
      to do the setup.  Maybe should have done this by changing how the tmcc hosts
      command works for firewalls, but rc.hostnames gets run after rc.firewall and
      I didn't want to figure out if there were any dependencies.
      080626a9
  27. 03 Nov, 2005 1 commit
  28. 08 Sep, 2005 1 commit
  29. 07 Sep, 2005 1 commit
    • Mike Hibler's avatar
      Inner-elab role changes: · 88926d1c
      Mike Hibler authored
      	'boss' -> 'boss+router'
      	'ops'  -> 'ops+fs'
      	'fs'      (new role)
      	'router'  (new role)
      
      These are in preparation for allowing configurations with split ops and fs
      nodes (and sometime down the road, split boss and router nodes).
      
      This checkin is just the DB state changes along with the scripts that look
      at that state.  The Big One, which actually sets up separate nodes
      automatically, is undergoing more testing but will be Coming Soon.
      88926d1c
  30. 17 Aug, 2005 2 commits
    • Mike Hibler's avatar
      Reduce number of boottime TMCD calls: · 273f0f2c
      Mike Hibler authored
       * ipodinfo and watchdoginfo are now fullconfig commands
       * ipod setup moved later in startup to take advantage of fullconfig
       * watchdog changed to use cached info on the first call
       * move firewall setup later to take advantage of fullconfig
      Other stuff:
       * accounts/ipodinfo cache files protected 600
      
      Along with Tim's changes, this should eliminate 4 more boot time calls!
      273f0f2c
    • Timothy Stack's avatar
      b9281113
  31. 22 Jun, 2005 1 commit
    • Leigh Stoller's avatar
      Added my simplistic link tracing and monitoring. Example usage and · 7942119e
      Leigh Stoller authored
      some details can be found in the advanced tutorial that I wrote up.
      See this link:
      
      http://www.emulab.net/tutorial/docwrapper.php3?docname=advanced.html#Tracing
      
      The basic idea is that each virt_lan entry gets a couple of new slots
      describing the type of tracing that is desired.
      
        traced tinyint(1) default '0',
        trace_type enum('header','packet','monitor') NOT NULL default 'header',
        trace_expr tinytext,
        trace_snaplen int(11) NOT NULL default '0',
        trace_endnode tinyint(1) NOT NULL default '0',
      
      There is a new physical table called "traces" that is a little bit
      like the current delays table. A new tmcd command returns the trace
      configuration to the client nodes (tmcd/common/config/rc.trace).
      
      The delays table got a new boolean called "noshaping" that tells the
      delay node to bridge, but not set up any pipes. This allows us to
      capture traffic at the delay node, but without much less overhead on
      the packets.
      
      The pcapper got bloated up to do packet capture and more event stuff.
      I also had to add some mutex locking around calls into the pcap
      library and around malloc, since the current setup used linuxthreads,
      which is not compatable with the standard libc_r library. I was
      getting all kinds of memory corruption, and I am sure that if someone
      breathes on the pcapper again, it will break in some new way.
      7942119e
  32. 25 May, 2005 1 commit
    • Leigh Stoller's avatar
      Add a "nosetup" option to elabinelab experiments. In the experiments · eed85271
      Leigh Stoller authored
      table, if elabinelab_nosetup is non-zero, boss and ops setup will do
      just enough to get the nodes into a state that hopefully approximates
      what a real installation might look like before installing our stuff.
      I do install the packages cause there is no point in waiting for that
      to finish interactively.
      
      From this point, you can log into the console(s) and run the setup
      instructions verbatim, although I have not actually tried that yet.
      
      The nice thing is that if you manage to get things properly setup, it
      can function as a real elabinelab since the outer environment has been
      setup. This is quite a bit different then how we tested during the
      last release frenzy.
      
      Its not quite perfect of course, since the images are not "clean", but
      I think this is okay for testing.
      eed85271
  33. 20 May, 2005 1 commit
  34. 16 May, 2005 1 commit
    • Leigh Stoller's avatar
      Add support for specifying the CVS tag to use when getting the source code · f1863cfd
      Leigh Stoller authored
      for the inner elab.
      
      	tb-set-elabinelab-cvstag dist-foo
      
      Will result in this branch getting checked out from the mirrored repository
      (updated nightly) on boss and sent back to the node, instead of the usual
      source tarball that we keep in /usr/testbed/src (still the default
      behaviour if no tag is specified. You can also do this if you like:
      
      	tb-set-elabinelab-cvstag HEAD
      
      which of course is a special tag to CVS.
      f1863cfd