User Manual, Developers Guide and API Documentation

openWNS Probing Subsystem

Subpages

Measurement Publication by using the ContextCollector

Introduction

In a nutshell, openWNS now decouples the generation and publication of measurements from their processing, may that be logging, filtering, sorting or simply storing them. In the following, it will shortly be explained what generation, publication and processing are about.

Generation of Measurements

Generating measurement values is up to you, the Implementer of a certain, class, module, node, whatever that might be. Measurements may currently be everything that can be represented by a double value, like SINR, Interference, Power values, delay times, packet sizes, throughput figures ...

Publication of Measurements

Assuming you have obtained a measurement, you would like to publish it so it can be handled in any way you desire. When publishing the measurement, it is not necessary to know in which way and by whom it is being processed. However, the entities that do process the measurement may require certain additional information about the circumstances under which the measurement was taken, e.g. which Node has taken the measurement, at which point in the scenario it was taken, what kind of node took it, which Traffic Category the measured packet belongs to, where the packet originated from, etc. etc.

We refer to this kind of information as the so called Context of the measurement. Hence, the process of publishing the measurement involves gathering and compiling this Context and then forwarding everything to the appropriate processing entities. All this is handled by the ContextCollector. The only information the ContextCollector needs to have about the processing of the measurements is a configurable name of the ProbeBusID into which to forward the measurement and the context info.

Entry points to the existing ProbeBusses are governed by a global Registry called the ProbeBusRegistry. They may be accessed via the aforementioned name.

NOTE that the ProbeBusses are centralized, while the publication of measurements is distributed. This means that all entities that take and publish measurements of the same type have a ContextCollector of their own, but all these ContextCollectors forward their measurements and context into the same ProbeBus.

See Measurement Publication by using the ContextCollector for more information on the ContextCollector

Processing of Measurements

Processing of measurements is accomplished by the ProbeBus. The ProbeBus is an object that supports hierarchical chaining to form trees of ProbeBusses. The measurement and the context are inserted at the root of the tree and each ProbeBus may store and forward the received measurement, depending on the outcome of an internal decision unit that determines whether or not the current node accepts the measurement. By appropriate combination and parameterization, the said tree can then be used to filter and thus sort the measurements based on the available context information. openWNS provides a toolbox of different probe::bus::ProbeBus ProbeBus implementations that can be flexibly combined to accomplish all kinds of measurement processing tasks. In addition, the simple ProbeBus interface and the very generic context information concept allow for the quick prototyping of tailor-made solutions.

Measurement Publication by using the ContextCollector

The ContextCollector serves the task of gathering context information. To do so, it creates an empty Context object and asks the ContextProviderCollection to add information into that object. After that, it forwards the measured value and the Context to the (root of a) ProbeBus hierarchy. When being constructed, the ContextCollector relies on two mandatory parameters:

  1. A ContextProviderCollection, of which the ContextCollector will make a copy for its internal purposes. (The copying allows to instantiate a number of ContextCollectors with the same instance of the local ContextProviderCollection)
  2. The unique, identifying name of the ProbeBus into which to forward the measurements (under this name the ContextCollector will look up in the wns::probe::bus::ProbeBusRegistry This procedure is illustrates in the sequence diagram below
    inline_mscgraph_1
    1. In this example the MeasurementSource creates the ContextCollector. The creation can be done by any object. The MeasurementSource only needs to know its ContextCollector object to place the put() call.
    2. If only the measurement is used when putting the compound is set to an empty compound automatically. A description on gathering context from compounds will follow
    3. The ContextProvider may add any number of key, value pairs to the Context

Generated on Wed Feb 8 03:32:26 2012 for openWNS by  doxygen 1.5.5