# 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).
name Aaron Brown
email aaron@example.internet2.edu
name Andy Lake
email andy@example.es.net
# 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.
# 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.
name Aaron Brown
email aaron@example.internet2.edu
# 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'.
## A human-readable description of where the site is located (e.g. a city or state)
city New York
state NY
# The latitude and longitude where the site is located
latitude 40.720
longitude -74.005
# Individual sites can have specific administrators associated with them.
name Matt Zekauskas
email matt@example.internet2.edu
# There can be one or more 'host' blocks. Each 'host' block corresponds to
# a single host at a site.
# 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.
type traceroute
read_url http://perfsonar.newy.example.internet2.edu/esmond/perfsonar/archive
write_url http://perfsonar.newy.example.internet2.edu/esmond/perfsonar/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
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
type pinger
read_url http://perfsonar.newy.example.internet2.edu/esmond/perfsonar/archive
write_url http://perfsonar.newy.example.internet2.edu/esmond/perfsonar/archive
city Salt Lake City
state UT
latitude 40.757
longitude -111.953
description perfSONAR Salt Lake City
address perfsonar.salt.example.internet2.edu
type traceroute
read_url http://perfsonar.salt.example.internet2.edu/esmond/perfsonar/archive
write_url http://perfsonar.salt.example.internet2.edu/esmond/perfsonar/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
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
type pinger
read_url http://perfsonar.salt.example.internet2.edu/esmond/perfsonar/archive
write_url http://perfsonar.salt.example.internet2.edu/esmond/perfsonar/archive
description ESnet
name Andy Lake
email andy@example.es.net
name Brian Tierney
email bltierney@example.es.net
# 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.
type traceroute
read_url http://ps-db.example.es.net/esmond/perfsonar/archive
write_url http://ps-db.example.es.net/esmond/perfsonar/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
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
type pinger
read_url http://ps-db.example.es.net/esmond/perfsonar/archive
write_url http://ps-db.example.es.net/esmond/perfsonar/archive
city New York
state NY
latitude 40.720
longitude -74.005
address newy-pt1.example.es.net
address newy-owamp.example.es.net
city Chicago
state IL
latitude 41.896
longitude -87.643
address chic-pt1.example.es.net
address chic-owamp.example.es.net
# 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.
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.
address dice-tester.example.edu
# 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.
latitude 41.896
longitude -87.643
# 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.
# 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
# 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
# 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
# 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)
# 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)
# There can be one or more 'group' blocks. These contain a list of hosts that
# will be used in a test.
# 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
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
# 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
# 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.
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
description TCP BWCTL Test Between DICE Bandwidth Hosts
group dice_bandwidth_hosts
test_spec bwctl_4h_tcp_test
description UDP BWCTL Test Between DICE Bandwidth Hosts
group dice_bandwidth_hosts
test_spec bwctl_24h_udp_test
description OWAMP Test Between DICE Latency Hosts
group dice_latency_hosts
test_spec owamp_test
description Ping Test Between DICE Latency Hosts
group dice_latency_hosts
test_spec ping_test
description Traceroute Test Between DICE Bandwidth Hosts
group dice_bandwidth_hosts
test_spec traceroute_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.
# 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.
# The 'current_mesh' data source tells the agent to look for
# addresses in the mesh where the host class is defined
type current_mesh
# 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.
# 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
#Define the measurement archives matching agents should use to store tests
type perfsonarbuoy/owamp
read_url http://ma.example/esmond/perfsonar/archive
write_url http://ma.example/esmond/perfsonar/archive
type perfsonarbuoy/bwctl
read_url http://ma.example/esmond/perfsonar/archive
write_url http://ma.example/esmond/perfsonar/archive
name esnet
type current_mesh
type organization
description esnet
# 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
description Inter-Organization Traceroute Tests Between Internet2 And ESnet Hosts
group inter_organization_mesh
test_spec traceroute_test