Introduction to Forest

is an overlay network designed for large distributed real-time applications such as online virtual worlds. We're particularly interested in virtual worlds that can provide consistently high-quality interaction making them suitable for supporting real-world collaboration. We're also interested in enabling virtual worlds with many millions of users with a complexity rivaling real-world environments. The key characteristic of our target applications is that they involve large numbers of entities (such as user avatars in a virtual world) that must share their real-time status with a constantly changing subset of other entities. For high quality real-time interaction, status updates must be issued tens of times per second and must be delivered non-stop, even as the specific pattern of communication changes. The network services provided by Forest are designed to ensure the kind of consistent performance needed to support high quality, large-scale virtual worlds.

While virtual worlds are our motivating application, the services provided by Forest are also suitable for d
istributed 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.

Recent Announcements

  • Comtree Controller and Display A completely new (and much more complete) version of the comtree controller has been added, along with a new display program which displays comtrees on a network map, allowing you ...
    Posted May 26, 2012, 10:32 AM by Jon Turner
  • Reorganization of source code Just completed a fairly thorough re-organization of the source code. Also, have added more doxygen comments, although there is still much to do here. And there's still some ...
    Posted May 24, 2011, 11:04 AM by Jon Turner
  • under construction Just putting the site together. Stay tuned
    Posted May 10, 2011, 7:39 AM by Jon Turner
Showing posts 1 - 3 of 3. View more »