1. 18 Jun, 2003 1 commit
  2. 05 Jun, 2003 1 commit
  3. 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
  4. 21 Apr, 2003 1 commit
  5. 18 Apr, 2003 1 commit
  6. 28 Feb, 2003 1 commit
    • Leigh B. Stoller's avatar
      Add queue objects to lan nodes. Also add a second hack class (LLink) · 7bdaf14f
      Leigh B. Stoller authored
      that allows the user to get a handle on that queue object so it
      can be changed. Add a routine (lanlink) to the sim class that operates
      much like link command (gets the hack class, which in turn is used to
      get the queue object).
      
      Note, there needs to be some work done in the event parser in sim.tcl
      to deal with lan queues (assumed to be link queues). I'll take care of
      that later.
      7bdaf14f
  7. 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
  8. 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
  9. 28 Oct, 2002 1 commit
  10. 25 Oct, 2002 1 commit
  11. 07 Jul, 2002 1 commit
  12. 31 May, 2002 1 commit
  13. 28 May, 2002 1 commit
  14. 22 May, 2002 1 commit
  15. 21 May, 2002 1 commit
  16. 16 May, 2002 2 commits
  17. 15 May, 2002 1 commit
  18. 14 May, 2002 1 commit
  19. 09 May, 2002 1 commit
    • Leigh B. Stoller's avatar
      Commit the static routing support. Invoked from tbprerun, after the · 712fe222
      Leigh B. Stoller authored
      parser runs. The staticroutes script is a wrapper for Chad's route
      solver. The network optimization is currently turned off; use -t to
      turn it on, until I know if its correct.
      
      Note that Chad gets credit for routecalc.cc; I'm just committing the
      file for him, with a couple of trivial changes that I made.
      712fe222
  20. 08 May, 2002 1 commit
    • Robert Ricci's avatar
      Add support for link costs for routing algorithm. These are specified · 6425980a
      Robert Ricci authored
      in the NS file in one of two ways:
      
      $ns cost $nodeA $nodeB 2
      or
      $link0 cost 3
      (The latter form can also be used for LANs)
      
      This information is stored in the database in the cost column of the
      virt_lans table.  It's important to note that cost data is _not_
      divided between the two sides of the link, as things like delay and
      rdelay are. Since there are no physical devices (ie.  delay nodes)
      node that this configuration needs to be split up between, doing so
      would just be unnecessary work.
      6425980a
  21. 24 Apr, 2002 1 commit
    • Leigh B. Stoller's avatar
      Add trafgen/reset event for Mike. The event only goes to the traffic · 50515097
      Leigh B. Stoller authored
      source, which is something of a problem. The ugly solution right now
      is to send reset events to both the source and sink (sink first I
      would think) if you need both sides to get it.
      
      	$ns at 1 "$null0 reset"
      	$ns at 1 "$cbr0 reset"
      
      Another option might be to internally create the second event for
      reset ...
      50515097
  22. 15 Apr, 2002 1 commit
    • Leigh B. Stoller's avatar
      Add static routing support: · d881770b
      Leigh B. Stoller authored
      	# Turn on manual routing.
      	$ns rtproto Manual
      
      	# Set manual routes
      	$nodeA add-route $nodeC $nodeB
      	$nodeC add-route $nodeA $nodeB
      
      results in this information being returned from the tmcd routing
      command:
      
      	ROUTERTYPE=manual
      	ROUTE DEST=192.168.2.3 DESTTYPE=host DESTMASK=255.255.255.0 \
      		NEXTHOP=192.168.3.2 COST=0
      
      The reason for DESTTYPE and DESTMASK is so that we can also support
      routing to links and lans, since doing it on a per host basis if not
      only hugely tedious, but plain impossible if the destination node has
      multiple links; the add-route syntax takes a node, but we need the IP
      of the relevant link in order to run the route add commands on the
      nodes. So, I've "extended" the syntax of add-route so that you can
      give it a Link or a Lan as the dest:
      
      	$nodeA add-route $link0 $nodeB
      	$nodeA add-route [$ns link $nodeB $nodeC] $nodeB
      
      In this case, the DESTTYPE=net, and the netmask is no longer ignored;
      it is used in the route add command. Currently, the mask is hardwired
      in the DB to 255.255.255.0, but by providing it in the tmcd command,
      we change it later if needed.
      
      I did not implement add-route-to-adj-node since that is not really
      useful in our context, and we definitely do not want the user to
      change the default routes on his nodes. But, its easy to add if we
      need to.
      
      The client side stuff is not done yet.
      d881770b
  23. 08 Apr, 2002 1 commit
  24. 27 Mar, 2002 1 commit
    • Leigh B. Stoller's avatar
      Some small additions to support events after Chris' queue changes. · addc8b02
      Leigh B. Stoller authored
      Queue events have a new parameter in the arg list for link events:
      
      	ARGS="PIPE=pipe0 THRESH=8"
      
      This is kinda hacky right now; I do not have time to get all the stuff
      just right. The convention is that pipe0 is the first pipe in the list
      (left to right) and pipe1 is the other. We can worry about cleanup
      later.
      addc8b02
  25. 26 Mar, 2002 1 commit
  26. 25 Mar, 2002 1 commit
  27. 22 Mar, 2002 1 commit
    • Leigh B. Stoller's avatar
      Add new NS program object. This syntax is different than I had · b9ba3398
      Leigh B. Stoller authored
      originally anticipated, but I was worried about confusion with the
      Agent/Application API that NS provides, and which is substantially
      different than this. Anyway, I added support for this syntax:
      
      	set prog0 [$ns program]
      	$prog0 set node $nodeA
      	$prog0 set command "/bin/ls -lt >& /users/stoller/logs/foo"
      
      Kinda obvious, although whats not obvious is that without events to
      start and stop them, these will never run. So, I added support for
      this:
      
      	$ns at 10 "$prog0 start"
      	$ns at 20 "$prog0 stop"
      
      You can start and stop programs as much as you like, but you cannot
      start a program that is already running; you have to stop it first.
      You can also issue these dynamically using the same api:
      
      	tevc -e testbed/Tevents now prog0 start \
      		"command=/bin/ls -lt / >& /users/stoller/logs/foo"
      	tevc -e testbed/Tevents now prog0 stop
      
      Note the quotes when using a multiword command. I also had intened to
      support a KILL command so that you could send arbitrary signals to a
      process. I added that, but I will not bother to document it yet; since
      I invoke /bin/csh to process the command line, the issue of signals is
      a little fuzzy. Sending a signal like -HUP to the parent process (the
      csh) is not really what we want to do. I think we can support this,
      but I need to poke around and see what the right way is.
      b9ba3398
  28. 20 Mar, 2002 1 commit
  29. 19 Mar, 2002 1 commit
  30. 16 Mar, 2002 1 commit
  31. 13 Mar, 2002 2 commits
    • Leigh B. Stoller's avatar
      Fix minor typo. · 6e09aa7a
      Leigh B. Stoller authored
      6e09aa7a
    • Leigh B. Stoller's avatar
      Add the ability to change RED/Queue params in events. At the same · 86d6b225
      Leigh B. Stoller authored
      time, support multiple statements in a single at statement (a personal
      miracle of TCL programming!). So, you can do this:
      
      	$ns at 40    "$queue0 set thresh_ 5 ; $queue0 set linterm_ 9"
      	$ns at 40    "$queue0 set maxthresh_ 10 ; $queue0 set q_weight_ 0.5"
      	$ns at 40    "$queue0 set queue-in-bytes_ 0"
      	$ns at 40    "$queue0 set limit_ 50"
      
      These are turned into LINK MODIFY events as such:
      
      	QUEUE-IN-BYTES=
      	LIMIT=
      	MAXTHRESH=
      	THRESH=
      	LINTERM=
      	Q_WEIGHT=
      
      At present, they are turned into independent events; my TCL ability
      falls way short of figuring that out! Easy as a perl script though!
      86d6b225
  32. 11 Mar, 2002 1 commit
    • Leigh B. Stoller's avatar
      Initial version of RED/GRED support. Chris is going to have to finish · f35ce7e3
      Leigh B. Stoller authored
      this off, but here is what I did.
      
      Parser: Allow for the following syntax
      
      	set link0  [$ns duplex-link $nodeA $nodeB 100Mb 0ms RED]
      	set queue0 [[$ns link $nodeA $nodeB] queue]
      	$queue0 set gentle_ 1
      	$queue0 set queue-in-bytes_ 0
      	$queue0 set limit_ 50
      	$queue0 set maxthresh_ 20
      	$queue0 set thresh_ 7
      	$queue0 set linterm_ 11
      	$queue0 set q_weight_ 0.004
      
          NB: This differs from the NS syntax (and is the part that Chris
          needs to fix) in that there is just a single queue object per
          duplex link, thus the parameters cannot be set asymmetrically.
          Note, the delay node *does* use a RED/GRED queue in each
          direction, but its params are the same. These TCL hacks took a
          long time for me to get right!
      
          Also note that I have no idea how this stuff relates to LANS! I
          do not allow LANS to be created with RED queues (another item for
          Chris to work on perhaps?).
      
      assign_wrapper: A horrible hack to pass the new fields added to
      virt_lans onto the delays table setup. Also another minor hack ensure
      that a delay node is added when a RED queue is used (for the case when
      no other traffic shaping is done). At the moment, the virt_lans table
      has a single set of fields, while the delays table has the double set;
      one for each direction of the pipe. Here is a listing.
      
          alter table delays add q0_limit int default 0 after lossrate0;
          alter table delays add q0_maxthresh int default 0 after q0_limit;
          alter table delays add q0_minthresh int default 0 after q0_maxthresh;
          alter table delays add q0_weight float default 0.0 after q0_minthresh;
          alter table delays add q0_linterm int default 0 after q0_weight;
          alter table delays add q0_qinbytes tinyint default 0 after q0_linterm;
          alter table delays add q0_bytes tinyint default 0 after q0_qinbytes;
          alter table delays add q0_meanpsize int default 0 after q0_bytes;
          alter table delays add q0_wait int default 0 after q0_meanpsize;
          alter table delays add q0_setbit int default 0 after q0_wait;
          alter table delays add q0_droptail int default 0 after q0_setbit;
          alter table delays add q0_red tinyint default 0 after q0_droptail;
          alter table delays add q0_gentle tinyint default 0 after q0_red;
      
      tmcd/tmcd.c: Change dodelays to pass back all of these fields (for
      both pipes; there are equiv q1 fields in the delays table). Yikes! Its
      done in a backwards compatable manner though, so existing delay nodes
      will continue to work just fine.
      
      tmcd/freebsd/liblocsetup.pm: Change the delays configuration script to
      get all these fields and do something useful with. Of course, our
      delay nodes cannot use a lot of these fields, but the information is
      sent through for the eventuality that we have more sophisticated
      delays nodes.
      
      Test Suite: Add red test dir that has the above syntax as its test.
      f35ce7e3
  33. 06 Mar, 2002 1 commit
  34. 05 Mar, 2002 1 commit
    • Leigh B. Stoller's avatar
      node.tcl: Run agent-attach through the node so that we can record · deb7b404
      Leigh B. Stoller authored
      which agents are attached to which node, so that we can assign
      portnumbers to them. Also add code to updating the DB with these
      agents (virt_trafgens).
      
      sim.tcl: Get rid of $pid_$eid_events (per experiment events table),
      and replace with global eventlist table. Revisit this later, since it
      was causing problems and we do not really have a problem right now.
      Maybe later.
      
      traffic.tcl: Add virt_trafgens DB table update code. Get rid of oskit
      based traffic generators and replace with FreeBSD nodes, which will
      boot up and check if they are traffic gen source. Add get_params call,
      called by the event code im sim.tcl to get the current params for the
      START event.
      deb7b404
  35. 26 Feb, 2002 2 commits
  36. 25 Feb, 2002 1 commit