Network coding is a unique coding technique, which could change the way we see distributed storage systems forever. With the help of this powerful coding technique we can break away from traditional centralized concepts and focus on decentralized solutions. With the help of network coding data can be split into unlimited number of coded chunks, from which only a subset is needed to restore the original data. This key benefit makes it possible to maintain the consistency and availability of data even if one or more nodes fail, because the data of failed nodes can be substituted by mixing coded packets from other nodes. Thanks to its recoding capability, redundancy can be easily increased by adding new nodes to the cloud.
The first main chapter is an introduction to network coding. Its goal is to present the basic concepts, the parameters and their role first generally and then also specific to distributed storage. It highlights the important differences between network coding and Reed-Solomon. The chapter calculates the probability of getting linear dependent coded packets and with a modified version of the “coupon collector’s problem” the average amount needed to decode the original data and compares it to the uncoded case.
The second chapter is about the simulation application developed during the semester, its inner workings and the simulation results. We verify the calculations with simulation results generated by the application and analyze the simulation results with different input parameters.
The last chapter is about future improvements of the simulation application for making further measurements possible and practical use cases with the help of a mobile application.