-
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