Schiper Eggli Sandoz Protocol
Schiper Eggli Sandoz Protocol is used to maintain the causal ordering of the messages i.e. the message which is sent first should be received first. This is the contrast to maintaining a vector clock based on the number of messages sent to each type of process, this protocol’s vector clock can be increased at any rate it chooses and is unrelated to the number of messages that are currently outstanding.
Transmitting a Message:
- Before any type of message is sent, There is a list of all the timestamps of messages sent to other processes is included.
- The timestamp of each type of message should be saved in a specific location.
Received a Message:
1. Any type of message cannot be delivered if it is preceded by a message which is mentioned in the list of timestamps.
2. Alternately, there are following actions may be taken to convey a message:
- There we Include the following list of timestamps in the message:
- Add knowledge of messages intended for other all processes to our list of processes. if we did not already know of any other messages intended for one process. If we timestamp on the new list which is higher than the one which is previously saved, that adjusts our timestamp accordingly wise.
- We need to Refresh the logical clock in your region.
- Now we Check to see if all messages that are locally buffered they can now be delivered or not.
Here, C3:1 – C3:2, and so they should be received at each receiver in that order. C1:1 – C3:1, and so they should be received at each receiver in that order. It is acceptable to receive C3:1 and C2:1 in different orders at various receivers because they are concurrent.
Some main advantages of using this protocol in the design of distributed systems are as follows:
- The goal is to ensure that the same causal relationship between “message send” and “message receive” events corresponds. (Or, all messages are handled in the chronological order in which they were generated.)
- Upon sending messages, each process raises its vector clock by one.
- If a process has received all messages before it, then the message has been delivered to that process.
- The happened-before relation of the corresponding sendings cannot be violated by the order in which messages are delivered for any process.
- A rise in concurrency logical time, which can be tracked with less infrastructure and expense, could take the place of real-time.
Some main Disadvantages of using this protocol in the design of distributed systems are as follows:
- Any process that alters the relationship between what happened before and the corresponding sendings cannot affect the order in which messages are delivered.
- A programmer must perform all tasks.
- It is slower because the connection setup takes some time.
- Cooperative operations are typically needed for data transfer, which can be challenging to accomplish.
- Voice or video calls or other real-time applications cannot be made using it.