What makes I2Speed WiFi-friendly?


As you may already know, I2P uses two transports, NTCP and SSU, that rely on the internet protocols TCP and UDP respectively. TCP is designed to handle packet loss transparently to the application developer, for UDP this is left to the application itself. I2P models UDP data transmission after TCP since the beginning.

Here we get into trouble when we or someone else routing our tunnels runs on a WiFi network. In WiFi networks packet loss is a frequent condition, ranging from 2% upward to really high numbers on crowded networks. However TCP was designed for fixed networks and takes packet loss as a sign of "network congestion", reducing transfer speeds and retransmitting data. Decades of work have gone into "TCP congestion control", but the underlying assumption of a fixed network
now turned partially false.

Lots of academic research have gone into make TCP more compatible with WiFi, but a switch to a new TCP will be more painful than introducing IPv6, if it ever will happen. Protocols like HTSP today drop less important data when their TCP connection is getting slower, which is no option for I2P. I2Speed uses a non-aggressive approach to transmit UDP data in parallel even if there is some packet loss, drastically increasing transfer speed. It is even possible to run a router with TCP completely disabled without noticing any difference.

You as a user benefit even when connected to a fixed network because your I2P peers may sit on WiFi. Since I2P uses "introducers" over UDP in firewalled scenarios and handles most traffic over UDP during the first hours after startup, roaming users on WiFi-laptops will see the highest benefit. Of course I2Speed is 100% compatible with the existing I2P installations and I2P peers.

Also I2Speed will do a good job pumping UDP data through overloaded network equipment, which you should notice as an improvement. However do not overload your own internet gateway! Things will go worse otherwise.

So give us a try: http://i2speed.i2p/i2pupdate.zip

Something to watch out for: we used a quick hack to the CWND column on /peers. First item is current send window normalized to 1,000 ms, second item current messages in transit (unchanged), third item messages waiting on the outbound queue, fourth column messages currently being retransmitted.

<-- Back