B-Multicast
- Primitiva di base senza garanzie di consegna
- Necessità di primitive più affidabili per reti reali
Primitive di Comunicazione di Gruppo
- Gruppo:
- Chiuso: Solo i membri possono inviare messaggi in multicast al gruppo
- Aperto: Anche i non membri
- Obiettivo: Scambio affidabile e ordinato nonostante fallimenti di canali o processi
- Overlay: Rete logica di processi a livello applicativo
Strategie di affidabilità
Error Masking:
- Ridondanza spaziale: I processi sono connessi con collegamenti ridondanti
- Ridondanza temporale: Il messaggio viene inviato più volte
- In entrambi c’è il problema dei messaggi duplicati che devono essere scartati dal ricevente
- Difficile trovare il giusto compromesso tra semplicità di recovery e consumo di banda
Error Detection and Recovery: Gli ack possono essere inviati quando
- Un messaggio viene ricevuto (positive ack)
- Un timeout scade al ricevente, che decreta la perdita di un messaggio (negative ack)
Basic-Multicast e Reliable-Multicast
- B-Multicast: Garantisce la consegna solo se il mittente non fallisce
- R-Multicast:
- Integrity: Un processo corretto $p$ riceve $m$ al più una volta, inoltre $p \in group(m)$ è stato inviato via multicast da $sender(m)$
- Validity: Se un processo corretto $p$ invia $m$ in multicast, prima o poi riceverà $m$
- Agreement: Se un processo corretto riceve $m$, allora tutti i processi corretti in $group(m)$ prima o poi riceveranno $m$
Le definizioni delle proprietà del Reliable-Multicast fanno riferimento a processi corretti (cioè che non falliscono mai)