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. 20 Oct, 2006 1 commit
    • Mike Hibler's avatar
      Wow, this should make me look important! · afa5e919
      Mike Hibler authored
      Two-day boondoggle to support "/scratch", an optional large, shared filesystem
      for users.  To do this, I needed to find all the instances where /proj is used
      and behave accordingly.  The boondoggle part was the decision to gather up all
      the hardwired instances of shared directory names ("/proj", "/users", etc.)
      so that they are set in a common place (via unexposed configure variables).
      This is a boondoggle because:
      
      1. I didn't change the client-side scripts.  They need a different mechanism
         (e.g., tmcd) to get the info, configure is the wrong way.
      
      2. Even if I had done #1 it is likely--no, certain--that something would
         fail if you tried to rename "/proj" to be "/mike".  These names are just
         too ingrained.
      
      3. We may not even use "/scratch" as it turns out.
      
      Note, I also didn't fix any of the .html documentation.  Anyway, it is done.
      To maintain my illusion in the future you should:
      
      1. Have perl scripts include "use libtestbed" and use the defined PROJROOT(),
         et.al. functions where possible.  If not possible, make sure they run
         through configure and use @PROJROOT_DIR@, etc.
      
      2. Use the configure method for python, C, php and other languages.
      
      3. There are perl (TBValidUserDir) and php (VALIDUSERPATH) functions which
         you should call to determine if an NS, template parameter, tarball or
         other file are in "an acceptable location."  Use these functions where
         possible.  They know about the optional "scratch" filesystem.  Note that
         the perl function is over-engineered to handles cases that don't occur
         in nature.
      afa5e919
  3. 11 Jul, 2006 1 commit
  4. 30 Aug, 2004 1 commit
    • Leigh Stoller's avatar
      The bulk of the event system changes. · 9aa6b5ca
      Leigh Stoller authored
      * The per-experiment event scheduler now runs on ops instead of boss.
        Boss still runs elvind and uses events internally, but the user part
        of the event system has moved.
      
      * Part of the guts of eventsys_control moved to new script, eventsys.proxy,
        which runs on ops and fires off the event scheduler. The only tricky part
        of this is that the scheduler runs as the user, but killing it has to be
        done as root since a different person might swap out the experiment. So,
        the proxy is a perl wrapper invoked from a root ssh from boss, which
        forks, writes the pid file into /var/run/emulab/evsched/$pid_$eid.pid,
        then flips to the user and execs the event scheduler (which is careful
        not to fork). Obviously, if the kill is done as root, the pid file has to
        be stored someplace the user is not allowed to write.
      
      * The event scheduler has been rewritten to use Tim's C++ interface to the
        sshxmlrpc server on boss. Actually, I reorg'ed the scheduler so that it
        can be built either as a mysql client, or as RPC client. Note that it can
        also be built to use the SSL version of the XMLRPC server, but that will
        not go live until I finish the server stuff up. Also some goo for dealing
        with building the scheduler with C++.
      
      * Changes to several makefiles to install the ops binaries over NFS to
        /usr/testbed/opsdir. Makes life easier, but only if boss and ops are
        running the same OS. For now, using static linking on the event scheduler
        until ops upgraded to same rev as boss.
      
      * All of the event clients got little tweaks for dealing with the new CNAME
        for the event system server (event-sever). Will need to build new images
        at some point. Old images and clients will continue to work cause of an
        inetd hack on boss that uses netcat to transparently redirect elvind
        connections to ops.
      
      * Note that eventdebug needs some explaining. In order to make the inetd
        redirect work, elvind cannot be listening on the standard port. So, the
        boss event system uses an alternate port since there are just a few
        subsystems on boss that use the server, and its easy to propogate changes
        on boss. Anyway, the default for eventdebug is to connect to the standard
        port on localhost, which means it will work as expected on ops, but will
        require -b argument on boss.
      
      * Linktest changes were slightly more involved. No longer run linktest on
        boss when called from the experiment swapin path, but ssh over to ops to
        fire it off. This is done as the user of course, and there are some
        tricks to make it possible to kill a running linktest and its ssh when
        experiment swapin is canceled (or from the command line) by forcing
        allocation of a tty. I will probably revisit this at some point, but I
        did not want to spend a bunch of time on linktest.
      
      * The upgrade path detailed in doc/UPDATING is necessarily complicated and
        bound to cause consternation at remote sites doing an upgrade.
      9aa6b5ca
  5. 16 Jun, 2004 1 commit
  6. 21 Apr, 2004 1 commit
  7. 15 Mar, 2004 1 commit
  8. 09 Jan, 2004 1 commit
    • Shashi Guruprasad's avatar
      Changes to do auto re-swap of expts with simnodes when an nse on a simhost · 375f87c1
      Shashi Guruprasad authored
      (or more than one simhost) is unable to keep up with real-time. It includes
      changes to assign_wrapper to handle swap modify for simnodes, the simple
      algorithm in nseswap that bumps up the nodeweight of simnodes being hosted
      on a simhost that reports "can't keep up with real-time" (aka nse violation),
      ptopgen and sim.tcl to prefer nodes that already have the FBSD-NSE image.
      Also, changes to other files to send out NSESWAP event.
      
      One unrelated change: We now have per-swapin .top files and assign.log
      files along with .ptop files. This helps in debugging across multiple
      swapins since files remain in the form of
      <pid>-<eid>-<process_id>.{top,ptop} and assign-<pid>-<eid>-<process_id>.log
      Also useful for archiving.
      375f87c1
  9. 06 Jan, 2004 1 commit
    • Shashi Guruprasad's avatar
      Fixed a simple but showstopper bug. This script would flush the routes · 5b8789c3
      Shashi Guruprasad authored
      in every routing table except the main before inserting new ones
      obtained from tmcc. The problem was that even the interface routes
      that were added when the interfaces were brought up are flushed.
      Unfortunately these routes weren't getting added again.
      
      The solution is to toggle the interfaces i.e. disabling and re-enabling
      them again. It has the desired effect of flushing all the routes as well.
      I'm not sure how things worked until now. In all my previous mappings
      of the testbed/nse10 straight-line topology, things mysteriously worked!
      5b8789c3
  10. 19 Dec, 2003 1 commit
  11. 15 Dec, 2003 1 commit
    • Shashi Guruprasad's avatar
      Distributed NSE changes. In other words, simulation resources are · d266bd71
      Shashi Guruprasad authored
      now mapped to more than one PC if required. The simnode_capacity
      column in the node_types table determines how many sim nodes can
      be packed on one PC. The packing factor can also be controlled via
      tb-set-colocate-factor to be smaller than simnode_capacity.
      
      - No frontend code changes. To summarize:
        $ns make-simulated {
          ...
        }
        is still the easy way to put a whole bunch of Tcl code to be
        in simulation.
        One unrelated fix in the frontend code is to fix the
        xmlencode() function which prior to this would knock off
        newlines from columns in the XML output. This affected
        nseconfigs since it is one of the few columns with embedded
        newlines. Also changed the event type and event object type
        in traffic.tcl from TRAFGEN/MODIFY to NSE/NSEEVENT.
      
      - More Tcl code in a new directory tbsetup/nseparse
        -> Runs on ops similar to the main parser. This is invoked
           from assign_wrapper in the end if there are simnodes
        -> Partitions the Tcl code into multiple Tcl specifications
           and updates the nseconfigs table via xmlconvert
        -> Comes with a lot of caveats. Arbitrary Tcl code such as user
           specified objects or procedures will not be re-generated. For
           example, if a user wanted a procedure to be included in Tcl
           code for all partitions, there is no way for code in nseparse
           to do that. Besides that, it needs to be tested more thoroughly.
      
      - xmlconvert has a new option -s. When invoked with this option,
        the experiments table is not allowed to be modified. Also,
        virtual tables are just updated (as opposed to deleting
        all rows in the first invocation before inserting new rows)
      
      - nse.patch has all the IP address related changes committed in
        iversion 1.11 + 2 other changes. 1) MTU discovery support in
        the ICMP agent 2) "$ns rlink" mechanism for sim node to real
        node links
      
      - nseinput.tcl includes several client side changes to add IP
        routes in NSE and the kernel routing table for packets crossing
        pnodes. Also made the parsing of tmcc command output more robust
        to new changes. Other client side changes in libsetup.pm and other
        scripts to run nse, are also in this commit
      
      - Besides the expected changes in assign_wrapper for simulated nodes,
        the interfaces and veth_interfaces tables are updated with
        routing table identifiers (rtabid). The tmcd changes are already
        committed. This field is used only by sim hosts on the client side.
        Of course, they can be used by jails as well if desired.
      d266bd71
  12. 16 Oct, 2003 1 commit
    • Shashi Guruprasad's avatar
      Distributed nse changes · 1630611a
      Shashi Guruprasad authored
      1) IP address based routes can now be added
         - The IP address is set on a link object
         - An "$ns rlink" is used to instantiate links
           that get cut and cross physical partitions
         - Traffic agents that are across physical
           partitions (i.e. different instances of nse)
           are connected by a new "$ns ip-connect"
           mechanism
         - A new Node instproc "add-route-to-ip" adds
           IP address based routes.
         - Changed ns multicast addressing to use 3 bits
           instead of the default 1
         - Currently, the classifier does a lookup on a
           complete 32 bit IP and if a target to route to
           is not found, uses a 24 bit IP mask. It does not
           try to match IP prefixes of all lengths. I'll add
           that later if necessary
      2) NS packets that cross partitions are encapsulated in
         IPPROTO_ENCAP IP packets.
      3) RAW IP sockets used to inject packets into the network
         now use a rtabid paramater so that packets can be
         routed according to different routing tables
      
      Tested with 2 test cases, one with UDP/CBR traffic
      and another with default NS TCP/FTP traffic. Setup was done
      manually. As I do testbed integration, there may be more changes.
      Here's the test setup:
      
         2.2    2.3   1.2      1.3   3.2      3.3
      n0 --------- n1 ----------- n2 ------------ n3
      
      n0,n1 are on one physical node and n2,n3 are on another. The n1-n2 link
      is cut.
      
      A TCP example:
      
      ---------------------physnode0---------------------
      set ns [new Simulator]
      $ns use-scheduler RealTime
      
      set n0 [$ns node]
      set n1 [$ns node]
      
      $ns duplex-link $n0 $n1 10Mb 5ms DropTail
      [$ns link $n0 $n1] set-ip 10.1.2.2
      [$ns link $n1 $n0] set-ip 10.1.2.3
      
      set rl0 [$ns rlink $n1 10.1.1.3 2Mb 40ms DropTail]
      $rl0 set-ip 10.1.1.2
      
      set tcp0 [new Agent/TCP]
      # The last parameter specifies the port
      $ns attach-agent $n0 $tcp0 20
      $ns ip-connect $tcp0 10.1.3.3 20
      set ftp0 [new Application/FTP]
      $ftp0 attach-agent $tcp0
      
      $n0 add-route-to-ip 10.1.3.3 10.1.2.3
      $n1 add-route-to-ip 10.1.3.3 10.1.1.3
      
      $ns at 1.0 "$ftp0 start"
      $ns at 10.0 "$ftp0 stop"
      -----------------end physnode0---------------------
      
      ---------------------physnode1---------------------
      set ns [new Simulator]
      $ns use-scheduler RealTime
      
      set n2 [$ns node]
      set n3 [$ns node]
      
      $ns duplex-link $n2 $n3 10Mb 5ms DropTail
      [$ns link $n2 $n3] set-ip 10.1.3.2
      [$ns link $n3 $n2] set-ip 10.1.3.3
      
      set rl1 [$ns rlink $n2 10.1.1.2 2Mb 40ms DropTail]
      $rl1 set-ip 10.1.1.3
      
      set tcpsink0 [new Agent/TCPSink]
      $ns attach-agent $n3 $tcpsink0 20
      $ns ip-connect $tcpsink0 10.1.2.2 20
      
      $n3 add-route-to-ip 10.1.2.2 10.1.3.2
      $n2 add-route-to-ip 10.1.2.2 10.1.1.2
      -----------------end physnode1---------------------
      1630611a
  13. 18 Dec, 2002 2 commits
  14. 09 Nov, 2002 1 commit
    • Shashi Guruprasad's avatar
      Updated nse.patch,tbnexthop.{cc,h} with all the recent nse changes. · fc580b5a
      Shashi Guruprasad authored
      tbnexthop.{cc,h} now contains setsockopts to install "ipfw fwd" rules.
      
      <netinet/ip_fw.h> has changed from FBSD 4.3 to 4.5 . Because boss has 4.3,
      compiling ipfw code on boss and running it on an experimental
      node doesn't work. Therefore, I now have a cvs checked in local copy of
      the 4.5 version of the file.
      
      nseinput.tcl now finds the CPU cycle speed from /var/run/dmesg.boot and
      passes the info to nse's RT scheduler which keeps track of real time
      using the TSC. The same info can be obtained by PERFMON ioctls but the
      kernel boot time measurement of the cpu cycle speed is more accurate than
      what perfmon can report
      fc580b5a
  15. 10 Jul, 2002 1 commit
  16. 19 Jun, 2002 1 commit
  17. 28 May, 2002 1 commit
  18. 27 May, 2002 1 commit
  19. 15 May, 2002 1 commit
  20. 14 May, 2002 1 commit
  21. 09 Apr, 2002 1 commit
  22. 04 Apr, 2002 1 commit
  23. 20 Mar, 2002 1 commit
  24. 19 Mar, 2002 1 commit
  25. 14 Mar, 2002 1 commit