Skip to content
  • Mike Hibler's avatar
    Commit of USENIX driven improvements: · 2ff95cee
    Mike Hibler authored
    1. Client: add "NAK avoidance."  We track our (and others, via snooping) block
       requests and avoid making re-requests unless it has been "long enough."
    
    2. Server: more aggressive merging of requests in the work queue.  For every
       new request, look for any overlap with an existing entry.
    
    3. Server: from Leigh: first cut at dynamic rate adjustment.  Can be enabled
       with -D option.
    
    4. Both: change a lot of the magic constants into runtime variables so that
       they can be adjusted on the command line or via the event interface (see
       below).
    
    5. Add code to do basic validatation of incoming packets.
    
    6. Client: randomization of block request order is now optional.
    
    7. Client: startup delay is optional and specified via a parameter N which
       says "randomly delay between 0 and N seconds before attempting to join."
    
    8. Both: add a new LEAVE message which reports back all the client stats to
       the server (which logs them).
    
    9. Both: attempt to comment some of the magic values in decls.h.
    
    10. Both: add cheezy hack to fake packet loss.  Disabled by default, see
       the GNUmakefile.  This code is coming out right after I archive it with
       this commit.
    
    11. Add tracing code.  Frisbee server/client will record a number of
       interesting events in a memory buffer and dump them at the end.  Not
       compiled in by default, see the GNUmakefile (NEVENTS) for turning this on.
    
    12. Not to be confused with the events above, also added testbed event system
       code so that frisbee clients can be remotely controlled.  This is a hack
       for measurement purposes (it requires a special rc.frisbee in the frisbee
       MFS).  Allows changing of all sorts of parameters as well as implementing
       a crude form of identification allowing you to start only a subset of
       clients.  Interface is via tevc with commands like:
    	tevc -e testbed,frisbee now frisbee start maxclients=5 readahead=5
    	tevc -e testbed,frisbee now frisbee stop exitstatus=42
       Again, this is not compiled in by default as it makes the client about
       4x bigger.  See the GNUmakefile for turning it on.
    2ff95cee