.. include:: replace.txt Design ****** The DCF consists of three basic classes: * *Probe* is a mechanism to instrument and control the output of simulation data that is used to monitor interesting events. It produces output in the form of one or more |ns3| trace sources. Probe objects are hooked up to one or more trace *sinks* (called *Collectors*), which process samples on-line and prepare them for output. * *Collector* consumes the data generated by one or more Probe objects. It performs transformations on the data, such as normalization, reduction, and the computation of basic statistics. Collector objects do not produce data that is directly output by the ns-3 run; instead, they output data downstream to another type of object, called *Aggregator*, which performs that function. Typically, Collectors output their data in the form of trace sources as well, allowing collectors to be chained in series. * *Aggregator* is the end point of the data collected by a network of Probes and Collectors. The main responsibility of the Aggregator is to marshal data and their corresponding metadata, into different output formats such as plain text files, spreadsheet files, or databases. All three of these classes provide the capability to dynamically turn themselves on or off throughout a simulation. Any standalone |ns3| simulation run that uses the DCF will typically create at least one instance of each of the three classes above. .. _dcf-overview: .. figure:: figures/dcf-overview.* Data Collection Framework overview The overall flow of data processing is depicted in :ref:`dcf-overview`. On the left side, a running |ns3| simulation is depicted. In the course of running the simulation, data is made available by models through trace sources, or via other means. The diagram depicts that probes can be connected to these trace sources to receive data asynchronously, or probes can poll for data. Data is then passed to a collector object that transforms the data. Finally, an aggregator can be connected to the outputs of the collector, to generate plots, files, or databases. .. _dcf-overview-with-aggregation: .. figure:: figures/dcf-overview-with-aggregation.* Data Collection Framework aggregation A variation on the above figure is provided in :ref:`dcf-overview-with-aggregation`. This second figure illustrates that the DCF objects may be chained together in a manner that downstream objects take inputs from multiple upstream objects. The figure conceptually shows that multiple probes may generate output that is fed into a single collector; as an example, a collector that outputs a ratio of two counters would typically acquire each counter data from separate probes. Multiple collectors can also feed into a single aggregator, which (as its name implies) may collect a number of data streams for inclusion into a single plot, file, or database.