| # Overnet - Fuchsia Overlay Network |
| |
| Overnet is a suite of protocols, libraries and binaries that provide routed |
| and structured overlay networking to Fuchsia. |
| |
| Overnet provides a mesh network that sits atop other protocols, such as |
| traditional networking stacks and provides message routing. |
| |
| The Overnet implementation is intended to be portable - that is it can be |
| built on a wide variety of operating systems and provides cross-system |
| connectivity. |
| |
| ## Getting Started |
| |
| Users wishing to establish a host-target Overnet network are best serviced |
| using the `fx overnet` tool. The process is as follows: |
| |
| - Start `fx ascendd`. Ascendd provides the host "Overnet node". |
| - Start `fx overnet`. This creates a host-pipe connection between the host |
| `ascendd` and the current `fx` target device. |
| - Run an Overnet program, for example: `fx onet list-peers`. |
| |
| ## Tools and Libraries |
| |
| In the subtree, users will find the following items: |
| |
| ### Examples |
| |
| There are two examples available: |
| |
| - **echo** a simple echo server and client. |
| - **interface_passing** an example demonstrating sub-protocol routing (handle passing). |
| |
| ### Libraries |
| |
| **core** is the central implementation of Overnet providing facilities for |
| programs operating either/both as server or client. The implementation |
| defines the protocols for routing, secure transport, service discovery and |
| many other features. |
| |
| **hoist** provides a set of portability shims that when used enable a single |
| code base to be usable in both a Fuchsia environment, as well as a Unix style |
| environment (wherever the underlying IO reactor primitives operate). Hoist |
| abstracts over service connections. |
| |
| ### Overnetstack |
| |
| Overnetstack is a Fuchsia component that hosts Overnet service routing on a |
| Fuchsia device. It also implements node and service discovery via mDNS. |
| |
| ### Tools |
| |
| **ascendd** The ascend daemon is a *host* (Unix/POSIX) program that provides |
| Overnet node capabilities on a non-Fuchsia system. It binds to a Unix socket |
| that Overnet client programs can use to establish Overnet connections, and |
| both export and consume Overnet services. |
| |
| **onet** The onet tool is a debugging tool for Overnet that performs a variety |
| *of functions, such as enumerating an Overnet network. It also provides a |
| *connection proxying facility that can be used in concert with **ascendd** to |
| *establish a connection between ascendd and a Fuchsia target device. |