100 likes | 133 Views
eMule behind the scenes. Overview. Extends the eDonkey protocol File sharing network Several hundreds of eMule servers Millions of eMule clients Each server is an independent centralized indexing service and does not store any files. eMule Client.
E N D
Overview • Extends the eDonkey protocol • File sharing network • Several hundreds of eMule servers • Millions of eMule clients • Each server is an independent centralized indexing service and does not store any files
eMule Client • Preconfigured with a list of servers and a list of shared files • Uses a single TCP connection for logging into the network • Uses several TCP connections to upload/ download files to/from other clients
Client to Server Connection • Upon startup the client connects using TCP a single eMule server • Receives a client ID that is valid only through the connection lifetime • Sends its list of shared files • Sends its download list • Receives a download sources lists • The connection is kept open during all the client’s session • After establishment • Further search queries can be made and replied with sources list • A filename query is answered with a set of matching hashes
Client to Client Connection • An eMule client connects another client (source) to download a file • Files are fragmented and clients may download fragments of the same file form several sources concurrently • When two clients connect the uploading client serves the downloading client or adds it to its downloading queue • When a downloading client reaches the head of an uploading client the uploading client initiates a connection in order to send him the needed fragments
Data Transfer • Compressed to save bandwidth • Erasure coded to support fast recovery • When a complete chunk of 9500 kilobytes is downloaded and verified this data is also shared by the downloader
Client ID • A client can receive a low-id or a high-id • A low-id is assigned if the server fails to initiate a TCP connection to the client • Low-id restricts the clients use of the network and might result with the server rejecting the client • High-id is based on the client IP address and will remain constant as long as the IP address does not change
Call back Mechanism • Allows high-id clients to utilize low-id clients in case they are connected to the same server • The server sends the low-id client the high-id client’s IP address • The low-id client then initiates a TCP connection to the high-id client and serve it
Credit System • A local “tit-for-tat” mechanism to encourage uploads • A downloading client may identify itself upon clients connection establishment through a simple RSA challenge response • Clients records the upload/download ratio for other clients and promote friendly clients in their queues