Smokeping_probes_FTPtransfer(3)

πŸ’… Smokeping_probes_FTPtransfer(3) β€” the SmokePing manual, bestie edition

okay so this is the Smokeping_probes_FTPtransfer(3) page from the SmokePing manual, and honestly? it's giving "chaotic but iconic" ✨ it's the ✨ NAME ✨ section energy: Smokeping::probes::FTPtransfer β€” the intrusive bandwidth probe. yes bestie, INTRUSIVE. it literally shoves real files across the wire. 🫢


🌸 OVERVIEW 🌸

So this probe basically sends files to and retrieves files from an ftp server, and then it plots the bandwidth it could use. That's it. That's the whole vibe. πŸ“ˆπŸ’–


✨ SYNOPSIS ✨

okay here's the config layout, copy it exactly fr fr:

 *** Probes ***

 +FTPtransfer

 destfile = path/to/destinationfile.xxx
 forks = 5
 min_interval = 1
 mode = get # mandatory
 offset = 50%
 passwordfile = /some/place/secret
 srcfile = src/path/mybig.pdf # mandatory
 step = 300
 timeout = 15 # mandatory

 # The following variables can be overridden in each target section
 /^influx_.+/ = influx_location = In the basement
 localaddr = myhost-nat-if
 passive = yes
 password = test-password
 pings = 5
 port = 3255
 timeout = 10
 username = test-user

 # [...]

 *** Targets ***

 probe = FTPtransfer # if this should be the default probe

 # [...]

 + mytarget
 # probe = FTPtransfer # if the default probe is something else
 host = my.host
 /^influx_.+/ = influx_location = In the basement
 localaddr = myhost-nat-if
 passive = yes
 password = test-password
 pings = 5
 port = 3255
 timeout = 10
 username = test-user

πŸ¦‹ DESCRIPTION πŸ¦‹

So the probe uses the Net::FTP perl client to run performance tests, and the target is an FTP server. 🎯 And yes β€” this probe is intrusive, because it transfers real data. The whole point is that by using actual real files, we get a fair shot at figuring out what a link can actually do when it comes to transferring actual files. no cap, real data = real answers. πŸ’€βœ¨

Now, the password situation β€” there are three places it can live, and they go in order of precedence, with each one overriding the one before it:

  1. the probe-specific variable password
  2. an external file
  3. the target-specific variable password

The location of that external file? That's given in the probe-specific variable passwordfile. πŸ—‚οΈ The format of the file is documented in Smokeping::probes::passwordchecker(3pm) β€” summary: colon-separated triplets of the form <host>:<username>:<password> πŸ”

The probe tries to be nice to the server πŸ₯Ί and waits at least X seconds between starting filetransfers, where X is the value of the probe-specific min_interval variable (1 by default).

Many variables can be specified either in the probe or in the target definition β€” and the target-specific variable will override the probe-specific variable. πŸ‘‘

If your transfer takes a lot of time, you may want to make sure to set the timeout and max_rtt properly so that smokeping does not abort the transfers or limit the graph size. β°πŸ“‰


πŸŽ€ VARIABLES πŸŽ€

πŸ’– Supported probe-specific variables

  • destfile β€” Normally the destination filename is the same as the source filename (without the path). But if you want keep files in different directories, this may not work, and you have to specify destfile as well. πŸ“ Example value: path/to/destinationfile.xxx
  • forks β€” Run this many concurrent processes at maximum. πŸƒβ€β™€οΈπŸƒβ€β™€οΈ Example value: 5 Default value: 5
  • min_interval β€” The minimum interval between each starting ftp sessions, in seconds. ⏳ Default value: 1
  • mode β€” The ftp probe can be in either put or get mode. If it's in put mode then it will send a file to the ftp server. In get mode it will retrieve a file from the ftp server. πŸ“€πŸ“₯ Example value: get This setting is mandatory. 🚨
  • offset β€” If you run many probes concurrently you may want to prevent them from hitting your network all at the same time. Using the probe-specific offset parameter you can change the point in time when each probe will be run. Offset is specified in % of total interval, or alternatively as 'random', and the offset from the 'General' section is used if nothing is specified here. Note that this does NOT influence the rrds themselves β€” it is just a matter of when data acquisition is initiated. (This variable is only applicable if the variable 'concurrentprobes' is set in the 'General' section.) 🎯 Example value: 50%
  • passwordfile β€” Location of the file containing usernames and passwords. πŸ”‘ Example value: /some/place/secret
  • srcfile β€” The name of the source file. If the probe is in put mode, this file has to be on the local machine; if the probe is in get mode then this file should sit in the remote ftp account. πŸ“„ Example value: src/path/mybig.pdf This setting is mandatory. 🚨
  • step β€” Duration of the base interval that this probe should use, if different from the one specified in the 'Database' section. Note that the step in the RRD files is fixed when they are originally generated, and if you change the step parameter afterwards, you'll have to delete the old RRD files or somehow convert them. (This variable is only applicable if the variable 'concurrentprobes' is set in the 'General' section.) ⚠️ Example value: 300
  • timeout β€” The timeout is the maximum amount of time you will allow the probe to transfer the file. If the probe does not succeed to transfer in the time specified, it will get killed and a 'loss' will be logged. πŸ’€ Since FTPtransfer is an invasive probe you should make sure you do not load the link for more than a few seconds anyway. Smokeping currently has a hard limit of 180 seconds for any RTT. ⏱️ Example value: 15 This setting is mandatory. 🚨

🌈 Supported target-specific variables

  • /^influx_.+/ β€” This is a tag that will be sent to influxdb and has no impact on the probe measurement. The tag name will be sent without the "influx_" prefix, which will be replaced with "tag_" instead. Tags can be used for filtering. 🏷️ Example value: influx_location = In the basement
  • localaddr β€” The local address to be used when making connections. 🌐 Example value: myhost-nat-if
  • passive β€” Use passive FTP protocol. 😴 Example value: yes
  • password β€” The password for the user, if not present in the password file. πŸ”“ Example value: test-password
  • pings β€” How many pings should be sent to each target, if different from the global value specified in the Database section. Note that the number of pings in the RRD files is fixed when they are originally generated, and if you change this parameter afterwards, you'll have to delete the old RRD files or somehow convert them. ⚠️ Example value: 5
  • port β€” A non-standard FTP port to be used. πŸ”Œ Example value: 3255
  • timeout β€” Timeout in seconds for the FTP transfer to complete. ⏳ Example value: 10
  • username β€” The username to be tested. πŸ‘€ Example value: test-user

πŸ‘‘ AUTHORS πŸ‘‘

Tobias Oetiker <tobi@oetiker.ch> sponsored by Virtela πŸ’œ


πŸ’€ BUGS πŸ’€

This probe has the capability for saturating your links, so don't use it unless you know what you are doing. 🚨😭

The FTPtransfer probe measures bandwidth, but we report the number of seconds it took to transfer the 'reference' file. Why? Because currently the notion of Round Trip Time is at the core of the application. It would take some re-engineering to split this out in plugins and thus make it configurable ... 🫠


✨ and that's the whole page bestie β€” version 2.9.0, dated 2025-06-30, from the SmokePing Smokeping_probes_FTPtransfer(3) manual. go forth and transfer files responsibly, mwah πŸ’…πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from