Langue: en

Version: 113938 (mandriva - 01/05/08)

Section: 1 (Commandes utilisateur)


uftp - UDP based ftp with multicast - sender


uftp [ -U ] [ -R txrate ] [ -W txweight ] [ -m min_time ] [ -l latency_level ] [ -t ttl ] [ -I interface ] [ -p port] [ -H host[,host...] ] [ -L logfile ] [ -M pub_multicast_addr ] [ -P priv_multicast_addr ] file


UFTP is a multicast file transfer program, utilizing a protocol based on Starburst MFTP. It is designed to reliably and efficiently transfer files to multiple receivers simultaneously, where either the intended receivers can be specified beforehand, or receivers can join the transfer when it is initiated. This is useful for distributing large files to a large number of receivers, and is especially useful for data distribution over a satellite link (with two way communication), where the inherent delay makes any TCP based communication terribly inefficient. UFTP is currently being using in the production process of The Wall Street Journal to send WSJ pages over satellite to their remote printing plants.

The data transfer consists of 3 main phases: The Announce/Register phase, the Transfer/NAK phase, and the Completion/Confirmation phase.

The Announce/Register phase begins by the server sending an Announcement over a public multicast address, which the clients are expected to be listening on. The server can either specify the hosts that are permitted to participate in the transfer (closed group membership), or it can allow any host that receives the announcement to participate (open group membership). The Announcement also contains information pertaining to the file to be received, such as the file name, file size, the total number of data blocks (blocks), and the number of data transfer sections (sections), which will be described in more detail later. Also in the Announcement is the private multicast address which the actual data is sent over. After the announcement, all subsequent communication from the server will be over the private address. Upon receiving the Announcement, the client sends a Registration back to the server informing it that it is ready to participate in the transfer. The server then sends a Confirmation to the client, acknowledging the registration. If the server specifies open group membership, it will wait for a period of time (based on network latency) to receive registrations from clients. For closed group membership, the server will wait a maximum period of time (again, based on network latency) for all specified clients to register. Any specified clients that do not register within that time frame will be flagged as "mute".

Once the Announce/Register phase is completed, the Transfer/NAK phase begins by starting the first pass of the data transfer. Data packets are sent continuously by the server at a rate specified by the user. Because UDP does not guarantee that packets will arrive in order, each data packet is numbered so the client can properly reassemble the file. After each data transfer section is complete, the server will then send a Done message, after which it will expect a Status message from each registered client. Since each client knows the total number blocks and sections as well as which packets were received, the client sends back the list of NAKs (negative acknowledgements) for each packet that was not received in that particular section. Once all sections have been sent, if the server has received a non zero number of NAKs from any client, the server will begin a second pass of the data, this time only sending the packets that were NAKed. The server will continue with subsequent passes of the data until all clients have either received the file or have timed out while the server was waited for a Status message.

When a client finishing receiving the entire file, it will send a special flag in the Status message for the last section alerting the server that that client has finished, thus starting the Completion/Confirmation phase. When the server receives this message from a client, it will then send a Confirmation to the client. Upon receiving the Confirmation, the client marks the file as complete and stops listening on the private multicast address for that file. This phase does not happen at the same time for all clients, but for each one as the clients receive the entire file. For example, if one client receives the whole file on the first pass of the data but another client sends back NAKs on the first pass, then the server will send a Confirmation to the first client but will then start a second pass of the data for the second client.


The following options are supported:

Send file unicast to a single host. This requires the -H option with a single host specified. The -t, -M, and -P options are ignored as they are all related to multicast.
-R txrate
The transmission speed in Kbps. Specifying -1 for this value results in data being sent as fast as the network interface will allow. Using a value of -1 is recommended only if the network path between the server and all clients encounters is as fast as the server's local interface, and works best in a gigabit environment. Default is 1000 Kbps.
-W txweight
Sets the maximum file transfer time, expressed as a percentage of the optimal time. If a value of -1 is given for the -R option, a speed of 100Mpbs is used for the purpose of calculating the max time. Valid values are 110%-10000%. Default value is 300%.
-m min_time
Specifies the minimum file transfer time. This value takes precedence over the maximum time, if it is greater. Valid values are 0-3600 seconds. Default value is 10 seconds.
-t ttl
Specifies the time-to-live for multicast packets. Default is 1.
-l latency_level
Specifies one of several predefined network latency levels. Valid values are 1, 2, and 3. Use 1 for low latency networks, such as a local LAN, and use 3 for high latency networks, such as satellite or global WAN. Default is 3. The default should be used if communicating with an older version of the client for backward compatibility.
-I interface
The name/address of the interface to send the data from. If not specified, the default system interface is used.
-p port
The UDP port number to send from. Default is 1044.
-L logfile
Specifies the log file. Default is to write to stderr.
-H host[,host...]
The list of receivers for closed group membership. If not specified, then open group membership is used.
-M pub_multicast_addr
The public multicast address to announce on. Default is
-P priv_multicast_addr
The private multicast address that the data is transferred to. Any combination of the second, third, and fourth octets may be replaced with the letter 'x', resulting in a random number being chosen for that octet. Default value is 230.5.5.x
The file to send. This field is required.




The latest version of UFTP can be found at http://www.tcnj.edu/~bush/uftp.html. UFTP is covered by the GNU General Public License. Commercial licences and support are available from Dennis Bush (bush@tcnj.edu).