Replication for the Global Data Plane
Replication for the Global Data Plane is a class research project for Advanced Topics in Computer Systems in which Steven Wu, Tony Yang, and I designed and implemented a distributed replication system for the data model presented by the Global Data Plane.
What is the Global Data Plane?
The rise of the Internet of Things (IoT) has brought a large increase in the number of (sometimes personal) devices we have connected to the internet. In my apartment, I can talk to my Google Home to control my lamp through a connected power outlet. You might also think of devices such as Fitbits, Nest security cameras, and smart locks.
These devices collect a large amount of personal information about us — where we are, what we say, what we look like. This wide spread data collection has large privacy implications, and has already raised public concern. Security is critical for these devices, yet it is not always at the forefront of priorities.
The Global Data Plane (GDP) presents a new infrastructure that can provide security and the ability to scale in number to these devices and more. The basis of GDP is a secure log. Any user who is authenticated can read or subscribe to the log, but only a single unique user can add data to the log
Replication for the Global Data Planes synchronizes data across multiple peers through an anti-entropy protocol. A peer can be thought of as one computer running the replication software that is part of a larger group of peers. In an anti-entropy protocol, a peer chooses another peer at random and checks if the peer knows about any new information in the log. Research in anti-entropy protocols has roots in epidemiology, due to the similarities in the spread of disease. Changes from a single peer continually propagate out until all peers contain the change, much like an epidemic could spread through a population.
We choose to support a log that prioritizes the ability for a user to write to the log as much as possible. This can lead to logs with large differences between each other, such as branching logs and holes when missing specific records. Our protocol views each log as a graph of connected nodes to efficiently identify which records are missing from which logs. The graph view helps to reduce the amount of data sent between peers when determining missing records.
We implemented Replication for the Global Data Plane in Golang 1.11 with approximately 1,800 lines of code. You can find our code on GitHub at scottnuma/gdp-replicate. One of the significant challenges in implementing and coordinating the programming of the protocol was finding the right layers of abstraction. Some abstractions we were able to identify immediately, but others required a better understanding of the level of detail necessary between layers. Organized logging also proved to be invaluable in debugging and evaluating our system. Our full paper goes into much more detail on details of the protocol, its simulation, and the results.
Overall, Replication for the Global Data Plane was close up inspection of some key parts for keeping the gears moving in distributed systems. I’m looking forward to learning more about these kinds of systems.