What is the difference between a process receiving a message and a process delivering a message, in the context of a multicast?
Multicast in distributed computing often assumes that some guarantees, such as causal order, are provided by a protocol layer between the network and the application. This protocol layer might delay messages that have arrived from the network, omit messages, use additional control messages, ... Usually, this is the most important layer, where interesting algorithms are needed.
In this context, when describing such algorithms, receive (and send) is the interface between the protocol layer and the underlying network channels. Deliver (and multicast) is the interface between the protocol layer and the application. It is thus a naming convention to make it easy do distinguish message arrival at different layers, instead of having to say "received at the protocol" (aka received) and "received at the application" (aka delivered).
An example: Assume that you are enforcing causality and have m1->m2
. Now assume that m2
arrives to (i.e. is received by) process p before m1
. m2
cannot be shown to the application (i.e. delivered) immediately to the application. It can only be delivered after m1
is received and then delivered first.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With