byzantine failure

Byzantine failure je selhání, při kterém se proces může chovat zcela libovolně, bez dodržení specifikace systému.

To zahrnuje:

  • posílání nesprávných zpráv
  • posílání různých zpráv různým procesům
  • lhaní o svém stavu
  • koluzi s jinými chybnými procesy
  • náhodné, chaotické nebo zlovolné chování
  • chování, které se tváří korektně, ale není

Řešení

Aby systém fungoval správně i při takovém selhání, musí náš distribuovaný systém mít vlastnost BFT (byzantine fault tolerance)

Vznik

Problém byl definován na těchto dvou příkladech

Problém byzantských generálů

Řeší situaci, kdy kanál je spolehlivý, ale uzly mohou být zrádné (posílají konfliktní informace, lžou).

  • Pravidlo: Aby systém toleroval $f$ zrádných uzlů, musí mít celkem $N \ge 3f + 1$ uzlů.

  • Vysvětlení ($N=3$, $f=1$): Generál (velitel) pošle “Útok”. Zrádný poručík řekne druhému poručíkovi: “Velitel řekl Ústup”. Druhý poručík neví, kdo lže (velitel nebo kolega). Při 4 uzlech lze většinovým hlasováním lháře izolovat.