Design Issues
If we don't follow the OSI reference model as gospel, we can imagine providing several alternative service semantics:
- Reliable Delivery:
- Frames are delivered to the receiver reliably and in the same order as generated by the sender.
Connection state keeps track of sending order and which frames require retransmission. For example, receiver state includes which frames have been received, which ones have not, etc.
- Best Effort:
- The receiver does not return acknowledgments to the sender, so the sender has no way of knowing if a frame has been successfully delivered.
When would such a service be appropriate?
- When higher layers can recover from errors with little loss in performance. That is, when errors are so infrequent that there is little to be gained by the data link layer performing the recovery. It is just as easy to have higher layers deal with occasional lost packet.
- For real-time applications requiring ``better never than late'' semantics. Old data may be worse than no data. For example, should an airplane bother calculating the proper wing flap angle using old altitude and wind speed data when newer data is already available.
- Acknowledged Delivery:
- The receiver returns an acknowledgment frame to the sender indicating that a data frame was properly received. This sits somewhere between the other two in that the sender keeps connection state, but may not necessarily retransmit unacknowledged frames. Likewise, the receiver may hand received packets to higher layers in the order in which the arrive, regardless of the original sending order.
Typically, each frame is assigned a unique sequence number, which the receiver returns in an acknowledgment frame to indicate which frame the ACK refers to. The sender must retransmit unacknowledged (e.g., lost or damaged) frames.
No comments:
Post a Comment