Measurement Brokers - adjacentlink/opentestpoint GitHub Wiki

An OpenTestPoint deployment can use one or more brokers in order to create a tiered hierarchy of discovery and probe interfaces. This hierarchy makes it possible to deploy a small group of well defined brokers to minimize the amount of client tool configuration and connections necessary to interact with an OpenTestPoint deployment.

The below listing shows sample application configuration for the otestpoint-broker. The otestpoint-broker will proxy discovery requests and probe messages for all the Controllers contained in its configuration.

In this example from EMANE Tutorial Demo 1, there are 10 nodes running otestpointd that will be available via this broker instance.

<otestpoint-broker discovery="localhost:9001" publish="localhost:9002">
  <testpoint discovery="node-1:8881" publish="node-1:8882"/>
  <testpoint discovery="node-2:8881" publish="node-2:8882"/>
  <testpoint discovery="node-3:8881" publish="node-3:8882"/>
  <testpoint discovery="node-4:8881" publish="node-4:8882"/>
  <testpoint discovery="node-5:8881" publish="node-5:8882"/>
  <testpoint discovery="node-6:8881" publish="node-6:8882"/>
  <testpoint discovery="node-7:8881" publish="node-7:8882"/>
  <testpoint discovery="node-8:8881" publish="node-8:8882"/>
  <testpoint discovery="node-9:8881" publish="node-9:8882"/>
  <testpoint discovery="node-10:8881" publish="node-10:8882"/>
</otestpoint-broker>

Issuing an otestpoint-discover command pointing to an otestpoint-broker instance running the above configuration produces the below output. More information on aotestpoint-broker can be found using the --help option.

[me@host 1]$ otestpoint-discover localhost:9001
tcp://127.0.0.1:9002
EMANE.PhysicalLayer.Counters.General.node-10
EMANE.PhysicalLayer.Counters.General.node-6
EMANE.PhysicalLayer.Counters.General.node-7
EMANE.PhysicalLayer.Counters.General.node-8
EMANE.PhysicalLayer.Counters.General.node-9
EMANE.PhysicalLayer.Tables.Events.node-10
EMANE.PhysicalLayer.Tables.Events.node-6
EMANE.PhysicalLayer.Tables.Events.node-7
EMANE.PhysicalLayer.Tables.Events.node-8
EMANE.PhysicalLayer.Tables.Events.node-9
EMANE.PhysicalLayer.Tables.Status.node-10
EMANE.PhysicalLayer.Tables.Status.node-6
EMANE.PhysicalLayer.Tables.Status.node-7
EMANE.PhysicalLayer.Tables.Status.node-8
EMANE.PhysicalLayer.Tables.Status.node-9
EMANE.RFPipe.Counters.General.node-1
EMANE.RFPipe.Counters.General.node-10
EMANE.RFPipe.Counters.General.node-2
EMANE.RFPipe.Counters.General.node-3
EMANE.RFPipe.Counters.General.node-4
EMANE.RFPipe.Counters.General.node-5
EMANE.RFPipe.Counters.General.node-6
EMANE.RFPipe.Counters.General.node-7
EMANE.RFPipe.Counters.General.node-8
EMANE.RFPipe.Counters.General.node-9
EMANE.RFPipe.Tables.Events.node-1
EMANE.RFPipe.Tables.Events.node-10
EMANE.RFPipe.Tables.Events.node-2
EMANE.RFPipe.Tables.Events.node-3
EMANE.RFPipe.Tables.Events.node-4
EMANE.RFPipe.Tables.Events.node-5
EMANE.RFPipe.Tables.Events.node-6
EMANE.RFPipe.Tables.Events.node-7
EMANE.RFPipe.Tables.Events.node-8
EMANE.RFPipe.Tables.Events.node-9
<...truncated for listing...>

Each otestpointd instance is still directly reachable even when configured behind an otestpoint-broker instance.