¿Por qué alguien preferiría una transmisión confiable regular sobre una transmisión confiable uniforme?

En términos de lo que garantiza el algoritmo, la transmisión confiable uniforme (URB) tiene todas las garantías de transmisión confiable (RB) con la adición de una propiedad de que si algún nodo entrega un mensaje, todos los nodos correctos deben entregar el mensaje.

Ciertamente es una versión más fuerte de RB, pero tiene compensaciones:

  • Debe asegurarse de que todos los mensajes entregados por cualquier nodo sean entregados por todos los nodos correctos. En RB podemos ignorar las entregas de nodos defectuosos, pero URB no puede hacer eso;
  • Como resultado, la implementación se vuelve más compleja, ya que URB usa RB debajo pero también agrega lógica adicional encima;
  • Dependiendo del entorno en el que se encuentre (Sincrónico, Parcialmente Sincrónico o Asincrónico), los algoritmos serán muy diferentes en términos de complejidad. Considere un sistema síncrono, donde puede tener un detector de fallas perfecto y un sistema asíncrono, donde no puede detectar fallas en absoluto.

Del mismo modo, examinemos las transmisiones FIFO y Causal:

  • La única garantía de la transmisión FIFO es que si un mensaje se envió antes que el otro, debe entregarse en el mismo orden.
  • La transmisión causal postula que si un nodo correcto entrega un mensaje, primero debe entregar todos los mensajes que ocurrieron antes.

En el primer caso, puede escapar con formas simples de garantizar FIFO: tenga una etiqueta de remitente en cada mensaje con un número creciente. Un receptor no entregará mensajes del remitente si la diferencia en el número de etiqueta es superior a 1, porque eso significaría que deberíamos esperar los mensajes intermedios.

Ahora, la transmisión causal requerirá que pueda diferenciar entre mensajes causalmente relacionados y mensajes concurrentes. Los relojes vectoriales resolverían este problema, pero ciertamente son más difíciles de implementar que el algoritmo anterior.

En general, cuando se encuentra con un algoritmo que tiene garantías más sólidas, la compensación es que generalmente es más difícil de implementar y / o tiene una mayor complejidad en términos de cálculo, memoria o mensajes pasados ​​entre nodos.