1FLAME(1) Flamethrower FLAME(1)
2
3
4
6 flame – DNS performance and functional testing utility
7
9 flame [options] target [generator-options]
10
11 flame --help
12
13 flame --version
14
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
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
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
179 NS1 (https://ns1.com)
180
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)