Computer Laboratory

OCaml Labs

Trilogy 2

Trilogy2 aims to develop a new Internet architecture based on the concept of the liquid network. A liquid system should ideally allow resources including bandwidth, storage and processing to be used by any application, whether they are contributed by network operators, data centre operators or end systems. Resources form a shared pool and applications can scale up and down in multiple dimensions (storage, processing, bandwidth and energy usage) as needed, in a continuous effort to enhance the users’ experience as measured in terms of key metrics such as delay and battery life.

The Cambridge participation is primarily centered around three efforts:

  • The Mirage library operating system that provides the policy-free mechanism to implement the liquid OS.
  • A highly adaptive PVTCP transport protocol that takes advantage of heterogenous network connections.
  • The Irminsule storage substrate that cleanly separates block storage form

Trilogy 2 is a 3-year EU STREP project that addresses the "Pervasive and Trusted Network and Service Infrastructures: Future Networks" challenge. The tasks below and include our collaborators at OnApp.



Sep '12Oct '12Nov '12Dec '12Jan '13Feb '13Mar '13Apr '13May '13Jun '13Jul '13Aug '13Sep '13Oct '13Nov '13Dec '13Jan '14Feb '14Mar '14Apr '14
Vsevolod Stakhov Polyversal TCP prototype
Thomas Gazagnaire Irminsule prototype

Polyversal TCP prototype

In Progress by Vsevolod Stakhov (Oct 2012 - Feb 2014)
Github   Position paper  

Over the last decade TCP has become the de facto "narrow waist" of the Internet; a one-size-fit-all transport that is poorly suited to the needs of modern applications. As middle-boxes have become ubiquitous, it has become nigh impossible for alternative transports to exist, and so application developers have come to view opening a TCP socket as the only reliable way to connect to a server. Some recent proposals circumvent this problem by camouflaging new transports so that they appear like TCP to middleboxes.

Polyversal TCP aims to unify many different strands of TCP to make it suitable to work as an extensible one-size-fits-all transport that can take advantage of heterogenous interconnects such as shared memory or virtual machine channels. This will in turn greatly simplify the construction of complex distributed systems being built elsewhere in OCaml Labs.

Irminsule prototype

In Progress by Thomas Gazagnaire (Mar 2013 - Feb 2014)
Github   Github  

Irminsule is a distributed filesystem and block store that follows the same design principles as Git. The design consists of three main components:

  • a low-level immutable and consistent key/value data-store
  • a DAG persisted in that datastore; and
  • a tag store which associate names to keys of the low-level data-store.

Irminsule is written in pure OCaml, and can thus be compiled to a variety of backends (including Javascript, and Mirage microkernels). Unlike the git frontend, applications can directly iterate over the object graph.

The immutability of the low-level block store makes it significantly easier to apply replication and network coding techniques to improve resilience via replication, and to optimise scheduling across many hosts using MPTCP-style congestion control.