Saltar al contenido

Qué es la tolerancia a fallas bizantinas (BFT)

Qué es la tolerancia a fallas bizantinas

¿Qué es la tolerancia a fallas bizantinas (BFT)?

La tolerancia bizantina a fallos (BFT) es la resistencia de un sistema informático tolerante a fallos, en particular los sistemas informáticos distribuidos, a los fallos de componentes electrónicos en los que existe información imperfecta sobre el fallo de un componente. En un “fallo bizantino”, un componente, como un servidor, puede parecer incoherente, fallando y trabajando para sistemas de detección de fallos, presentando diferentes síntomas a diferentes observadores. Es difícil para otros componentes afirmar que han fracasado y cerrarlo de la red, ya que primero necesitan llegar a un consenso sobre qué componente fracasa. El término deriva del problema de los generales bizantinos, donde los actores deben acordar una estrategia combinada para evitar el fracaso catastrófico del sistema, pero algunos de los actores son poco fiables, y también se refiere a la tolerancia de fallas bizantinas con frases de consistencia interactiva o congruencia de la fuente, error de avalancha, problema de compromiso bizantino, el problema de los generales bizantinos y el fracaso bizantino.

¿Cuál es el problema con los generales bizantinos?

En resumen, el problema de los generales bizantinos fue concebido en 1982 como un dilema lógico que ilustra cómo un grupo de generales bizantinos puede tener problemas de comunicación cuando intentan ponerse de acuerdo sobre su próximo movimiento.

El dilema supone que cada general tiene su propio ejército y que cada grupo está ubicado en diferentes lugares de la ciudad que están tratando de atacar. Los generales deben estar de acuerdo en atacar o rendirse. No importa si atacan o se retiran, siempre y cuando todos los generales lleguen a un consenso, es decir, que acuerden una decisión común para ejecutarlo en coordinación.

Qué es la tolerancia a fallas bizantinas

Por lo tanto, podemos considerar los siguientes objetivos:

  1. Cada general tiene que decidir: atacar o retirarse (sí o no);
  2. Una vez tomada la decisión, no se puede cambiar;
  3. Todos los generales deben estar de acuerdo con la misma decisión y ejecutarla de manera sincronizada.

Los problemas de comunicación mencionados anteriormente están relacionados con el hecho de que un general sólo puede comunicarse con otro a través de mensajes, que se envían por correo. Por consiguiente, el desafío central del problema bizantino general es que los mensajes pueden ser retrasados, destruidos o perdidos de alguna manera.

Además, incluso si un mensaje es entregado con éxito, uno o más generales pueden elegir (por cualquier razón) actuar maliciosamente y enviar un mensaje fraudulento para confundir a los otros generales, lo que conduce a un error total.

Si aplicamos el dilema al contexto de la cadena de bloques, cada general representa un nodo de la red y los nodos deben llegar a un consenso sobre el estado actual del sistema. En otras palabras, la mayoría de los participantes en una red distribuida deberían estar de acuerdo y tomar las mismas medidas para evitar un fallo total.

Por lo tanto, la única manera de lograr consenso sobre este tipo de sistemas distribuidos es tener al menos nodos o nodos de red más confiables y honestos. Esto significa que si la mayoría de la red decide actuar maliciosamente, el sistema será susceptible a fallas y ataques (como el ataque del 51%).

Qué es la tolerancia a fallas bizantinas

¿Cómo funciona la tolerancia bizantina a las fallas?

Para generar sistemas que cumplan con la Tolerancia Bizantina a Fallos, el sistema necesita definir un conjunto de reglas comunes que deben ser cumplidas. Es precisamente este conjunto de normas el que permite resolver satisfactoriamente el problema de los generales bizantinos. El conjunto de reglas más comunes para lograr este tipo de solución es el siguiente:

  1. Cada proceso se inicia en un estado de indecisión (ni ATAQUE ni RETIRADA).
  2. Se garantiza un medio de comunicación para las partes de la red. Esto es para mostrar los mensajes de forma segura. El medio también servirá para comunicar e identificar las partes de manera inequívoca.
  3. Las piezas empiezan a pasar a un estado de decisión (ATAQUE o RETIRADA). Para llegar a este punto en los sistemas informáticos, se trata de un proceso determinista. De esta manera, se trata de evitar la manipulación externa en el valor de las decisiones.
  4. Una vez que las partes deciden, se envían las comunicaciones y se suman las decisiones. Ganar el estado con más decisiones a favor.