# White Rabbit Project

White Rabbit is the name of a collaborative project including CERN, GSI Helmholtz Centre for Heavy Ion Research and other partners from universities and industry to develop a fully deterministic Ethernet-based network for general purpose data transfer and sub-nanosecond accuracy time transfer. Its initial use was as a timing distribution network for control and data acquisition timing of the accelerator sites at CERN as well as in GSI's Facility for Antiproton and Ion Research (FAIR) project. The hardware designs as well as the source code are publicly available. The name of the project is a reference to the White Rabbit appearing in Lewis Carroll's novel Alice's Adventures in Wonderland.

## Focus and goals

White Rabbit provides sub-nanosecond synchronization accuracy, which formerly required dedicated hard-wired timing systems, with the flexibility and modularity of real-time Ethernet networks. A White Rabbit network may be used solely to provide timing and synchronization to a distributed electronic system, or be used to provide both timing and real-time data transfer.
The White Rabbit Project focuses on:
* Sub-nanosecond accuracy: synchronization of more than 1000 nodes via fibre or copper connections of up to 10 km of length.
* Flexibility: creates a scalable and modular platform with simple configuration and low maintenance requirements.
* Predictability and Reliability: allows the deterministic delivery of highest priority messages by using Class of service.
* Robustness: no losses of high-priority system device control messages.
* Open source hardware and software: to avoid vendor lock-in.
Another characteristic of this project is that it operates completely on open source with both the hardware and software sources available.

## Technologies

To achieve sub-nanosecond synchronization White Rabbit utilizes Synchronous Ethernet (SyncE) to achieve syntonization and IEEE 1588 (1588) Precision Time Protocol (PTP) to communicate time and a module for precise phase difference measurement between the master reference clock and the local clock based on phase frequency detectors.
White Rabbit uses the Precision Time Protocol to achieve sub-nanosecond accuracy. A two-way exchange of the Precision Time Protocol synchronization messages allows precise adjustment of clock phase and offset. The link delay is known precisely via accurate hardware timestamps and the calculation of delay asymmetry.

## White Rabbit applications

At CERN White Rabbit was used for the new control system of the injector chain.
At GSI White Rabbit will become the timing system of the FAIR complex.
The KM3NeT neutrino telescope uses White Rabbit to synchronise the detector units.
The EISCAT 3D radar will utilise White Rabbit for synchronization in the beam-forming network.
About 6000 detector nodes for the LHAASO (Large High Altitude Air Shower Observatory) experiment are synchronized by a White Rabbit network.
At least two Cosmic Microwave Background research programs (Simons Observatory, and CMB-S4) are considering White Rabbit for the timing of their data acquisition and control systems.
Several companies have begun to commercialize White Rabbit for commercial applications by developing their own White Rabbit hardware and software.
The first white rabbit element on the white rabbit project was the "white rabbit switch", financed by the government of Spain and CERN, and produced by Seven Solutions.
In years 2015-2016 White Rabbit was successfully deployed by Horizon 2020 Project DEMETRA service #3 and tested for distribution Galileo precise UTC using ground fiber service.

## A White Rabbit timing network

A white rabbit timing network consists of three important parts.
* Precision Time Protocol - The IEEE1588 or the Precision Time Protocol is a time protocol designed to provide synchronization accuracy of 1 microsecond or even less, particularly for use in Industrial networks and Research labs where accurate synchronization is necessary. An accuracy of sub nanoseconds is ideally possible in PTP networks but, in practice, the master-slave and the slave-master links may be asymmetric and the resolution of the PTP time stamps is limited. Hence, the obtained synchronization accuracy in PTP networks is limited.
* Layer I syntonization using SyncE - Just like the SyncE standard, the mechanism to operate all the nodes at the same frequency works at the physical layer level. Hence, there is no effect on data transfers because of this. The main idea of layer I syntonization is that the clocks in the network are not free running at a frequency, but instead, should be locked to a reference standard and be traceable. So, a network using Layer I syntonization has a hierarchy in the network: there is a master node which sends the frequency information in data streams and all other nodes in the system extract this information from the data stream and have a phase-locked loop which makes them run at exactly this frequency. This removes the jitter and frequency drift in the clocks that is responsible for the offset.
* Phase measurement - As explained before, the frequency of the local node is disciplined using the clock signal extracted from the data stream sent by the master node. Then, the local node sends back its local clock signal to the master. As the local and master clock frequencies are locked, this clock signal is just a delayed version of the master clock signal. By calculating the phase offset between these two signals, a very accurate measurement for the particular link delay could be made.
After finding the link delay, this could be used in the conventional PTP algorithm to achieve a very high accuracy.
Components of a White Rabbit network are multi-port White Rabbit Switches and single or dual-port White Rabbit nodes. Both components may be added dynamically to the network. Cable length and other delay factors are automatically compensated by the Precision Time Protocol algorithms. Though conventional Gigabit Ethernet devices may be connected as well, only White Rabbit devices take part in network timing and synchronization.