Skip to content

Design Overview

Richard Warburton edited this page Mar 17, 2014 · 12 revisions

Design Overview

So how does Aeron implement its Protocol? This diagram shows a the communication for a channel with a single producer and a single consumer. Channels support multicast through multiple consumers.

![Bicycle Diagram](https://github.com/real-logic/Aeron/wiki/img/Aeron Design Diagram.png)

  1. Aeron uses an underlying unreliable media protocol, which could be anything, eg: UDP or Infiniband.
  2. Aeron has a Media Driver which implements support for these protocols. It can operate within the same process as the client code or outside. Media drivers can be implemented using Java, C or even FPGAs and sit within either user or kernel space.
  3. Communication between the Client API/Stack and the Media Driver is implemented as a messaging protocol on a series of ring buffers. This includes a control channel for administrative/internal communication. These use memory mapped file based shared memory.
  4. The Client API/Stack sits in process. After configuration, the client stack is abstract of the Media Driver. This presents an API to the client code to send or receive messages.