FLAME(1)

πŸ“¦ version 0.12.0, in epel 10, fedora 43, fedora 44

πŸ’– FLAME(1) β€” the flamethrower era πŸ’–

okay bestie, sit down, hydrate, because we're about to talk about flame from the Flamethrower manual page (section 1, obviously, it's a user command) and it is lowkey iconic. πŸ¦‹


✨ NAME ✨

flame β€” a DNS performance and functional testing utility. that's it, that's the vibe. πŸ’…


🌸 SYNOPSIS 🌸

flame [options] target [generator-options]

flame --help

flame --version

like. that's the whole thing. target goes in, chaos comes out. πŸŽ€


πŸ‘‘ DESCRIPTION πŸ‘‘

Flamethrower is a small, fast, configurable tool for functional testing, benchmarking, and stress testing DNS servers and networks. no cap. it supports IPv4, IPv6, UDP, TCP, and DoT, and it has a modular system for generating the queries you use in your tests. it's giving ✨lego but for DNS abuse✨.

Originally built as an alternative to dnsperf (https://github.com/DNS-OARC/dnsperf), and ngl many of the command line options are compatible with it. so if you're migrating, your muscle memory is safe. 🫢

🎯 Target 🎯

Target can be either an IP address or a host name which will be resolved first. simple as that, bestie. ✨

πŸŽ›οΈ Options πŸŽ›οΈ

okay this is the part where I need you to lock in. every single one of these matters. πŸ“‹

  • -b BIND_IP β€” the IP address to bind to. default is 0.0.0.0 for inet or ::0 for inet6. πŸ’–
  • -q QCOUNT β€” how many queries to send every DELAY_MS interval. default is 10. for DoH this specifies the number of concurrent HTTP/2 streams. > ⚠️ and listen: if this number is larger than the maximum number of concurrent streams supported by the DoH server (100 for most), timeouts will happen. not a drill, bestie. 😭
  • -c TCOUNT β€” number of concurrent traffic generators per process. default is 10. πŸ”₯
  • -p PORT β€” which port to flame. default is 53 for UDP/TCP, 443 for DoH and 853 for DoT. πŸŽ€
  • -d DELAY_MS β€” delay between each traffic generator's run, in milliseconds. default is 1. ⏱️
  • -r RECORD β€” the base record to use as the query for generators. default is test.com. 🌸
  • -T QTYPE β€” the query type to use for generators. default is A. πŸ’œ
  • -o FILE β€” metrics output file in JSON format. πŸ—‚οΈ
  • -l LIMIT_SECS β€” traffic generation limit in seconds. 0 for unlimited. default is 0. ♾️
  • -t TIMEOUT β€” query timeout in seconds. default is 3. ⏳
  • -F ( inet | inet6 ) β€” internet family. default is inet. 🌐
  • -f FILE β€” read records from a file, one per row, QNAME and QTYPE. used with the file generator. πŸ“„
  • -n LOOP β€” number of loops in the record list, 0 is unlimited. default is 1. πŸ”
  • -R β€” randomize the query list before sending. default is false. πŸ”€
  • -P ( udp | tcp | dot | doh ) β€” protocol to use. default is udp. πŸš€
  • -M ( GET | POST ) β€” HTTP method to use for DNS over HTTPS. default is GET. πŸ“¬
  • -Q QPS β€” rate limit to a maximum queries per second, 0 is unlimited. default is 0. 🚦
  • -g GENERATOR β€” query generator to use. the generators and their options are described in a separate section. default is static. 🧚
  • -v VERBOSITY β€” output verbosity, 0 is silent. default is 1. 🀫
  • --dnssec β€” send queries with the DNSSEC OK flag set. default is false. πŸ”
  • --class CLASS β€” send queries with given DNS class. default is IN. 🏷️
  • --qps-flow β€” change rate limit over time, format: QPS,MS;QPS,MS;... πŸ“ˆ

🧩 Generators 🧩

Flamethrower uses a modular system for generating queries. each module may include its own list of configuration options, which you can set via KEY=VALUE pairs on the command line via generator-options. yes, KEY=VALUE pairs. on the command line. we love a flexible queen. πŸ‘‘

🌟 static 🌟

The generator sends the same query for a QNAME and QTYPE specified via the -r and -t options. It doesn't use generator options. boring? no. consistent. πŸ’…

🌟 file 🌟

The generator reads a dnsperf-compatible input file containing QNAME and QTYPE pairs on individual lines. the name and type is separated by a space. the input file is specified via the -f option. File generator doesn't use generator options. πŸ“

🌟 numberqname 🌟

The generator sends queries to a one-label subdomain with a number for a record specified with -r. the generator uses the following generator options:

  • low β€” lowest numeric value to write into the label. default is 0. πŸ”’
  • high β€” highest number value to write into the label. default is 100000. πŸ”’

🌟 randompkt 🌟

The generator sends random chunks of data and uses the following generator options:

  • count β€” number of chunks (packets) to generate. default is 1000. πŸ“¦
  • size β€” maximal size of the chunk in bytes. default is 600. πŸ“

🌟 randomqname 🌟

The generator sends queries to random subdomains of the record specified with -r. the subdomains may contain binary (non-printable characters) including zero byte. the following generator options are available:

  • count β€” number of queries to generate. default is 100. πŸ”’
  • size β€” maximum length of the added label(s). default is 255. πŸ“

🌟 randomlabel 🌟

The generator sends queries to random subdomains of the record specified with -r. the subdomains may contain only characters valid in DNS names. the following generator options are available:

  • count β€” number of queries to generate. default is 1000. πŸ”’
  • lblsize β€” maximum length of a single added label. default is 10. πŸ“
  • lblcount β€” maximum number of labels to add. default is 5. πŸ”’

πŸ”₯ EXAMPLES πŸ”₯

Flame localhost over IPv4 on UDP port 53, use default static generator sending test.com/A queries, no QPS limit, terminate after 10 seconds:

$ flame -l 10 localhost

Flame target.example.test over IPv6 on TCP port 5300 with default generator and no QPS limit:

$ flame -p 5300 -P tcp -F inet6 target.example.test

Flame target.example.test over IPv4 on UDP port 53 with 10 q/s limit, send AAAA type queries for random one-label subdomains of example.test, limit the query speed to 10 q/s, terminate after 1000 queries:

$ flame -Q 10 -r example.test -t AAAA -g randomlabel target.example.test lblsize=10 lblcount=1 count=1000
not me putting all three of these in my notes app for later 😭 these are literally the cheat codes.

πŸ’œ AUTHORS πŸ’œ

NS1 (https://ns1.com) β€” icons, honestly. πŸ‘‘


πŸ™ˆ BUGS πŸ™ˆ

Flamethrower at GitHub (https://github.com/DNS-OARC/flamethrower/issues) β€” go report it bestie, they're nice. 🫢


Copyright 2019, NSONE, Inc.


and that's the whole page, pookie!! πŸŽ€βœ¨ this is version 0.9, dated Februrary 6, 2019 (yes that's how it's spelled on the page, I don't make the rules πŸ’€), and it's the FLAME(1) page from the Flamethrower manual. go forth and flame responsibly, queen. πŸ’…πŸ”₯🌈

πŸ“¦ where this page comes from