DrFTPD

From Wikipedia, the free encyclopedia

DrFTPD is a distributed FTP daemon written by Morgan Christiansson in Java. It is unique because it does not handle transfers like normal FTP servers. Instead of conventional server ↔ client transfer, DrFTPD is set up with a master and a collection of file transfer slaves that handle the file transfers, you can have as many file transfer slaves as you like. Some names that could be used to describe this is FTP site merger, FTP cluster, FTP grid or multi-site bnc.

What is unique with DrFTPD is that not only can it use master ↔ client for control connections and slave ↔ client for (most) data transfers, but it works with existing FTP software, you can use the FTP application you're used to and make site-to-site (FXP) transfers with normal FTP servers. The only exception is with passive (PASV) mode, for this the client needs to support the PRET protocol extension. PRET is already supported in several of the most widely used FTP applications. You can often do without PASV mode unless you are behind a firewall which you don't have access to or you need to FXP with another DrFTPD server or a server which doesn't support PASV.

Contents

[edit] Distribution of Assets

Since DrFTPD uses transfer slaves for all file storage and transfers, it supports but doesn't require a file transfer slave to be run locally. The master therefore uses very little bandwidth: FTP control connection, data connections for file listings and RMI calls to the slaves.

[edit] Bandwidth

DrFTPD uses the slave with least bandwidth used for uploads (and downloads, but only those that have the file can be used), and uses a different slave per file. When files are uploaded to the server each one can, and under the default setup will, end up on a different transfer slave. This maximizes available resources on a busy FTP server.

[edit] Virtual Filesystem

DrFTPD's approach to file transfers is not its only unique aspect. Because of the distributed architecture, it was necessary to build a virtual file system under which DrFTPD operates.

The master has a filelist that keeps track of which slaves have which files. A file can exist on multiple slaves for redundancy and more bandwidth.

When a slave is started, it gathers a file list and sends the entire list to the master. The master merges this list with its existing file list and makes sure that it is in sync with its existing file list by adding and removing files to its own list.

All ownership information, creation times, permissions, etc are stored in the virtual filesystem, and such information provided by the host filesystem is ignored.

[edit] Pros & Cons

[edit] Pros

  • It is completely multi-platform running on any environment that you can run java on.
  • The userlist and filesystem in DrFTPD is completely virtual, and this server is among the few that do not require administrative privileges to run.
  • The slave is kept thin/dumb and isn't told anything about users. It simple transfers the files where the master tells it to transfer them to and from. This is also an advantage as it simplifies administration of the slaves.

[edit] Cons

  • Because the master doesn't have any files locally, traditional external scripts won't work, so no compatibility can be made for them (unless you can wrap the O/S APIs to DrFTPD APIs).

[edit] External links