TNF is a framework made by a set of tools that allows to deploy real network experiments in a simple and automated way while minimizing the time required for distributed testbeds set up.
A distributed database maintains the informations about topology, experiment settings and logfiles obtained in the experiments. Therefore, all log files involved in the experiments, and distributed among the nodes, can be retrieved in a transparent manner ("just a button click") using a simple API call made available by the framework.
An overlay Peer-to-Peer network is used for setting up experiments: all nodes involved in an experiment may contact a central node (the supernode) where information about the topology of the overlay network are stored. A Service Discovery system will help the researcher to find services which he needs for his experiments.
The framework will be basically built upon the following entities:
An experiment involves a set of Nodes or hosts running a set of Services or, in the NS-2 jargon, sinks/agents.
In the TestNet Framework (TNF) an experiment is defined as "the interaction between services of different Nodes or within a single Node under the control of a special Node which is called Experiment Manager".
Each service produces logfiles in order to evaluate performances indexes so that the Experiment Manager will store all logfiles produced by each nodes involved in the experiment.
The TestNet Framework is built upon the following tools:
The Testnet Overlay Network (TON) is a network built on Node Monitors which communicate between them using the RPC protocol.
The Node Monitor (NM) manages services available on the node itself and executes commands received via the RPC interface sent by other nodes in the overlay network.
The Experiment Manager (EM) runs distributed experiments making basically RPC calls to NMs using a simple scripting language. Moreover EM can ask NMs services available on the node in order to search for specific services in the overlay network.
Services are the core of the framework, they have to export an interface for logging (LogI) facilities and to manage start/stop of the service. We can define a service as any piece of software that exports those two interfaces to the node manager. The NM communicate to each service via the DBUS inter process communication (IPC) facility.
Applications that use libnetmeas automatically export the Logging Interface so the only other requirement to let the application be in the framework is to write a simple wrapper that implements the start/stop interface.