/
example.conf
451 lines (381 loc) · 16 KB
/
example.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
# At the top level are elements specific to the overall Mesh. This includes a
# description of the 'mesh', the admins for the mesh, the organizations
# involved in the mesh, and the tests that the meshes perform.
# A human-readable description of the overall mesh
description DICE Mesh
# The overall mesh administrators (i.e. who one should contact if problems are
# seen with the mesh, etc).
<administrator>
name Aaron Brown
email aaron@example.internet2.edu
</administrator>
<administrator>
name Andy Lake
email andy@example.es.net
</administrator>
# Each mesh has one or more "organization" blocks. This allows encapsulating
# the administrators, sites, MAs, etc that are specific to the organization. In
# this example organization, all the data is stored on the hosts on which it is
# collected which is the norm for Toolkit instances.
<organization>
# A human-readable description of the organization
description Internet2
# The administrators for the organization (i.e. who one should contact if
# problems are seen with individual sites/hosts in the mesh.
<administrator>
name Aaron Brown
email aaron@example.internet2.edu
</administrator>
# There can be one or more 'site' blocks. Each 'site' block corresponds to a
# logical site in the organization which may contain one or more hosts.
# Elements in the 'site' block apply to all the 'host' blocks contained
# within them, and inherit the properties from the 'organization'.
<site>
## A human-readable description of where the site is located (e.g. a city or state)
<location>
city New York
state NY
# The latitude and longitude where the site is located
latitude 40.720
longitude -74.005
</location>
# Individual sites can have specific administrators associated with them.
<administrator>
name Matt Zekauskas
email matt@example.internet2.edu
</administrator>
# There can be one or more 'host' blocks. Each 'host' block corresponds to
# a single host at a site.
<host>
# An optional human-readable description of the host
description perfSONAR New York
address perfsonar.newy.example.internet2.edu
# There can be one or more 'measurement_archive' blocks. These have a 'read'
# URL which corresponds to the perfSONAR-speaking MA where test results can
# be obtained from. The blocks also have a 'write' URL which tells tests
# where the results can be written to. For hosts running the Performance
# Toolkit, the following URLs will all match the measurement archives
# running on the host, just replace the perfsonar.newy.example.internet2.edu
# with the hosts address.
<measurement_archive>
type traceroute
read_url http://perfsonar.newy.example.internet2.edu/esmond/perfsonar/archive
write_url http://perfsonar.newy.example.internet2.edu/esmond/perfsonar/archive
</measurement_archive>
<measurement_archive>
type perfsonarbuoy/owamp
read_url http://perfsonar.newy.example.internet2.edu/esmond/perfsonar/archive
write_url http://perfsonar.newy.example.internet2.edu/esmond/perfsonar/archive
</measurement_archive>
<measurement_archive>
type perfsonarbuoy/bwctl
read_url http://perfsonar.newy.example.internet2.edu/esmond/perfsonar/archive
write_url http://perfsonar.newy.example.internet2.edu/esmond/perfsonar/archive
</measurement_archive>
<measurement_archive>
type pinger
read_url http://perfsonar.newy.example.internet2.edu/esmond/perfsonar/archive
write_url http://perfsonar.newy.example.internet2.edu/esmond/perfsonar/archive
</measurement_archive>
</host>
</site>
<site>
<location>
city Salt Lake City
state UT
latitude 40.757
longitude -111.953
</location>
<host>
description perfSONAR Salt Lake City
address perfsonar.salt.example.internet2.edu
<measurement_archive>
type traceroute
read_url http://perfsonar.salt.example.internet2.edu/esmond/perfsonar/archive
write_url http://perfsonar.salt.example.internet2.edu/esmond/perfsonar/archive
</measurement_archive>
<measurement_archive>
type perfsonarbuoy/owamp
read_url http://perfsonar.salt.example.internet2.edu/esmond/perfsonar/archive
write_url http://perfsonar.salt.example.internet2.edu/esmond/perfsonar/archive
</measurement_archive>
<measurement_archive>
type perfsonarbuoy/bwctl
read_url http://perfsonar.salt.example.internet2.edu/esmond/perfsonar/archive
write_url http://perfsonar.salt.example.internet2.edu/esmond/perfsonar/archive
</measurement_archive>
<measurement_archive>
type pinger
read_url http://perfsonar.salt.example.internet2.edu/esmond/perfsonar/archive
write_url http://perfsonar.salt.example.internet2.edu/esmond/perfsonar/archive
</measurement_archive>
</host>
</site>
</organization>
<organization>
description ESnet
<administrator>
name Andy Lake
email andy@example.es.net
</administrator>
<administrator>
name Brian Tierney
email bltierney@example.es.net
</administrator>
# Instead of having each host have its own measurement archives. It is
# possible to have a central server act as a measurement archive for all the
# hosts in an organization.
<measurement_archive>
type traceroute
read_url http://ps-db.example.es.net/esmond/perfsonar/archive
write_url http://ps-db.example.es.net/esmond/perfsonar/archive
</measurement_archive>
<measurement_archive>
type perfsonarbuoy/owamp
read_url http://ps-db.example.es.net/esmond/perfsonar/archive
write_url http://ps-db.example.es.net/esmond/perfsonar/archive
</measurement_archive>
<measurement_archive>
type perfsonarbuoy/bwctl
read_url http://ps-db.example.es.net/esmond/perfsonar/archive
write_url http://ps-db.example.es.net/esmond/perfsonar/archive
</measurement_archive>
<measurement_archive>
type pinger
read_url http://ps-db.example.es.net/esmond/perfsonar/archive
write_url http://ps-db.example.es.net/esmond/perfsonar/archive
</measurement_archive>
<site>
<location>
city New York
state NY
latitude 40.720
longitude -74.005
</location>
<host>
address newy-pt1.example.es.net
</host>
<host>
address newy-owamp.example.es.net
</host>
</site>
<site>
<location>
city Chicago
state IL
latitude 41.896
longitude -87.643
</location>
<host>
address chic-pt1.example.es.net
</host>
<host>
address chic-owamp.example.es.net
</host>
</site>
</organization>
# The 'include' direction can be used to include other configurations in the
# mesh configuration. The URL listed will be embedded verbatim at the location
# of the include, merging with the configuration in the local file. Multiple
# 'include' directives may be used, though the order of how they are included
# is unspecified.
<organization>
include http://example.edu/example_organization.json
# When the example_organization.json is merged in, the 'description' listed
# here will take precendence over a 'description' field included in the
# example_organization.json
description DICE View Of example.edu
# When the example_organization.json is merged in, any top-level 'host'
# elements (i.e. host elements directly under the organization, not under a
# site) will be included in the list of hosts along with the host listed
# below.
<host>
address dice-tester.example.edu
</host>
# When the example_organization.json is merged in, if it includes a
# 'location' entry, it will be merged with the location entry below. If the
# elements defined in the entry below are also defined in the
# example_organization.json, the ones defined below will take precedence.
<location>
latitude 41.896
longitude -87.643
</location>
</organization>
# There can be one or more test_spec blocks. Each test_spec block represents a
# test specification, i.e. a test type, along with the parameters for the test.
# The test_spec's *must* have an 'id' field which gets used later to identify
# them.
<test_spec bwctl_4h_tcp_test>
# Define a test spec for testing achievable bandwidth once every 4 hours
type perfsonarbuoy/bwctl # Perform a bwctl test (i.e. achievable bandwidth)
tool bwctl/iperf3 # Use 'iperf' to do the bandwidh test
protocol tcp # Run a TCP bandwidth test
interval 14400 # Run the test every 4 hours
duration 20 # Perform a 20 second test
</test_spec>
<test_spec bwctl_24h_udp_test>
# Define a test spec for testing UDP bandwidth once every 24 hours
type perfsonarbuoy/bwctl
tool bwctl/iperf3
protocol udp # Run a UDP bandwidth test
interval 86400 # Run the test every 24 hours
duration 10 # Perform a 10 second test
udp_bandwidth 50000000 # Perform a 50Mbps test
</test_spec>
<test_spec owamp_test>
# Define a test spec for doing jitter, loss and latency testing
type perfsonarbuoy/owamp # Perform a constant low-bandwidth OWAMP test
packet_interval 0.1 # Send 10 packets every second (i.e. pause 0.1 seconds between each packet)
sample_count 600 # Send results back every 60 seconds (once every 600 packets)
bucket_width 0.001 # The granularity of the measurements
</test_spec>
<test_spec ping_test>
# Define a test spec for doing ICMP jitter, loss and latency testing every 5 minutes
type pinger # Perform PingER tests
test_interval 300 # Perform a test every 5 minutes
packet_count 10 # Send 10 packets for each test
packet_interval 1 # Pause 1 second between each packet sent
packet_size 1000 # The size of the packets (not include the IP headers)
</test_spec>
<test_spec traceroute_test>
# Define a test spec for running traceroute tests every 10 minutes
type traceroute # Perform a traceroute test
test_interval 600 # Run the test every 5 minutes
packet_size 40 # The size of the packets (not include IP/UDP headers)
</test_spec>
# There can be one or more 'group' blocks. These contain a list of hosts that
# will be used in a test.
<group dice_latency_hosts>
# A group type 'mesh' means that all hosts in the list will test to all other
# hosts in the list. The other available options is 'star' configuration
# detailed below.
type mesh
# The members contain a list of addresses that will be used in the tests.
# These *must* correspond to addresses in host blocks above.
member perfsonar.newy.example.internet2.edu
member perfsonar.salt.example.internet2.edu
member newy-owamp.example.es.net
member chic-owamp.example.es.net
</group>
<group dice_bandwidth_hosts>
type mesh
member perfsonar.newy.example.internet2.edu
member perfsonar.salt.example.internet2.edu
member newy-pt1.example.es.net
member chic-pt1.example.es.net
</group>
<group dice_latency_star>
# A group type 'star' means that the center_address host tests with all other
# hosts in the list.
type star
center_address perfsonar.newy.example.internet2.edu
# The members contain a list of addresses that will be used in the tests.
# These *must* correspond to addresses in host blocks above.
member newy-owamp.example.es.net
member chic-owamp.example.es.net
</group>
# There can be one or more 'test' blocks that represent tests that the mesh
# should be performing. These combine the group elements defined above with
# test parameters defined above.
<test>
description Traceroute Test Between DICE Latency Hosts
group dice_latency_hosts
test_spec traceroute_test
# For members who are not running the required mesh configuration agent, a
# list of 'no_agent' elements can be specified.
# no_agent chic-owamp.example.es.net
# no_agent newy-owamp.example.es.net
</test>
<test>
description TCP BWCTL Test Between DICE Bandwidth Hosts
group dice_bandwidth_hosts
test_spec bwctl_4h_tcp_test
</test>
<test>
description UDP BWCTL Test Between DICE Bandwidth Hosts
group dice_bandwidth_hosts
test_spec bwctl_24h_udp_test
</test>
<test>
description OWAMP Test Between DICE Latency Hosts
group dice_latency_hosts
test_spec owamp_test
</test>
<test>
description Ping Test Between DICE Latency Hosts
group dice_latency_hosts
test_spec ping_test
</test>
<test>
description Traceroute Test Between DICE Bandwidth Hosts
group dice_bandwidth_hosts
test_spec traceroute_test
</test>
# Host classes can be used to configure tests in a more dynamic manner. A host
# class can employ a variety of filters to define the addresses used in a given
# test.
<host_class>
# The name field is used to identify a host class later.
name internet2
# The host class must have one or more 'data_source' blocks. These define
# where the agents will go looking for addresses.
<data_source>
# The 'current_mesh' data source tells the agent to look for
# addresses in the mesh where the host class is defined
type current_mesh
</data_source>
# The host class may have a 'match' block with one or more 'filter' blocks
# in it. These filters will be used to choose which addresses, from all the
# addresses found in the various data sources, will be included in this
# host class.
<match>
<filter>
# The 'organization' filter allows filtering the addresses based on
# the organization. Right now the only attribute that can be
# filtered on is 'description'. This will perform an 'inexact' match
# (i.e. it will search for the phrase, lower-cased, in the
# organization's description).
type organization
description internet2
</filter>
</match>
#Define the measurement archives matching agents should use to store tests
<host_properties>
<measurement_archive>
type perfsonarbuoy/owamp
read_url http://ma.example/esmond/perfsonar/archive
write_url http://ma.example/esmond/perfsonar/archive
</measurement_archive>
<measurement_archive>
type perfsonarbuoy/bwctl
read_url http://ma.example/esmond/perfsonar/archive
write_url http://ma.example/esmond/perfsonar/archive
</measurement_archive>
</host_properties>
</host_class>
<host_class>
name esnet
<data_source>
type current_mesh
</data_source>
<match>
<filter>
type organization
description esnet
</filter>
</match>
</host_class>
<group inter_organization_mesh>
# A group type 'disjoint' means that the 'a_member' addresses will test to
# all the 'b_member' addresses and vice versa.
type disjoint
# By specifying the member as a "host_class", the agent will include all the
# addresses that are matched by the host class.
a_member host_class::internet2
b_member host_class::esnet
</group>
<test>
description Inter-Organization Traceroute Tests Between Internet2 And ESnet Hosts
group inter_organization_mesh
test_spec traceroute_test
</test>