Summary: | Customized hardware is expensive and making software reliable is difficult to achieve as complexity increases. Recent trends towards computing in the cloud have highlighted the importance of being able to operate continuously in the presence of unreliable hardware and, as services continue to grow in complexity, it is necessary to build systems that are able to operate not only in the presence of unreliable hardware but also failure-vulnerable software. This thesis describes a newly developed approach for building networking software that exposes a reliable encapsulation service to clients and runs on unreliable, commodity hardware without substantially increasing the implementation complexity. The proposal was implemented in an existing encapsulation system, and experimental analysis has shown that packets are lost for between 200 ms and 1 second during a failover, and that a failover adds less than 5 seconds to the total download time of several sizes of files. The approach described in this thesis demonstrates the viability of building high availability systems using commodity components and failure-vulnerable server software.
|