This page describes the standard plugins of Azureus. Especially the new ones are not documented yet, so please contribute if you know anything about them.
If you are looking for implementation specific details of the DDB, you may want to read the DHT article.
What does it do?
The Distributed Database (DDB) feature of Azureus provides a facility for key-based, distributed storage of small amounts of arbitrary (meta)data. With the DHT it creates a P2P overlay network that is completely serverless, fully scalable and reasonably fast. Its decentralized character makes it somewhat immune to censorship and central regulation, although it does not provide anonymity.
The DDB basically supports 2 operations: that is, you store key -> value pairs in it, but you don't know where it will be stored, and the peers hosting those do not really do anything with those values, they simply store it. Every peer can store either 1 value, or a list of values at a given key, where the key (which itself is passed to the DHT) is created by performing a SHA-1 hash function on the key that is passed from the next higher abstraction layer, the application. For the same key, all peers can store 1 value which won't override the other peers value in case there are other peers storing values under the same key.
A removal of a value is implemented through a zero-sized store.
The second operation is the retrieval of stored values, when you query that key from the DHT you'll get all data that was stored under this certain key, thus you'll get the stores from other peers too. If that is not desired for a certain application the storer's ID can be mangled into the storage key and thus it will become very unlikely to have the same hash value as any other store.
The DDB needs an open/forwarded UDP port which is the same as the TCP listening port under Tools -> Options -> Connection unless otherwise specified in the Plugin configuration.
If you've somehow lost the connection to the DDB but it was working in the past and you're sure the port is forwarded correctly you can reseed the DDB by following those instructions:
- go to Tool -> Options -> Plugins -> Distributed DB
- hit the reseed button and wait a minute, if the usercount goes up (300.000+) and the Status indicator on the bottom is green everything is fine
- if not, then you can specify the IP and Port of any DDB node (Azureus peer) or dht.aelitis.com and 6881 (dht6.azureusplatform.com for IPv6 -- March 2010: Down until we can find a replacement IPv6 server.)
- hit the reseed button again and wait
If that procedure still fails the Port isn't unfirewalled/forwarded correctly.
What does it do?
At the moment the Distributed Tracker is the only core plugin that makes use of the DDB. It can register a torrent under it current hash as key (on the DHT level it is the SHA-1 of the info-hash and not the info-hash itself) and the external IP address and Port number on the DDB. Other peers can look up those addresses and initiate a peer-peer connection, thus it's operating like a normal tracker.
Please note that it is sufficient to locate a handful of valid peers through the Distributed Tracker since through PEX Azureus is able to locate other users without putting additional load on the DDB.
- given the case that a tracker is down the Distributed Tracker will automatically register the torrent on the DDB to provide a fallback for Azureus peers
- the Magnet Link implementation uses those entries to locate peers that can provide the .torrent file.
- Azureus can create decentralized torrents that don't require a tracker and thus don't have a single point of failure. The downside is that currently no other Client is able to connect to those torrents
- Virtual torrents (i.e. for the ChatPlugin) to provide a mean of fast data transport for arbitrary messages through the Azureus messaging protocol for many peers
Azureus users can switch it from the fallback only to always use behavior by disabling the check-box under Tools -> Options -> Plugins -> Distributed Tracker, which will enable other peers to locate the torrent through magnet links. But please be aware that that puts additional load on the DDB especially when you run many torrents at once, thus the developers propose not to use this option.
Torrent creators can explicitly prevent (even when the tracker is down) or request (instead of fallback only behavior) the use of the Distributed tracker through flags in the .torrent file.
Permanent DHT tracking
To explicitly request DHT tracking of a torrent even when its legacy tracker is up and running you can add the following dictionary entry to the .torrent file (outside the info dictionary, opposing to the private flag):
Note: Setting those flags usually has no huge benefit besides it guarantees that a Magnet Link to this torrent will work. You shouldn't use that flag when you expect the tracker to be healthy.
Note for private tracker communities (disabling DHT)
Azureus' distributed database won't interfere with the normal tracker-client communication since it's only a fall-back mechanism and doesn't kick in on healthy torrents unless explicit specified by the users. Azureus will return the uploaded/downloaded/remaining values to the tracker as usual. As long as the torrent stays private and has a unique infohash (which is not publicly available) there are no other peers that are outside the swarm than those known by the tracker.
If you want to ensure the swarm can't be compromised even if the infohash or the torrent file is leaked into public please read the page on private torrents. Please note that disabling the entire DDB usually isn't in the interest of the users since it provides a fallback-tracker for public torrents, hence it is recommended to either use the private flag (server-side measure) or disable PEX and DHT for the specific torrent through a right-click on the torrent -> advanced -> peer sources -> disable "decentralized tracking" and "supplied by another peer" (client-side measure)
Adds the capability to do webseeding.
IRC - Online Technical Support
This plugin makes the IRC protocol chat service available within Azureus. You can connect to any chat room with this IRC client and one of these can be used to get some measure of online support.
If you're familiar with IRC then you will probably know how to use this already. If not then you may be interested in how to set up IRC. This article also contains specific information on how to access the specific support channels for Azureus users and the rules for IRC.
IRC plugin allows you to view key information about your Azureus and network setup. This allows to diagnose your problem faster, and spot problems that may have otherwise gone unnoticed.
LAN Peer Finder
Searches your local area network (LAN) for a peer having data you need. If one or more such peers are found, it automatically downloads from this peer directly via LAN, resulting in a usually much higher download rate.
Thanks to some great work by Omschaub, there's a plugin that automates the Azureus CVS (Concurrent Versions System) updating process. Some of the features of this plugin include
- Automatic CVS checking and optional auto-downloading
- Optional Automatic restarting
- Automatic backup of important user information and previous CVS versions
- The ability to switch to any previously downloaded build at the click of a button
- Simple CVS build management including the ability to add comments to any particular build
- Memory usage reporting for monitoring resources between builds
Options > Plugins > UPnP
UPnP is short for Universal Plug and Play - it is a feature that works with some compatible routers to open the required ports automatically. If Azureus is crashing often, you should try to disable UPnP in the options!
Azureus needs to open a connection for the outside world, through a port in your router. Currently Azureus randomly selects a port at initial setup (in any case, do not use the port 6881 any more). Let us use port 55321.
We need to tell your router that all that arrives on port 55321 has to be directed to your machine. UPnP in Azureus can do that for you, unless:
- your router doesn't support UPnP. Some routers, even if they are compatible with UPnP, have problems with this. In that case you need to dive into your router's manual and look up port forwarding.
- someone else on your LAN is already using the port you want to use
- UPnP: Mapping 'Incoming Peer Data Port (TCP/55321)' failed
- UPnP: Mapping 'incoming peer data port (TCP/55321)' has been reserved by 192.168.0.50" - please select a different port. Choose another port in Options > Connection > Incoming TCP listen port and save.
If your ISP disconnects you every 24 hours so that you have to reconnect (like German Telekom/T-Online) you should not use UPnP but set up port forwarding yourself.
The Universal Plug and Play plugin produces various informative messages. By default these are all enabled. To disable them go to Tools > Options > Plugins and select the UPnP plugin. You can now configure the plugin as you required. To disable the popups you disable the 3 "report ..." checkboxes.
The informative messages are on by default so that users know that UPnP is in action.
Known router problems:
- ADSL 11g - early firmware versions (earlier than 2.05) don't support UPnP.
- WRT54G v4(/5?) - doesn't do UDP/TCP on same port properly - use different ports for the 'Incoming TCP Listen Port' and DDB. Also disable the UDP tracker protocol if needed. User has reported that with v5 a hard-reset of the router was needed to get things working.
- WAG354G - very slow at releasing port mappings on exit. This causes Azureus to appear to hang when quit for several minutes. Avoid this by configuring Azureus not to release on exit.
- DG834 - some earlier firmware versions have buggy UPnP implementations - try updating the firmware to see if that helps.
Reporting UPnP problems:
If you experience UPnP problems, then you should have a look at the log view for the UPnP plugin (Plugins > Log Views > UPnP). The information there will describe how Azureus has tried to set up the appropriate connections using UPnP. If you need some help understanding what the messages mean (when things aren't working), copy the text and post it to the Azureus forums.
If you are asked to get the full UPnP log, you can do this by going to the UPnP options, and enable the "Output full debug information to log" setting. Then restart Azureus - the full UPnP debug information will be printed in the UPnP log view. This setting is only available in v22.214.171.124 and later.
If you have an earlier version of Azureus which does not have this setting, then follow these steps:
- Enable logging in Azureus.
- Enable logging to file - choose to save the output somewhere that you'll remember.
- Deselect *everything* for Information, Warning and Error, *except* "plug".
- Close down Azureus.
- Delete any log file that already exists in the save file location.
- Start up Azureus.
- Wait until Azureus has reported UPnP problems.
- Take a copy of the log file saved on disk.
That will contain information about other plugins as well, but it will contain the full log information about everything the UPnP plugin has tried to do.
Read the Azureus FAQ
UPnP Media Server
As of 126.96.36.199, Azureus comes included with the UPnP Media Server plugin. By default no files will be made available via its service. However, "Azureus" may start showing up on your devices that access UPnP Media Servers.
Downloaded files can be streamed to players (both local and remote) by using the "Media Server" context menu options available in the MyTorrents view and specific download's Files view.
If publishing of content is enabled this allows UPnP Media Server players to browse and stream downloads managed by
Both files that are fully downloaded and files that are being downloaded can be streamed to players.
When downloading, the video player will start the stream and it will cause Vuze to start requesting blocks progressively so
that the user can watch while downloading.
This plugin allows you to test your network configuration. Area covered are inbound/outbound connectivity, socks/http proxies and UPnP devices. It can also run a distributed BitTorrent protocol test.
This is an infrastructure plugin to support communications between Azureus users.