John Cusick wrote in a message to Mike Bilow:

 JC>    At your leisure, would someone explain the difference
 JC> between Virtual Connection mode and DataGram mode relative
 JC> to ax25 connections. I've investigated the limited resources
 JC> I have here and can't find much that explains the
 JC> differences and uses.

When passing IP over a link, the link can be in "reliable" or "best-effort." 
In the case of a reliable link, each frame must be sent and acknowledged before
the next frame can be sent.  In the case of a best-effort link, each frame is
sent in the expectation that it will be correctly received, but it is lost if
not.

The big difference in the AX.25 context is that a bad link can cause frames to
back up in the queue while some particularly troublesome frame is retried.  If
the link queue backs up too far, then the higher layer protocols, such as the
transport (TCP) layer, may expire their own retry timers.  Of course, the
effect of this is that more stuff is put into the queue to cross the bad link,
but now it will be totally redundant and useless.  If the higher layer
protocols are expiring their retry timers quickly enough relative to the link
queue depth, then the link queue will grow indefinitely until buffers fill up,
a condition known as secondary avalanche.

There is no easy answer about which approach is better in any given situation,
but experience has shown that moving the guarantee of delivery to the highest
possible protocol layer will result in greatly simplified implementations and
behavior under failure mode conditions that is more in line with expectations.
 
-- Mike

Reply via email to