Layered Architecture

iceoryx2 is organized into a layered architecture, which enables a clear separation of concerns and modular design. Each layer builds upon components provided by lower layers.

iceoryx2-services Ready-made services iceoryx2-link Gateways • Tunnels iceoryx2-userland Toolkit • Record & replay iceoryx2 User API • Services • Ports • Execution control iceoryx2-cal Concepts • Storage • Channels • Events iceoryx2-bb Building blocks • Algorithms • Containers • Utilities iceoryx2-pal Platform abstraction • POSIX • OS-specific APIs Operating System Linux • QNX • Windows • Hardware abstraction • etc

Software Layers in the Architecture of iceoryx2

Ready-Made Services (iceoryx2-services)

Optional services that applications can build on, such as the discovery service, which provides an interface for applications to be notified when services are created, changed or removed. They run in separate processes or are embedded in applications.

Link (iceoryx2-link)

Extends iceoryx2 communication beyond its shared memory domain through a backend. The gateway backend connects to other middlewares, and the tunnel backend connects to other iceoryx2 systems.

User Toolkit (iceoryx2-userland)

Tools for developing, testing and debugging iceoryx2 applications, such as record and replay.

User API (iceoryx2)

The public interface of iceoryx2. It provides nodes that represent participants, services that connect them, ports that exchange data according to the messaging pattern of their service, and the waitset that drives application execution. Internally, it combines implementations of the concepts from the layer below into a working deployment.

Concept Abstraction Layer (iceoryx2-cal)

The concepts shared memory communication is built from, such as storage, channels and events. Each concept has multiple implementations, which are combined to make up an iceoryx2 deployment.

Building Blocks (iceoryx2-bb)

Algorithms, containers and utilities that are independent of iceoryx2 and shared memory communication. They form a standard library for iceoryx2 that is suitable for certification.

Platform Abstraction Layer (iceoryx2-pal)

The functionality iceoryx2 requires from the platform it runs on. It currently comes in a POSIX flavor, implemented for all supported platforms.

Further platforms are supported by implementing the abstraction with their native APIs.

Further Reading

Understand Shared Memory

Build an intuition for what shared memory communication entails.

Shared Memory
Understand the Communication Model

Get familiar with the components used to set up communication.

Communication Model
Understand Links

Get familiar with how communication is extended beyond shared memory.

Links