While virtual worlds are our motivating application, the services provided by Forest are also suitable for distributed cyber-physical systems. We can view such systems as a set of sensors, whose role is to measure and report on the values of external signals, and a set of controllers, whose role is to manage some external device or mechanism. Sensors issue periodic reports and controllers monitor reports from one or more sensors, to enable them to make appropriate control decisions. We require network services that enable sensors and controllers to communicate reliably, while allowing maximal flexibility in the specific communication pattern. Examples of such systems range from large-scale chemical plants to automated rail and highway systems, to smart power grids. The central requirement that these applications share is the need for real-time status reports that are delivered in a timely and non-stop fashion, even as the pattern of communication changes.
The core primitive in Forest is a tree-structured channel, called a comtree that supports both unicast and multicast packet delivery. Applications use comtrees as private networks, that are logically isolated and can be dynamically provisioned to meet application requirements. Application endpoints subscribe to multicast groups within their comtree using a lightweight signaling mechanism that enables endpoints to join/leave multicast groups many times per second. This enables each component to obtain reports from many different sources and to rapidly switch among sources
This project is creating an implementation of Forest that is intended to be deployed and made available for general use by anyone interested in creating applications that leverage the Forest network services. This site provides background information on Forest and will be used to help track progress on the project.
To see the source code for Forest click here.
The Forest code uses some data structures from the grafalgo library. To go to the grafalgo repository, click here.
To see doxygen-generated documentation click here.
To join our discussion group, click here.
This project receives support from the National Science Foundation (grant #CNS-1016356). Any opinions, findings and conclusions or recommendations expressed on this site are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.