Nodes and backplanes - norwegianblues/norwegianblues GitHub Wiki

Introduction

When creating a platform like Parrot where we can model a number of different nodes talking to each other over some interconnect we needed to decide on a level of abstraction where a message leaves the "real" world and enters the simulation (and vice versa where a message leaves the simulation and enters reality).

For various reasons, the split ended up on the socket level.

Benefits of abstracting the sockets

In networks, nodes commonly communicates over sockets and doesn't have to worry about the exact details of transportation, they send and receive from their respective endpoints. In Parrot, nodes communicate using Parrot sockets (see API reference) that have similar semantics to normal sockets, but allows us to implement the transport between nodes any way we like. In Parrot, the component responsible for data transport between sockets is called the backplane.

Different backplanes can have different properties, and selecting a particular implementation can be made by the -b <backplane> flag when invoking a simulation.

For examples of using Parrot sockets, see e.g. Writing components, or the Tutorials.

Furthermore, many software stacks build on top of the socket layer, and thus becomes easily portable to the Parrot environment. The process of porting a piece of software to run in Parrot is outlined in Porting existing code.

⚠️ **GitHub.com Fallback** ⚠️