1FLAME(1)                         Flamethrower                         FLAME(1)
2
3
4

NAME

6       flame – DNS performance and functional testing utility
7

SYNOPSIS

9       flame [options] target [generator-options]
10
11       flame --help
12
13       flame --version
14

DESCRIPTION

16       Flamethrower  is  a small, fast, configurable tool for functional test‐
17       ing, benchmarking, and stress testing DNS  servers  and  networks.   It
18       supports  IPv4,  IPv6,  UDP,  TCP, and DoT and has a modular system for
19       generating queries used in the tests.
20
21       Originally built as an alternative to dnsperf  (https://github.com/DNS-
22       OARC/dnsperf), many of the command line options are compatible.
23
24   Target
25       Target  can be either an IP address or host name which will be resolved
26       first.
27
28   Options
29       -b BIND_IP
30              IP address to bind to.  Default is 0.0.0.0 for inet or  ::0  for
31              inet6.
32
33       -q QCOUNT
34              Number  of  queries to send every DELAY_MS interval.  Default is
35              10.  For DoH this specifies  the  number  of  concurrent  HTTP/2
36              streams.   If  this  number is larger than the maximum number of
37              concurrent streams supported by the DoH server (100  for  most),
38              timeouts will happen.
39
40       -c TCOUNT
41              Number of concurrent traffic generators per process.  Default is
42              10.
43
44       -p PORT
45              Which port to flame.  Default is 53 for UDP/TCP, 443 for DoH and
46              853 for DoT.
47
48       -d DELAY_MS
49              Delay between each traffic generator’s run in milliseconds.  De‐
50              fault is 1.
51
52       -r RECORD
53              The base record to use as the query for generators.  Default  is
54              test.com.
55
56       -T QTYPE
57              The query type to use for generators.  Default is A.
58
59       -o FILE
60              Metrics output file in JSON format.
61
62       -l LIMIT_SECS
63              Traffic  generation limit in seconds.  0 for unlimited.  Default
64              is 0.
65
66       -t TIMEOUT
67              Query timeout in seconds.  Default is 3.
68
69       -F ( inet | inet6 )
70              Internet family.  Default is inet.
71
72       -f FILE
73              Read records from a file, one per row, QNAME  and  QTYPE.   Used
74              with the file generator.
75
76       -n LOOP
77              Number  of loops in the record list, 0 is unlimited.  Default is
78              1.
79
80       -R     Randomize the query list before sending.  Default is false.
81
82       -P ( udp | tcp | dot | doh )
83              Protocol to use.  Default is udp.
84
85       -M ( GET | POST )
86              HTTP method to use for DNS over HTTPS.  Default is GET.
87
88       -Q QPS Rate limit to a maximum queries per second, 0 is unlimited.  De‐
89              fault is 0.
90
91       -g GENERATOR
92              Query  generator  to  use.  The generators and their options are
93              described in a separate section.  Default is static.
94
95       -v VERBOSITY
96              Output verbosity, 0 is silent.  Default is 1.
97
98       --dnssec
99              Send queries with DNSSEC OK flag set.  Default is false.
100
101       --class CLASS
102              Send queries with given DNS class.  Default is IN.
103
104       --qps-flow
105              Change rate limit over time, format: QPS,MS;QPS,MS;...
106

Generators

108       Flamethrower uses a modular system for generating queries.  Each module
109       may  include its own list of configuration options which can be set via
110       KEY=VALUE pairs on the command line via generator-options.
111
112   static
113       The generator sends the same query for a QNAME and QTYPE specified  via
114       the -r and -t options.  It doesn’t use generator options.
115
116   file
117       The  generator reads dnsperf-compatible input file containing QNAME and
118       QTYPE pairs on individual lines.  The name and type is separated  by  a
119       space.   The input file is specified via the -f option.  File generator
120       doesn’t use generator options.
121
122   numberqname
123       The generator sends queries to one-label subdomain with a number for  a
124       record  specified  with -r.  The generator uses following generator op‐
125       tions:
126
127       · low - Lowest numeric value to write into the label.  Default is 0.
128
129       · high - Highest number value to write  into  the  label.   Default  is
130         100000.
131
132   randompkt
133       The  generator sends random chunks of data and uses following generator
134       options:
135
136       · count - number of chunks (packets) to generate.  Default is 1000.
137
138       · size - maximal size of the chunk in bytes.  Default is 600.
139
140   randomqname
141       The generator sends queries to random subdomains of the  record  speci‐
142       fied with -r.  The subdomains may contain binary (non-printable charac‐
143       ters) including zero byte.  The following generator options are  avail‐
144       able:
145
146       · count - number of queries to generate.  Default is 100.
147
148       · size - maximum length of the added label(s).  Default is 255.
149
150   randomlabel
151       The  generator  sends queries to random subdomains of the record speci‐
152       fied with -r.  The subdomains may contain only characters  valid  in  a
153       DNS names.  The following generator options are available:
154
155       · count - number of queries to generate.  Default is 1000.
156
157       · lblsize - maximum length of a single added label.  Default is 10.
158
159       · lblcount - maximum number of labels to add.  Default is 5.
160

EXAMPLES

162       Flame  localhost over IPv4 on UDP port 53, use default static generator
163       sending test.com/A queries, no QPS limit, terminate after 10 seconds:
164
165              $ flame -l 10 localhost
166
167       Flame target.example.test over IPv6 on TCP port 5300 with default  gen‐
168       erator and no QPS limit:
169
170              $ flame -p 5300 -P tcp -F inet6 target.example.test
171
172       Flame  target.example.test  over IPv4 on UDP port 53 with 10 q/s limit,
173       send AAAA type queries for random one-label subdomains of example.test,
174       limit the query speed to 10 q/s, terminate after 1000 queries:
175
176              $ flame -Q 10 -r example.test -t AAAA -g randomlabel target.example.test lblsize=10 lblcount=1 count=1000
177

AUTHORS

179       NS1 (https://ns1.com)
180

BUGS

182       Flamethrower  at  GitHub  (https://github.com/DNS-OARC/flamethrower/is
183       sues)
184
186       Copyright 2019, NSONE, Inc.
187
188
189
1900.9                            Februrary 6, 2019                      FLAME(1)
Impressum