Fig. 1
- Thus there will be per receiver state at Sender.
So reciever based approach is fallowed in multicast.
Problem with Sequencing :
TCP uses byte number for sequencing.
However that has problem with multicast.
- Whether to maintain sequence numbers per source or independant
of source.
- If we maintain sequence number per source then there will be
problem when there are multiple senders of the same data (replicated servers).
This is because if one of the server fails then other server may start sending
but will be having diffrent sequence number and thus the receiver will
be confused and falsely assuming loss of data.
- Sequence number wrap arond can take place and then late joining
receivers will not be knowing whether to ask for previos packet as random
sequence number are used in TCP at start.
- Also this problem can come with intermidiate partitions.
Solution: Application Layer
Framming
- Framming done by the application and thus unit of data is defined
by application
- Now FTP /TCP can also use this.
- Now with this technique in multicast, sequence number can be
per source or independant of source and anyone having data can retransmit.
Reliable Multicast Protocol
- Does not gurantee Ordering
- But gurantees sending of data to all receivers.
General working :
- Each receiver keeps track of the sequence number received (per
sender or information in frame)
- Periodic session messages are sent by the each sender. It contains
highest sequence number sent so far and also time stamp. (for estimation
of RTT).
- This is needed because:
- Assume that sender sends sequence number 1,2,3,4,...
- If sequence number 4 gets lost then receiver is not able to
know whether packet has lost or sender has stopped sending the data. Hence
sender sends periodic session messages.
On loss detection :
- Each node in the subset (shown inside the circle) will set timer
with random values for time outs
- One of them will eventually time outs and fires the multicast-repair-request.
- Anybody having packet then can multicast the packet.