This decomposition of Sprite RPC created at least two action at a distance problems. First, for xSprite to implement the same semantics as Sprite RPC, BLAST cannot positively acknowledge the arrival of all the fragments of a large message. Thus the client BLAST does not know when to delete the fragments that were sent to the server. However since CHAN will get an acknowledgment for every RPC, it does know when BLAST can free its fragments. The question is how to get that information where it needs to go. The second action at a distance problem arises from the fact that ETH, IP, and BLAST are unreliable protocols but TCP is reliable. For both performance and correctness reasons CHAN should not retransmit the body of a message when it is using a reliable transport protocol.