Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
I2P support within BiglyBT is via the 'I2P Helper' plugin - it will automatically be installed under a number of circumstances when needed - for manual installation see http://plugins.biglybt.com/
Table of Contents
Downloading over I2P will be slower than over the public internet for fairly obvious reasons - connections are routed through various peers to provide anonymity/privacy - these other peers forward the network traffic to other peers. If you have, say, 2 intermediate peers between the start and end of the overall connection, every byte sent will require the network to transport three bytes overall (initial peer->first intermediate; first intermediate->second intermediate; second intermediate->final peer). Also connection establishment is more complex and obviously connection latencies are much higher than direct connections over the internet.
There are also overheads associated with running the I2P network itself so you will see some of your bandwidth being used for this.
The default bandwidth available for I2P to use is limited - you will probably want to consider updating the limits in the plugin configuration options. There is also the option to link the I2P limits to the overall BiglyBT limits.
The bandwidth controls configurable via the plugin configuration page affect the overall I2P bandwidth usage, not that for uploading and downloading torrents (I2P has network overheads as discussed above and also to participate in the I2P network you must donate some of your bandwidth to other peer's tunnels.)
If you want to control torrent downloading/uploading limits then you can use the Speed Limit Scheduler to define 'Peer Sets' specific to I2P Peers (and non-I2P peers), and then rate limit them as required. For example, the following schedule will define two Peer Sets, one for I2P peers and one for the rest:
enabled=yes peer_set I2P=I2P peer_set NotI2P=I2P, inverse=yes
Once set up these Peer Sets will appear in the side bar and you can right-click on them to set rate limits as required.
Peer Sets support a rate limit of 'Disabled' which when set prevents all transfer of data in the specified direction (up or down). This can be used, for example, to only download data from non-I2P peers while uploading and downloading to I2P ones.
An 'eepsite' is a website that is only available through I2P and has a URL ending in '.i2p'. For example, there is a statistics website at http://stats.i2p/. If you try to browse to this using your normal internet browser it won't work - you need to tell your browser to use the I2P network to find the website, not the public internet.
BiglyBT has a SOCKS proxy that you can configure your browser to use for this purpose. Normally the SOCKS proxy is used internally and selects a random available port to listen on. If you want to use it for browsing then you should select a fixed port so you don't need to keep configuring your browser:
Next you need to configure your browser. Firefox is a good choice here as you need to be able to configure it to defer DNS resolution to the SOCKS proxy - let's assume you have gone along with this. If you are already using Firefox you could install a second 'portable' version for I2P purposes, see http://portableapps.com/apps/internet/firefox_portable
Two configuration actions are required:
- Configure remote DNS:
- Configure the SOCKS Proxy
Save the settings and restart to ensure they take effect. Then browse to http://stats.i2p/. BiglyBT will of course need to be running (and I2P started up within BiglyBT) for this to work.
If you have a subscription or search template that uses an eepsite then you can configure BiglyBT to open FireFox (as configured above) to view links (e.g. subscription result 'details' links) via Tools->Options->Interface->Display: External Browser
Select 'manual' for the browser selection and then enter/browse to the FireFox application.
You can also configure BiglyBT to use Firefox (as configured above) to display subscription/result pages externally instead of inside BiglyBT. Check the required boxes at the bottom of the External Browser configuration section. Be sure to read the accompanying text detailing the restrictions when using this feature.
By default the SOCKS server will refuse connections to non-I2P addresses - if you are concerned about anonymity then this is the desired behavior. The reason is that a malicious I2P website could return specially crafted web page that linked to a public IP address also controlled by the I2P website - if FireFox automatically loaded the link then this would allow the malicious site to correlate your I2P identity and your public IP address.
However, if all you want is a browser that allows access to .i2p websites, along with public websites, and you don't care about your identity, you can configure the SOCKS server to allow connections to non-I2P addresses via the 'Allow SOCKS server to delegate...' option shown above.
In order to increase the availability of torrents for download via I2P the plugin supports 'network mixing'. This will take well seeded torrents from the internet and make them available as decentralized torrents over I2P. The number of torrents treated in the way can be configured via the plugin's configuration options.
When adding a new torrent to BiglyBT its availability within I2P can be checked. To do this you need to
- enable the I2P network for the torrent in the torrent options:
- check the availability within I2P by hitting the 'availability' button:
NOTE: mixed torrents and I2P only torrents are handled separately within BiglyBT to prevent the correlation of mixed activity and pure I2P activity. If you add a torrent and subsequently amend its network availability (e.g. change it from pure I2P to mixed) then this will potentially reduce your privacy.
BiglyBT doesn't use Message Stream Encryption when connecting over non-public networks such as I2P although your settings will of course be respected for public network connections on a mixed network download. The reason is that the streams are already encrypted/obfuscated so another layer of encryption on top of this wastes resources to no benefit.
Rather than using the minimal I2P runtime bundled with this plugin you can configure the plugin to use a full I2P installation that you have setup yourself - see the plugin configuration to enable this. You should ensure that your I2P installation is running before starting BiglyBT as the plugin currently requires this.
The default port used by your I2P installation is 7654 so, unless you have changed this, no further configuration within BiglyBT is required.
If you are running I2P on a different host to BiglyBT then you can also configure the host address.
You will need to configure I2P bandwidth limits directly via the I2P configuration web pages.
Even if you configure BiglyBT to only use the I2P network by default (under Tools->Options->Connection: Networks) BiglyBT will automatically enable the public network on all update downloads (this includes BiglyBT core updates and plugin installations/updates). It is possible that in the future I2P based updates will be supported but until that time don't be surprised if you see this. Updates can be disabled if required via
- Tools->Options->Interface->Start: options towards the top used to disable core update checks
- Tools->Options->Plugins->Plugin Update: disable this to disable plugin updates