1. Introduction

This guide covers deploying TFTP Broadband for high-load environments.

2. Install the OS

This step may be carried out by the customer.

3. Supported Platforms

3.1. Linux

  • SLES10 x86_64

  • RHEL x86_64

3.2. Solaris

  • Solaris 9 UltraSparc

3.3. Microsoft Windows

  • Windows Server 2000

  • Windows Server 2003

4.1. x86_64

CPU

2GHz x86_64

RAM

512MB

DISK

25MB after installation plus all spool file sizes

4.2. UltraSparc

CPU

UltraSparc 1.5GHz

RAM

512MB

DISK

25MB after installation plus all spool file sizes

5. Maximizing Performance

This section describes how to modify the default configuration of TFTP Broadband to achieve maximal performance in high-load environments.

5.1. Hardware

TFTP Broadband is not RAM intensive, requiring only about 100 bytes per active transfer. A heavily loaded system can therefore comfortably operate with only a few megabytes of available RAM.

Hard drive performance can be important if you are serving multi-megabyte files to many clients simultaneously. If drive performance appears to be a bottleneck, consider placing the tftp root directory on a RAM drive.

The speed of your network card is also important. TFTP Broadband can typically service your network card at wire speed if other subsystems do not bottleneck the server.

5.2. Operating System

Linux® and Solaris® generally give better performance than Microsoft Windows®.

5.3. Software Configuration

TFTP Broadband is configured through an ASCII configuration file that holds a set of key=value pairs that determine the characteristics of the running server. The configuration file is located in:

Linux

/etc/tftptd.conf

Solaris

/usr/local/etc/tftptd.conf

Windows

Program directory\tftpt.conf

5.3.1. Disable the UDP Publisher

The UDP publisher is a plugin that allows the user interface to receive realtime updates of files being transferred. Although this feature is useful when testing your server, in production the server is greatly slowed down when watching transfers in realtime. The use of the GUI is discouraged on high-performance production systems.

Even when the user interface is not being used, simply having the ability to connect the user interface can cause the server to operate at half its maximum speed. To disable the user interface feature of the server, change the plugins configuration setting to not reflect the UDP publisher as shown below:

Linux
plugins=libtftp_rconsole.so
Windows
plugins=tftp_rconsole.dll

5.3.2. Use Conservative Log Levels

You can increase the performance of the TFTP server by using conservative log settings. The verbose and debug log settings should be avoided if possible. The audit setting introduces a marginal slowdown and should be disabled unless you require auditing of downloaded files. To change the log level setting for maximum performance, modify the configuration file as shown below:

system.log.levels=error,warning,info

6. Actual Tests

The data below is from actual tests on a dual-processor Intel 3.2GHz CPU running Suse Linux 9.3 with a 100Mb/s network card.

Short conclusion:

  • A single TFTP daemon running on 1 processor can hit about 100Mb/s if there are enough active connections.

  • Generally a single TFTP client may not be fast enough to push the TFTP daemon to 100% network bandwidth.

  • Larger block sizes increase the overall network throughput.

One transfer of a 100MB file:

  Blocksize 512:
    Transfer 1: 100MB in 50 seconds, 2MB/s or 16Mb/s
    Total:      100MB in 50 seconds, 2MB/s or 16Mb/s
    CPU usage:  15% - 22%

  Blocksize 1400:
    Transfer 1: 100MB in 30 seconds, 3.3MB/s or 26.6Mb/s
    Total:      100MB in 30 seconds, 3.3MB/s or 26.6Mb/s
    CPU usage   15% - 16%

  Blocksize 8192:
    Transfer 1: 100MB -> 20 seconds, 5MB/s or 40Mb/s
    Total:      100MB -> 20 seconds, 5MB/s or 40Mb/s
    CPU usage:  11% - 12%

  Blocksize 16384:
    Transfer 1: 100MB -> 17 seconds, 5.9MB/s or 47Mb/s
    Total:      100MB -> 17 seconds, 5.9MB/s or 47Mb/s
    CPU usage:  8% - 10%
Two simultaneous transfers of a 100MB file:

  Blocksize 512:
    Transfer 1: 100MB in 53 seconds, 2MB/s or 16Mb/s
    Transfer 2: 100MB in 53 seconds, 2MB/s or 16Mb/s
    Total:      200MB in 53 seconds, 3.8MB/s or 30.4Mb/s
    CPU usage:  50%

  Blocksize 1400:
    Transfer 1: 100MB in 35 seconds, 2.8MB/s or 22.4Mb/s
    Transfer 2: 100MB in 35 seconds, 2.8MB/s or 22.4Mb/s
    Total:      200MB in 35 seconds, 5.7MB/s 45.6Mb/s
    CPU usage:  28%

  Blocksize 8192:
    Transfer 1: 100MB in 22 seconds, 4.5MB/s or 36Mb/s
    Transfer 2: 100MB in 22 seconds, 4.5MB/s or 36Mb/s
    Total:      200MB in 22 seconds, 9MB/s or 72Mb/s
    CPU usage:  20%

  Blocksize 16384:
    Transfer 1: 100MB in 24 seconds, 4.1MB/s or 33Mb/s
    Transfer 2: 100MB in 24 seconds, 4.1MB/s or 33Mb/s
    Total:      200MB in 24 seconds, 8.3MB/s or 66.4Mb/s
    CPU Usage:  20%
Three simultaneous transfers of a 100MB file:

  Blocksize 512:
    Transfer 1: 100MB in 73 seconds, 1.4MB/s or 11Mb/s
    Transfer 2: 100MB in 73 seconds, 1.4MB/s or 11Mb/s
    Transfer 3: 100MB in 73 seconds, 1.4MB/s or 11Mb/s
    Total:      300MB in 73 seconds, 4.1MB/s or 32.8Mb/s
    CPU usage:  56%

  Blocksize 1400:
    Transfer 1: 100MB in 39 seconds, 2.6MB/s or 21Mb/s
    Transfer 2: 100MB in 39 seconds, 2.6MB/s or 21Mb/s
    Transfer 3: 100MB in 39 seconds, 2.6MB/s or 21Mb/s
    Total:      300MB in 39 seconds, 7.7MB/s or 61.6Mb/s
    CPU usage:  44%

  Blocksize 8192:
    Transfer 1: 100MB in 30 seconds, 3.3MB/s or 26.4Mb/s
    Transfer 2: 100MB in 30 seconds, 3.3MB/s or 26.4Mb/s
    Transfer 3: 100MB in 30 seconds, 3.3MB/s or 26.4Mb/s
    Total:      300MB in 30 seconds, 10MB/s or 80Mb/s
    CPU usage:  10-20%

  Blocksize 16384:
    Transfer 1: 100MB in 24 seconds, 4.2MB/s or 34Mb/s
    Transfer 2: 100MB in 24 seconds, 4.2MB/s or 34Mb/s
    Transfer 3: 100MB in 24 seconds, 4.2MB/s or 34Mb/s
    Total:      300MB in 24 seconds, 12.5MB/s or 100Mb/s
    CPU Usage:  22%

7. Contact

Weird Solutions
Box 101
18622 Vallentuna
SWEDEN
tel: +46 8 758 3700
email: info at weird-solutions.com
Copyright© 1997-2015, Weird Solutions, Inc.