La terminación de transmisión confiable ( TRB ) es un problema en la computación distribuida que encapsula la tarea de transmitir un mensaje a un conjunto de procesos receptores en presencia de fallas . [1] En particular, el remitente y cualquier otro proceso podrían fallar ("bloquearse") en cualquier momento.
Un protocolo TRB organiza típicamente el sistema en un proceso de envío y un conjunto de procesos de recepción, que pueden incluir al propio remitente. Un proceso se denomina "correcto" si no falla en ningún momento durante su ejecución. El objetivo del protocolo es transferir datos (el "mensaje") desde el remitente al conjunto de procesos de recepción. Un proceso puede realizar muchas operaciones de E/S durante la ejecución del protocolo, pero finalmente "entrega" un mensaje al pasarlo a la aplicación de ese proceso que invocó el protocolo TRB.
El protocolo debe proporcionar garantías importantes a los procesos receptores. Por ejemplo, todos los procesos receptores correctos deben entregar el mensaje del remitente si este también es correcto. Un proceso receptor puede entregar un mensaje especial ("remitente defectuoso") si el remitente falló, pero todos los procesos correctos lo entregarán o ninguno lo hará. Por lo tanto, un proceso correcto tiene la garantía de que los datos que se le entregaron también se entregaron a todos los demás procesos correctos.
Más precisamente, un protocolo TRB debe satisfacer las cuatro propiedades formales siguientes.
La presencia de fallos en el sistema hace que estas propiedades sean más difíciles de satisfacer. Un protocolo TRB simple pero inválido podría hacer que el remitente transmita el mensaje a todos los procesos y que los procesos receptores entreguen el mensaje tan pronto como lo reciban. Sin embargo, este protocolo no satisface el acuerdo si pueden ocurrir fallos: si el remitente falla después de enviar el mensaje a algunos procesos, pero antes de enviarlo a otros, entonces el primer conjunto de procesos puede entregar el mensaje mientras que el segundo conjunto lo entrega .
TRB está estrechamente relacionado, pero no es idéntico, al problema fundamental de la computación distribuida del consenso .