FC++  v0.7.2-1128
FileCatalyst Fast File Transfers - C++ Library
See also
Getting Started
FCCL cli examples

The following table describes some recommended performance settings to use with the FC++ API and the FCCL command line tool. Most of the initial default values used by FC++ are chosen for safety, not for performance, so changing these values will allow for faster file transfers. To get the most performance from FC++, refer to recommended values.

Name C++ API Command-line Default Value Recommended Value Description
bandwidth fc::Options::setBandwidth() bandwidth and startrate     Set the maximum and initial bandwidth that can be used. If the maximum is set higher than the network capability between the client and the server, it is highly recommended to turn on UDP congrestion control.
See --bandwidth and --startrate.
congestion control fc::Options::setCongestionControl() congestioncontrol and aggression disabled enabled Enable UDP congestion control to prevent packet floods. Set the aggression control at 5 for mid-level aggression/recovery.
See --congestioncontrol.
file encoders fc::Options::setEncoders() numencoders 5 threads + 2 Set this to the number of FC++ client-side threads + 2.
See multithread in this table.
encrypted transfers fc::Options::setEncryption() ssl disabled disabled Encryption and decryption slows down transfers. If encryption/decryption is required, turn on multithreading to lessen the impact of having to encrypt and decrypt every single packet.
See multithread in this table.
See --ssl and --port.
unit and block size fc::Options::setLimits() unitsize and blocksize 1 KiB unit and 4 MiB block   The unit size depends on the MTU between the client and the server. To prevent packet fragmentation, use a unit size smaller than the MTU. The FC++ overhead when sending files over UDP is exactly 18 bytes.
See --blocksize and --unitsize.
MD5 checksum fc::Options::setMd5Verification() verify disabled disabled MD5 verification can take a long time on extremely large files.
See --verify.
file transfer mode fc::Options::setMode() mode udp udp FTP transfers use the TCP/FTP mode. For high-speed FileCatalyst UDP transfers, set the mode to UDP.
multiple threads fc::Options::setMultiThreaded() multithread enabled enabled Too many threads can introduce lock contention. Most file transfers perform best with several client-side threads. Between 3 and 5 threads is a good number to use to start in most situations. Set the number of server-side encoders slightly higher than the number of client-side threads. A good rule of thumb in most situations is:
server-side encoders = FC++ client-side threads + 2.
See --multithread and --numencoders.
file overwrite fc::Options::setOverwrite() overwrite disabled enabled Allow transferred files to overwrite pre-existing files with the same name.
resume partial transfers fc::Options::setTransferResume() autoresume disabled enabled Allow resumption of partial or interrupted file transfers. Also needs overwrite to be fully effective.
See overwrite in this table.
Not all settings are appropriate for all file transfer situations. Contact Unlimi-Tech technical support for assistance.