위키득계정 ↗
기술

비잔틴 장군 문제

비잔틴 장군 문제기술
영어
Byzantine Generals Problem
장애의 예
수신자마다 다른 정보 전달
핵심 목표
정상 참여자들의 합의
결과의 전제
통신과 인증 모형에 따라 다름
비잔틴 장군 문제는 일부 참여자가 서로 모순되는 정보를 보내는 상황에서도 정상 참여자들이 같은 결정에 도달하게 할 수 있는지를 다루는 분산 합의 문제다. 단순히 멈춘 서버를 견디는 문제보다 강한 장애를 고려한다.

중단과 모순된 정보

중단한 서버는 더 이상 응답하지 않지만 잘못 동작하는 서버는 한쪽에는 X, 다른 쪽에는 Y를 보낼 수 있다. 두 정상 서버는 서로 다른 입력을 받은 셈이 된다. 따라서 모든 서버가 같은 내용을 받았다고 가정한 단순한 다수결만으로 문제를 해결했다고 할 수 없다.

합의가 요구하는 것

지휘자와 부하의 형태로 정식화하면 정상 부하들은 같은 값을 결정해야 하며 지휘자가 정상일 때는 그가 보낸 값을 따라야 한다. 아무 값이나 고정해서 언제나 결정하게 만들면 첫 조건만 만족할 수 있으므로 두 요구를 함께 고려한다. 정식화에 따라 유효성 조건의 표현도 달라질 수 있다.

참여자 수와 모형

서명 없는 메시지를 사용하는 고전적인 동기식 완전 연결 모형에서는 f개의 비잔틴 장애를 견디는 일반적인 해법에 3f+1 이상의 참여자가 필요하다. 이 숫자를 모든 분산 시스템의 보편적 법칙으로 옮겨서는 안 된다. 위조 불가능한 서명 등 가정이 바뀌면 가능한 결과도 달라진다.

알고리즘 선택의 의미

장애 허용이라는 말만으로 어떤 실패까지 처리하는지 알 수 없다. Raft와 기본 Paxos의 중단 장애 모형을 비잔틴 장애 허용과 혼동해서는 안 된다. 실제 설계에서는 인증, 전달 지연, 노드 수, 악성 참여자 수와 영구 저장 가정을 함께 확인해야 한다.

관련 문서

분산 시스템 / 알고리즘 / 네트워크 / Raft / Paxos / 암호학 / 전자 서명 / 동시성