1. 14 May, 2002 1 commit
  2. 12 May, 2002 1 commit
  3. 11 May, 2002 1 commit
  4. 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
  5. 08 May, 2002 3 commits
  6. 30 Apr, 2002 1 commit
  7. 25 Apr, 2002 1 commit
    • Leigh B. Stoller's avatar
      Fix contributed by Brian. The general idea is to allow global · 0f774f51
      Leigh B. Stoller authored
      variables to be renamed from within a subroutine:
      
      	proc create_testnet {} {
      		set s1 [$ns node]
       	}
      
      Chris' redefined set did not allow this. This is further complicated
      by the fact that its difficult to tell whats a global variable. You
      can declare a variable global, but until its set for the first time,
      the TCL info function will not tell you its a global. We do not want
      to rename locals of course, since that would make no sense to do.
      Anyway, Brian contributed the code to fix the new set function, and I
      looked at it and did my best to understand it (I kinda do), but no way
      I can be sure! I ran it through the test suite and spot checked the DB
      state. Seems to work okay.
      0f774f51
  8. 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
  9. 23 Apr, 2002 1 commit
  10. 22 Apr, 2002 2 commits
  11. 17 Apr, 2002 1 commit
  12. 15 Apr, 2002 2 commits
    • Leigh B. Stoller's avatar
      Oops, left in a debugging printf. · 8e206eed
      Leigh B. Stoller authored
      8e206eed
    • 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
  13. 08 Apr, 2002 1 commit
  14. 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
  15. 26 Mar, 2002 2 commits
  16. 25 Mar, 2002 1 commit
  17. 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
  18. 20 Mar, 2002 1 commit
  19. 19 Mar, 2002 1 commit
  20. 16 Mar, 2002 1 commit
  21. 15 Mar, 2002 2 commits
  22. 14 Mar, 2002 1 commit
  23. 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
  24. 12 Mar, 2002 1 commit
  25. 11 Mar, 2002 2 commits
    • Leigh B. Stoller's avatar
      Add Agent/TCP and Agent/TCPSINK so that we can use Mike's new trafgen · d26d5035
      Leigh B. Stoller authored
      code in TCP mode. Simple changes. Works like this:
      
      	set tcp0 [new Agent/TCP]
      	$ns attach-agent $n2 $tcp0
      
      	set cbr1 [new Application/Traffic/CBR]
      	$cbr1 attach-agent $tcp0
      
      	set null1 [new Agent/TCPSINK]
      	$ns attach-agent $n3 $null1
      
      Note, there are no state variables supported yet.
      d26d5035
    • 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
  26. 06 Mar, 2002 1 commit
  27. 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
  28. 26 Feb, 2002 3 commits
  29. 25 Feb, 2002 2 commits