Next: Test Implementation
Up: Protocol
Previous: Sender Versus Receiver
At a first glance, there are many similarities between TCP and our
protocol, e.g. sliding window, sequence numbers, sender-based
retransmission, and acknowledgments. However, there are three
differences worthwhile noting:
- Unlike in TCP/IP, there is no guarantee that the protocol at the
receiver's side is serviced by the CPU when the sender sends. This
makes the use of retransmission timers difficult. An expired timer is
not a good indicator of packet loss -- the application on the other
side could be off doing computations, for instance because of load
imbalance.
- For small messages, a similar issue exists on the sender
side. Performance reasons (and for the non-blocking case the MPI
semantics) mandate a release of control by the ADI layer, which in
turn makes it impossible to build a TCP-style data transfer with a
round trip estimator.
- Whereas TCP provides a reliable byte stream, we operate on a
per message basis. This requires a smaller sequence number space and
results in a smaller header.
Bernd Pfrommer
Mon May 26 12:18:25 PDT 1997