1. 24 May, 2002 1 commit
  2. 16 May, 2002 1 commit
  3. 12 May, 2002 1 commit
  4. 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
  5. 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
  6. 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
  7. 26 Mar, 2002 1 commit
  8. 16 Mar, 2002 1 commit
  9. 13 Mar, 2002 1 commit
    • 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
  10. 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
  11. 11 Jan, 2002 1 commit
  12. 05 Dec, 2001 1 commit
    • Leigh B. Stoller's avatar
      Minor changes to convert delays from ints to floats in the DB. Chris · cab46455
      Leigh B. Stoller authored
      did the lanlink change. assign_wrapper does not really need any
      changes at all, but I dropped a comment in. The only real change is
      needed in the client side to convert a floating point from tmcd, into
      an int to give to ipfw. Rather cheesy too, given that Perl does not
      have a real conversion function (int() truncates).
      cab46455
  13. 13 Jul, 2001 1 commit
  14. 20 Jun, 2001 1 commit