1Smokeping_probes_IRTT(3) SmokePing Smokeping_probes_IRTT(3)
2
3
4
6 Smokeping::probes::IRTT - a SmokePing Probe for IRTT
7 <https://github.com/peteheist/irtt>
8
10 *** Probes ***
11
12 +IRTT
13
14 binary = /usr/local/bin/irtt # mandatory
15 forks = 5
16 offset = 50%
17 step = 300
18 timeout = 15
19 tmpdir = /tmp/smokeping-irtt
20
21 # The following variables can be overridden in each target section
22 /^influx_.+/ = influx_location = In the basement
23 dscp = 46
24 extraargs = --ttl=32
25 fill = rand
26 hmac = opensesame
27 interval = 1.5
28 ipversion = 6
29 length = 172
30 localaddr = 192.168.1.10:63814
31 metric = rtt
32 pings = 5
33 readfrom = irtt1
34 readfrompollinterval = 2
35 serverfill = rand
36 sleep = 0.5
37 writeto = irtt1
38
39 # [...]
40
41 *** Targets ***
42
43 probe = IRTT # if this should be the default probe
44
45 # [...]
46
47 + mytarget
48 # probe = IRTT # if the default probe is something else
49 host = my.host
50 /^influx_.+/ = influx_location = In the basement
51 dscp = 46
52 extraargs = --ttl=32
53 fill = rand
54 hmac = opensesame
55 interval = 1.5
56 ipversion = 6
57 length = 172
58 localaddr = 192.168.1.10:63814
59 metric = rtt
60 pings = 5
61 readfrom = irtt1
62 readfrompollinterval = 2
63 serverfill = rand
64 sleep = 0.5
65 writeto = irtt1
66
68 This SmokePing probe uses IRTT <https://github.com/peteheist/irtt> to
69 record network round-trip time <https://en.wikipedia.org/wiki/Round-
70 trip_delay_time>, one-way delay <https://en.wikipedia.org/wiki/End-to-
71 end_delay> or IPDV
72 <https://en.wikipedia.org/wiki/Packet_delay_variation> (jitter), based
73 on the value of the metric variable.
74
75 Additionally, the probe provides a results sharing feature, which
76 allows using results from a single IRTT run to record multiple metrics
77 for a given host at the same time. One target is defined with the
78 writeto variable set, which selects the name of a temporary file to
79 save the IRTT output to. Additional targets are defined with the
80 readfrom variable set to the same value, which, instead of running
81 IRTT, wait for the main target's output to become available, then parse
82 it to record the chosen metric from the same data. See the writeto and
83 readfrom variables for more information.
84
85 WARNING
86 The results sharing feature (writeto and readfrom variables) requires
87 the number of forks for the IRTT probe to be at least the total number
88 of IRTT targets defined (regardless of whether they have writeto and
89 readfrom set). Otherwise, there can be a deadlock while readfrom
90 targets wait for their corresponding writeto target to complete, which
91 may never start.
92
94 Supported probe-specific variables:
95
96 binary
97 The location of your irtt binary.
98
99 Example value: /usr/local/bin/irtt
100
101 Default value: /usr/bin/irtt
102
103 This setting is mandatory.
104
105 forks
106 Run this many concurrent processes at maximum
107
108 Example value: 5
109
110 Default value: 5
111
112 offset
113 If you run many probes concurrently you may want to prevent them
114 from hitting your network all at the same time. Using the probe-
115 specific offset parameter you can change the point in time when
116 each probe will be run. Offset is specified in % of total interval,
117 or alternatively as 'random', and the offset from the 'General'
118 section is used if nothing is specified here. Note that this does
119 NOT influence the rrds itself, it is just a matter of when data
120 acquisition is initiated. (This variable is only applicable if the
121 variable 'concurrentprobes' is set in the 'General' section.)
122
123 Example value: 50%
124
125 step
126 Duration of the base interval that this probe should use, if
127 different from the one specified in the 'Database' section. Note
128 that the step in the RRD files is fixed when they are originally
129 generated, and if you change the step parameter afterwards, you'll
130 have to delete the old RRD files or somehow convert them. (This
131 variable is only applicable if the variable 'concurrentprobes' is
132 set in the 'General' section.)
133
134 Example value: 300
135
136 timeout
137 How long a single 'ping' takes at maximum
138
139 Example value: 15
140
141 Default value: 5
142
143 tmpdir
144 A temporary directory in which to place files for writeto/readfrom.
145
146 Default value: /tmp/smokeping-irtt
147
148 Supported target-specific variables:
149
150 /^influx_.+/
151 This is a tag that will be sent to influxdb and has no impact on
152 the probe measurement. The tag name will be sent without the
153 "influx_" prefix, which will be replaced with "tag_" instead. Tags
154 can be used for filtering.
155
156 Example value: influx_location = In the basement
157
158 dscp
159 The packet DSCP
160 <https://en.wikipedia.org/wiki/Differentiated_services> value to
161 use ("irtt client --dscp"). This is the same as the classic one
162 byte IP ToS field, but on the modern Internet, typically only the
163 lower 6 bits are used, and this is called the DSCP value. The upper
164 two bits are reserved for ECN
165 <https://en.wikipedia.org/wiki/Explicit_Congestion_Notification>.
166 Hex may be used if prefixed by "0x".
167
168 Example value: 46
169
170 extraargs
171 Extra arguments to "irtt client" (see irtt-client(1)). Be careful
172 with extra arguments, as some can corrupt the results.
173
174 Example value: --ttl=32
175
176 fill
177 The fill to use in the payload for the client to server packet
178 ("irtt client --fill"). The length variable must be large enough so
179 there's a payload to fill. Use rand for random fill, or see
180 irtt-client(1) for more options.
181
182 Example value: rand
183
184 hmac
185 The HMAC <https://en.wikipedia.org/wiki/Hash-
186 based_message_authentication_code> key to use when sending packets
187 to the server ("irtt client --hmac").
188
189 Example value: opensesame
190
191 interval
192 The interval between successive requests, in seconds ("irtt client
193 -i", but the unit is always seconds (s)).
194
195 WARNING
196
197 If interval is increased to greater than 5 seconds, the timeout
198 (which defaults to pings * 5 seconds + 1) must be modified so that
199 SmokePing doesn't kill the probe prematurely. Additionally,
200 interval must not be increased such that pings * interval is
201 greater than step. For example, at step=300 and pings=20, the
202 interval must not be greater than 15 seconds, but should preferably
203 be less to account for handshake and packet wait times.
204
205 Example value: 1.5
206
207 Default value: 1
208
209 ipversion
210 The IP version to use for packets (4 or 6, corresponding to "irtt
211 client -4" or "irtt client -6"). By default the IP version is
212 chosen based on the supplied host variable.
213
214 Example value: 6
215
216 length
217 The length (size) of the packet ("irtt client -l"). The length
218 includes IRTT headers, but not IP or UDP headers. The actual packet
219 length is increased to accommodate the IRTT headers, if necessary.
220 Header size as of IRTT 0.9.0 as used in SmokePing is 48 bytes when
221 writeto is set (since both monotonic and wall clock values are
222 requested) and 40 bytes otherwise.
223
224 Example value: 172
225
226 localaddr
227 The local address to bind to when sending packets ("irtt client
228 --local"). See irtt-client(1) Host formats for valid syntax.
229
230 Example value: 192.168.1.10:63814
231
232 metric
233 The metric to record, one of:
234
235 • rtt: round-trip time <https://en.wikipedia.org/wiki/Round-
236 trip_delay_time>
237
238 • send: one-way send delay <https://en.wikipedia.org/wiki/End-to-
239 end_delay> (requires external time synchronization)
240
241 • receive: one-way receive delay
242 <https://en.wikipedia.org/wiki/End-to-end_delay> (requires
243 external time synchronization)
244
245 • ipdv: IPDV
246 <https://en.wikipedia.org/wiki/Packet_delay_variation>
247 (instantaneous packet delay variation, or jitter)
248
249 • send_ipdv: IPDV for sent packets
250
251 • receive_ipdv: IPDV for received packets
252
253 Note that the "send" and "receive" metrics require accurate
254 external system clock synchronization, otherwise the values from
255 one will be abnormally high and the other will be abnormally low or
256 even negative, in which case the value 0 will be given SmokePing.
257 It is recommended to install ntp on both the SmokePing client and
258 IRTT server. Properly configured NTP may be able to synchronize
259 time to within a few milliseconds, which is usually enough to
260 provide useful results. PTP over a LAN may achieve microsecond-
261 level accuracy. For best results between geographically remote
262 hosts, GPS receivers may be used. Since "send_ipdv" and
263 "receive_ipdv" measure the variation in times between successive
264 packets, and since "rtt" and "ipdv" use monotonic clock values on
265 the client side only, external time synchronization is not required
266 for these metrics.
267
268 Default value: rtt
269
270 pings
271 How many pings should be sent to each target, if different from the
272 global value specified in the Database section. Note that the
273 number of pings in the RRD files is fixed when they are originally
274 generated, and if you change this parameter afterwards, you'll have
275 to delete the old RRD files or somehow convert them.
276
277 Example value: 5
278
279 readfrom
280 The name of a file to read results from, instead of running IRTT.
281 Use in combination with writeto to use the results from one IRTT
282 run to record multiple metrics. The value will become the name of a
283 file in tmpdir, and must be the same as another target's setting
284 for writeto. Multiple targets may use the same value for readfrom,
285 but writeto and readfrom may not be both set for a given target.
286 When readfrom is set, any variables that affect "irtt client" are
287 ignored because IRTT is not being invoked, including: dscp,
288 extraargs, fill, hmac, interval, ipversion, length, localaddr and
289 serverfill. These values are only relevant in the corresponding
290 writeto target.
291
292 Note that the host variable must still be defined for targets that
293 define readfrom, otherwise the target won't be used.
294
295 When using this feature, be sure to have at least as many forks for
296 the IRTT probe as you have total IRTT targets defined. See the
297 "DESCRIPTION" section for more information.
298
299 Example value: irtt1
300
301 readfrompollinterval
302 The integer interval in seconds on which to poll for results when
303 readfrom is set. Lower numbers will allow readfrom to see the
304 results a bit sooner, at the cost of higher CPU usage. Polling does
305 not begin until the soonest time at which the IRTT client could
306 have terminated normally.
307
308 Example value: 2
309
310 Default value: 5
311
312 serverfill
313 The fill to use in the payload for the server to client packet
314 ("irtt client --sfill"). The length variable must be large enough
315 to accommodate a payload. Use "rand" for random fill, or see
316 irtt-client(1) for more options.
317
318 Example value: rand
319
320 sleep
321 The amount of time to sleep before starting requests or processing
322 results (a float in seconds). This may be used to avoid CPU spikes
323 caused by invoking multiple instances of IRTT at the same time.
324
325 Example value: 0.5
326
327 writeto
328 The name of a file to write results to after running IRTT. Use in
329 combination with readfrom to use the results from this IRTT run to
330 record multiple metrics. The value will become the name of a file
331 in tmpdir, and any targets with readfrom set to the same value will
332 use this target's results. There must be only one target with
333 writeto set for a given file, and writeto and readfrom may not be
334 both set for a given target.
335
336 When using this feature, be sure to have at least as many forks for
337 the IRTT probe as you have total IRTT targets defined. See the
338 "DESCRIPTION" section for more information.
339
340 Example value: irtt1
341
343 Pete Heist <pete@heistp.net>
344
345
346
3472.8.2 2023-01-21 Smokeping_probes_IRTT(3)