; Hand this in to: ece849-staff+hw@ece.cmu.edu ;Required Reading @article{lamport82_byzantine_generals, author = "Lamport, L., Shostak, R., and Pease, M.", title = "The Byzantine Generals Problem, Trans. Prog. Lang. and Sys.", journal = "Communications of the ACM", year = "1982", volume = "4", number = "3", pages = "382--401", abstract = "Reliable computer systems must handle malfunctioning components that give conflicting information to different parts of the system. This situation can be expressed abstractly in terms of a group of generals of the Byzantine army camped with their troops around an enemy city. Communicating only by messenger, the generals must agree upon a common battle plan. However, one or more of them may be traitors who will try to confuse the others. The problem is to find an algorithm to ensure that the loyal generals will reach agreement. It is shown that, using only oral messages, this problem is solvable if and only if more than two-thirds of the generals are loyal; so a single traitor can confound two loyal generals. With unforgeable written messages, the problem is solvable for any number of generals and possible traitors. Applications of the solutions to reliable computer systems are then discussed.", url = "http://portal.acm.org/citation.cfm?doid=357172.357176", studentname = "", summary = "", contribution1 ="", contribution2 ="", contribution3 ="", contribution4 ="", contribution5 ="", weakness1 = "", weakness2 = "", weakness3 = "", weakness4 = "", weakness5 = "", interesting = "high/med/low", opinions = "", } @Misc{wylie03_draft_byzantine_generals, author = {Jay Wylie}, title = {Byzantine Generals OM algorithm explained}, month = {Feb}, year = {2003}, abstract = "I have read the ``The Byzantine generals problem'' [Lamport82] paper many times. However, I was incapable of explaining the OM (Oral Messages) algorithm to another group of students. This short report illustrates the OM algorithm by ``unrolling'' the recursion. When the recursion is unrolled, it becomes clear what lieutenants have which information, and how each lieutenant makes use of the majority function.", url = "http://www.ece.cmu.edu/~ece849/papers/wylie03_draft_byzantine_generals.pdf", studentname = "", summary = "", contribution1 ="", contribution2 ="", contribution3 ="", contribution4 ="", contribution5 ="", weakness1 = "", weakness2 = "", weakness3 = "", weakness4 = "", weakness5 = "", interesting = "high/med/low", opinions = "", } @inproceedings{driscoll03_byzantine_reality, author = {K. Driscoll and B. Hall and H{\aa}kan Sivencrona and P. Zumsteg}, title = {Byzantine Fault Tolerance, from Theory to Reality}, booktitle = {International Conference on Computer Safety, Reliability and Security ({SAFECOMP03})}, year = {2003}, pages = {235-248}, abstract = "Since its introduction nearly 20 years ago, the Byzantine Generals Problem has been the subject of many papers having the scrutiny of the fault tolerance community. Numerous Byzantine fault tolerant algorithms and architectures have been proposed. However, this problem is not yet sufficiently understood by those who design, build, and maintain systems with high dependability requirements. Today, there are still many misconceptions relating to Byzantine failure, what makes a system vulnerable, and indeed the very nature and reality of Byzantine faults. This paper revisits the Byzantine problem from a practitioner’s perspective. The intention is to provide the reader with a working appreciation of Byzantine failure from a practical as well as a theoretical perspective. A discussion of typical failure properties and the difficulties in preventing the associated failure propagation is presented. These are illustrated with real Byzantine failure observations. Finally, various architectural solutions to the Byzantine problem are presented.", url = "http://citeseer.ist.psu.edu/696238.html", studentname = "", summary = "", contribution1 ="", contribution2 ="", contribution3 ="", contribution4 ="", contribution5 ="", weakness1 = "", weakness2 = "", weakness3 = "", weakness4 = "", weakness5 = "", interesting = "high/med/low", opinions = "", }