Byzantine-resilient protocols are designed under the assumption that some protocols participants are malicious and do not play the protocol correctly. Such protocols were traditionally applied to ensure availability for critical distributed services and, more recently, to secure data delivery for routing protocols. In general, Byzantine-resilient protocols are known
for their limited scalability and for the high cost paid by the system even when no attack takes place.
In this talk we draw on our experience with designing Byzantine-resilient protocols for replication, peer-to-peer services, and routing to present our approaches to overcome the challenges encountered when designing such
protocols. We will show how using an hierarchical architecture allowed us to improve scalability without sacrificing application consistency
requirements. We will also show how leveraging protocol semantics to detect malicious participants and remove them from the system, improved the convergence of the protocol overall, while decreasing the cost paid by the system when no attack took place.