- Jul 04, 2005
-
-
* Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups, rather than the IV by itself, preventing an attack that would let colluding internal adversaries tag a message to determine that they are in the same tunnel. Thanks dvorak for the catch! * Drop long inactive profiles on startup and shutdown * /configstats.jsp: web interface to pick what stats to log * Deliver more session tags to account for wider window sizes * Cache some intermediate values in our HMACSHA256 and BC's HMAC * Track the client send rate (stream.sendBps and client.sendBpsRaw) * UrlLauncher: adjust the browser selection order * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG * StreamSinkClient: add support for sending an unlimited amount of data * Migrate the tests out of the default build jars 2005-06-22 Comwiz * Migrate the core tests to junit
-
- Jun 23, 2005
-
- Jun 03, 2005
-
- May 26, 2005
-
- May 25, 2005
-
- May 10, 2005
-
- May 04, 2005
-
- May 03, 2005
-
- May 02, 2005
-
- May 01, 2005
-
-
* increased the maximum number of fragments allowed in a message from 31 to 127, reducing the maximum fragment size to 8KB and moving around some bits in the fragment info. This is not backwards compatible. * removed the old (hokey) congestion control description, replacing it with the TCP-esque algorithm implemented note: the code for the ACK bitfields and fragment info changes have not yet been implemented, so the old version of this document describes whats going on in the live net. the new bitfields / fragment info should be deployed in the next day or so (hopefully :)
-
* Cleaned up the peers page a bit more. more udp stuff: * add new config option: i2np.udp.alwaysPreferred=true to adjust the bidding so that UDP is picked first, even if a TCP connection exists * fixed the initial clock skew problem (duh) * reduced the MTU to 576 (largest nearly-universally-safe, and allows a tunnel message in 2 fragments) * handle some races @ connection establishment (thanks duck!) * if there are more ACKs than we can send in a packet, reschedule another ACK immediately
-
- Apr 30, 2005
-
-
* Reduced some SimpleTimer churn * add hooks for per-peer choking in the outbound message queue - if/when a peer reaches their cwin, no further messages will enter the 'active' pool until there are more bytes available. other messages waiting (either later on in the same priority queue, or in the queues for other priorities) may take that slot. * when we have a message acked, release the acked size to the congestion window (duh), rather than waiting for the second to expire and refill the capacity. * send packets in a volley explicitly, waiting until we can allocate the full cwin size for that message
-
- Apr 29, 2005
-
-
* Reduce the peer profile stat coallesce overhead by inlining it with the reorganize. * Limit each transport to at most one address (any transport that requires multiple entry points can include those alternatives in the address). udp stuff: * change the UDP transport's style from "udp" to "SSUv1" * keep track of each peer's skew * properly handle session reestablishment over an existing session, rather than requiring both sides to expire first
- Apr 28, 2005
-
-
* More fixes for the I2PTunnel "other" interface handling (thanks nelgin!) * Add back the code to handle bids from multiple transports (though there is still only one transport enabled by default) * Adjust the router's queueing of outbound client messages when under heavy load by running the preparatory job in the client's I2CP handler thread, thereby blocking additional outbound messages when the router is hosed. * No need to validate or persist a netDb entry if we already have it And for some udp stuff: * only bid on what we know (duh) * reduceed the queue size in the UDPSender itself, so that ACKs go through more quickly, leaving the payload messages to queue up in the outbound fragment scheduler * rather than /= 2 on congestion, /= 2/3 (still AIMD, but less drastic) * adjust the fragment selector so a wsiz throttle won't force extra volleys * mark congestion when it occurs, not after the message has been ACKed * when doing a round robin over the active messages, move on to the next after a full volley, not after each packet (causing less "fair" performance but better latency) * reduced the lock contention in the inboundMessageFragments by moving the ack and complete queues to the ACKSender and MessageReceiver respectively (each of which have their own threads) * prefer new and existing UDP sessions to new TCP sessions, but prefer existing TCP sessions to new UDP sessions
-
- Apr 27, 2005
-
- Apr 26, 2005
-
- Apr 25, 2005
-
- Apr 24, 2005
-
-
* Added a pool of PRNGs using a different synchronization technique, hopefully sufficient to work around IBM's PRNG bugs until we get our own Fortuna. * In the streaming lib, don't jack up the RTT on NACK, and have the window size bound the not-yet-ready messages to the peer, not the unacked message count (not sure yet whether this is worthwile). * Many additions to the messageHistory log. * Handle out of order tunnel fragment delivery (not an issue on the live net with TCP, but critical with UDP).
-
* Added a pool of PRNGs using a different synchronization technique, hopefully sufficient to work around IBM's PRNG bugs until we get our own Fortuna. * In the streaming lib, don't jack up the RTT on NACK, and have the window size bound the not-yet-ready messages to the peer, not the unacked message count (not sure yet whether this is worthwile). * Many additions to the messageHistory log. * Handle out of order tunnel fragment delivery (not an issue on the live net with TCP, but critical with UDP). and for udp stuff: * implemented tcp-esque rto code in the udp transport * make sure we don't ACK too many messages at once * transmit fragments in a simple (nonrandom) order so that we can more easily adjust timeouts/etc. * let the active outbound pool grow dynamically if there are outbound slots to spare * use a simple decaying bloom filter at the UDP level to drop duplicate resent packets.
-
- Apr 23, 2005
-
-
I removed those dumb platform specific makefiles. They weren't doing what they ought anyway. If there are platform specific issues, someone please tell me and I'll provide support for it here. Or patch it yourself. And this is the big "Fix the Parser" patch. It turns the sam_parse function in src/parse.c into something that actually works. Generating the argument list from an incoming SAM thingy is a bit memory churn-y; perhaps when I have time I'll replace all those strdups with structures that simply track the (start,end) indices. Oh and also I moved i2p-ping to the new system. Which required 0 change in code. All I did was fix the Makefile, and add shared library libtool support. Anyway, so enjoy folks. It's rare I'm this productive - polecat
-
- Apr 21, 2005
-
- Apr 20, 2005
-
-
-
* In the SDK, we don't actually need to block when we're sending a message as BestEffort (and these days, we're always sending BestEffort). * Pass out client messages in fewer (larger) steps. * Have the InNetMessagePool short circuit dispatch requests. * Have the message validator take into account expiration to cut down on false positives at high transfer rates. * Allow configuration of the probabalistic window size growth rate in the streaming lib's slow start and congestion avoidance phases, and default them to a more conservative value (2), rather than the previous value (1). * Reduce the ack delay in the streaming lib to 500ms * Honor choke requests in the streaming lib (only affects those getting insanely high transfer rates) * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the I2PTunnel client page (thanks maestro^!) (plus minor udp tweaks)
- Apr 18, 2005
-