- EMule
Infobox Software
name = eMule
caption = eMule 0.49a
collapsible =
author = Merkur
developer = [http://www.emule-project.net/home/perl/general.cgi?l=1&rm=team eMule-Team]
released =
latest release version = 0.49b
latest release date = release date and age|2008|08|01
latest preview version =
latest preview date =
frequently updated =
programming language =
operating system =Microsoft Windows
platform =
size =
language = Multilingual (52)
status = Current/Active
genre =Peer-to-peer file sharing
license = Free (GNU General Public License )
website = [http://www.emule-project.net/ www.emule-project.net]eMule is a free
peer-to-peer file sharing application forMicrosoft Windows . Started in May 2002 as an alternative toeDonkey2000 , eMule now connects to both theeDonkey network and theKad network . The distinguishing features of eMule are the direct exchange of sources between client nodes, fast recovery of corrupted downloads, and the use of a credit system to reward frequent uploaders. Furthermore, eMule transmits data inzlib -compressed form to save bandwidth.eMule is coded in
Microsoft Visual C++ using theMicrosoft Foundation Classes . Since July 2002 eMule has beenfree software , released under theGNU General Public License ; its popularity has led to eMule's codebase being used as the basis of aLinux -specific client,xMule , and a multiplatform client,aMule , along with the release of many eMule "mods" (modifications of the original eMule) on the Internet.History
The eMule project was started on
May 13 ,2002 by s (also known asMerkur ) who was dissatisfied with the originaleDonkey2000 client. Over time more developers joined the effort. The source was first released at version 0.02 and published onSourceForge onJuly 6 ,2002 .eMule was first released as a binary on
August 4 ,2002 at version 0.05a. The 'Credit System' was implemented for the first time onSeptember 14 ,2002 in version 0.19a. The eMule project website started up onDecember 8 ,2002 . Since its inception, eMule has been downloaded over 420 million times as ofAugust 5 ,2008 making it by far the most downloaded project onSourceForge . [ [http://sourceforge.net/top/topalltime.php?type=downloads sourceforge.net] ]Current versions (v0.40+) of eMule have added support for the
Kad network . This network has an implementation of theKademlia protocol, which does not rely on central servers as theeDonkey network does, but is an implementation of adistributed hash table .Also added in recent versions were the ability to search using
unicode , allowing for searches for files in non-Latin alphabets, and the ability to search servers for files with complete sources of unfinished files on theeDonkey network .In new versions, a "Bad source list" was added. The application adds an
IP address to this list after one unsuccessful connection. After adding an IP to the "Bad source list", the application treats this IP as a "dead" IP. Unavailable IPs are banned for a time period from 15 to 45 minutes. Some users have complained that it leads to a loss of active sources and subsequently slows download speed.Other recent additions include: the ability to run eMule from a user account with limited privileges (thus enhancing security), and intelligent corruption handling (so that a corrupted chunk does not need to be re-downloaded entirely).
The 0.46b version added the creation and management of "eMule collection" files, which contain a set of links to files intended to be downloaded as a set.
Recently, many ISPs are
bandwidth throttling default P2P ports resulting in slow performances. The 0.47b version addsprotocol obfuscation ; eMule will automatically select two ports at random in the startup wizard.eMule is now considered a stable product, and new versions are not released as often as they used to be; five to six months is now a typical time interval between releases. The latest version is 0.49b which was released in August 2008.
Basic concepts
Each file that is shared using eMule is hashed using the
MD4 algorithm. The top-level MD4 hash, file size, filename, and several secondary search attributes such as bit rate and codec are stored on eD2k servers and the serverlessKad network .Users can search for filenames in the servers/kad and are presented with the filenames and the unique identifier consisting of the top-level MD4 hash for the file and the file's size that can be added to their downloads. The client then asks the servers where the other clients are using that hash. The servers return a set of IP/ports that indicate the locations of the clients that share the file.
eMule then asks the peers for the file. eMule will then be queued until an upload slot becomes available.
When a complete chunk of 9500 kilobytes is downloaded and verified this data is also shared by the downloader, helping others to download the file as well.
It is also possible that a client knows other clients that are also sharing that same file. In that case a source exchange between the clients is made. This exchange of known peers is done directly between the peers.
Newer versions of eMule support AICH - Advanced Intelligent Corruption Handling. It is meant to make eMule's corruption handling competitive with BitTorrent.
SHA-1 hashes are computed for each 180kb sub-chunk and a whole SHA-1hash tree is formed. AICH is processed purely with peer-to-peer source exchanges. eMule requires 10 agreeing peers regarding the SHA-1 hash, so rare files generally do not benefit from AICH.Low ID
Users who cannot be reached from the outside because they are firewalled, behind a NAT device that has not been correctly
port forward ed or their IP address ends with a zero (e.g. 123.45.67.0) [ [http://forum.emule-project.net/index.php?showtopic=85127 forum.emule-project.net] How a Low ID is calculated.] get a "Low ID" from the servers. They are still able to upload and download but need the help of servers or other kad clients to be reached by other clients. Since they cannot be notified that they are in front of an upload queue, they have to poll peers if an upload slot is available. Since they cannot connect to any other Low ID clients, they see only 40%-60% [ [http://forum.emule-project.net/index.php?s=&showtopic=129931&view=findpost&p=925153 Low Id clients increasing - Official eMule-Board ] ] of the clients that a High ID can see. Their IP/ports are not exchanged between other peers, limiting their possibilities for finding sources via eMule's pure-P2P source exchange.A Low ID client also consumes a lot more data [ [http://forum.emule-project.net/index.php?s=&showtopic=65797&view=findpost&p=463727 forum.emule-project.net] lugdunummaster's technical post on direct and collateral upstream bandwidth consumption of a Low ID and a High ID client on RazorBack, in this example 20 times more overhead] more bandwidth on an eserver than a High ID client due to the lowidcallbacks. Also, a releaser or heavy uploader that uses a releaser mod such as MorphXT or Xtreme that is forced to operate on a Low ID (hotel room, job) also will find that he will have little control over his upload priorities (especially powershares) as the servers appear to limit their connection-forwarding for each client, thus turning his upload queue to a contention situation where the first to be able to get forwarding and finds an open slot gets it.
Credit system
Credits are not global, they are exchanged between two specific clients. The credit system is used to reward users contributing to the network, i.e. uploading to other clients. The strict queue system in eMule is based on the waiting time a user has spent in the queue. The credit system provides a major modifier to this waiting time by taking the upload and download between the two clients into consideration. The more a user uploads to a client the faster he advances in this client's queue. The modifiers are calculated from the amount of transferred data between the two clients. The values used can be seen in the client's details dialog. To view this information, right click on any user and choose View Details.
All Clients uploading to you are rewarded by the credit system. It does not matter if the client supports the credit system or not. Not supporting clients will grant you no credits when you upload to them. Credits are stored in the clients.met file. The unique user hash is used to identify the client. Your own credits are saved by the client who owes you the credit. This prevents faking the credits. Your own credits cannot be displayed.
The computation formula for the Official Credit System is composed of two ratios as follows [ [http://emule-project.net/home/perl/help.cgi?l=1&rm=show_topic&topic_id=134 Credit System] ] :
:
:
Both ratios are then compared and the lower one is used as the modifier. A few conditions exist:
*If the Uploaded Total is less than 1 MB, then the modifier will remain at 1.
*If the client uploads data but doesn't download any, the modifier will be fixed at 10.
*The modifier can only be between 1 and 10.An exception to this rule applies only when a peer is assigned a "Friend Slot" after being added to the client's Friends list. This automatically assigns a reserved upload slot for that peer so that he/she can begin downloading regardless of the Credit rating. Only one Friend Slot can be reserved so as to prevent any form of abuse such as upload discrimination [ [http://www.emule-project.net/home/perl/help.cgi?l=1&topic_id=141&rm=show_topic eMule-Project.net - Official eMule Homepage. Downloads, Help, Docu, News ] ] .
emule compared to other p2p networks
One of the advantages of eMule is a large user base, currently averaging 3 to 5 million [http://edk.peerates.net/peerates/index.php?husr=1&v=e&lang=0 extrapolated number of users] , which makes it excellent for finding rare content. It is said to be the most complete implementation of the eD2k protocol and its extensions. However the transfer speed is generally slower than torrent, but faster than anonymous networks. eMule supports AICH, making its corruption handling competitive with BitTorrent. eMule also supports source exchanges, allowing it to substantially reduce the loads on the servers and Kad. With a High ID and well-sourced downloads pre-acquired by server and/or Kad, eMule is able to sustain the peer sources on these files independent longer after disconnection from eD2k and Kad.
eMule mods
As a popular open source program, eMule has many variants, usually called mods. Some mods started as forks from official eMule versions, and then continued to develop independently rather than modifying newer official versions. An example of this type of mod is
eMule Plus . Since eMule Plus forked off before the release of v0.30, the first official version to include Kad, eMule Plus does not support this feature. Other mods follow official eMule releases and make their own releases based on each new release of the official version. Since mods are required to be shared publicly by the GNU General Public License, useful features created by mod developers can be incorporated into an official version.ee also
*
eDonkey network
*Kad network
*Comparison of eDonkey software
*Comparison of file sharing applications References
External links
* [http://www.emule-project.net/ eMule project] Official site
* [http://sourceforge.net/projects/emule eMule on SourceForge] (SourceForge ) Contains archives of current and past versions of eMule
* [http://www.cs.huji.ac.il/labs/danss/p2p/resources/emule.pdf eMule Protocol Specification] by Danny Bickson and Yoram Kulbak fromHebrew University of Jerusalem
Wikimedia Foundation. 2010.