Robustness of distributed systems inspired by biological processes (חוסן של מערכות מבוזרות בהשראת תהליכים ביולוגיים.)

Synchronization in distributed computer networks has been extensively studied in the last decades. Nevertheless, robustness and fault tolerance still remain major challenges. Biological systems have evolved to operate successfully in exceptionally noisy and fault-prone environments. The subject of this work is robustness of distributed computer systems and specifically the potential of biological synchronization models to inspire novel synchronization algorithms in distributed computer system. Prior to this work, only two algorithms existed in the field of distributed computing that were both self-stabilizing and resilient to permanent Byzantine failures, both with exponential convergence times. Several biological models seem to operate in extreme fault models. In this thesis, we pursued to algorithmically imitate such a model and derived the first practical self-stabilizing and Byzantine algorithm . A self-stabilizing and arbitrary-fault tolerant (Byzantine) algorithm for synchronization of pulses is derived from generalizing a model of the cardiac pacemaker in lobsters. It assumes no prior synchronization besides bounded message delay and it converges in linear time. The synchronization achieved is very tight. Pulse synchronization, which resembles clock synchronization, has not previously been formally defined in the settings of distributed computer systems. Executing on top of pulse synchronization, an algorithm to transform general Byzantine algorithms into their self-stabilizing counterparts is developed, with only a linear-time additional overhead. Then, an optimized scheme for stabilizing a subset of the class of general Byzantine algorithms is suggested. Following the lines of this scheme, an efficient linear-time self-stabilizing Byzantine solution for the fundamental clock synchronization problem is presented, that has an exceptionally low (constant) overhead during steady-state. An efficient linear-time self-stabilizing Byzantine solution for token circulation and for graph coloring and general resource allocation problems is also shown. A self-stabilizing Byzantine agreement algorithm is presented. It does not assume synchronized pulses, only bounded message delay and it converges in linear time. The lack of synchrony is overcome, by developing a self-stabilizing Byzantine version of the reliable broadcast primitive. A second pulse synchronization algorithm is then developed that executes on top of the selfstabilizing Byzantine agreement algorithm. It is fundamentally different from the biologicallyinspired one. It converges faster and also achieves very tight synchronization. All the algorithms need to address the particular lack of any synchronization assumptions as is posed by the confluence of the self-stabilization and Byzantine fault models. They face the problem of creating synchrony and agreement among nodes from a point of no synchrony and with malicious nodes that incessantly hamper stabilization. The timing model is that of semisynchronous networks. All but one of the results are the first solutions for their respective problem in the combined self-stabilizing and Byzantine fault domains. The algorithm for self-stabilizing Byzantine clock synchronization, is not the first of its kind but the only one that is linear-time and not exponential.