[MUD-Dev] Error tolerant UDP data streams

J C Lawrence claw at under.engr.sgi.com
Mon Dec 7 17:11:25 CET 1998


Previously we've discussed using UDP with its known lack of error
correction or stream sequencing to create error tolerant data
streams ("frames" really as any imposition of sequencing is purely
data-centric).  The basic goal of the idea is probably best
expressed by the following:

  We don't care if any particular individual data frame gets to the
target.  We do care that *some* data gets thru to the client and are
willing to leave the determination of what is satisfactory to the
client/target.

The following quote from the pages for "Speak Freely for Unix"
suggests we may be able to borrow from prior art:

--<cut>--
The extreme compression achieved by the LPC-10 algorithm allows the
option of ``robust transmission,'' in which multiple copies of sound
packets are sent, each containing a sequence number which allows the
receiver to discard duplicate or out-of-sequence packets. Robust
transmission often allows intelligible conversation over heavily
loaded network links which would otherwise induce random pauses and
gaps in received sound.
--<cut>--

Speak Freely for Unix is Open Source:

  http://www.fourmilab.ch/speakfree/unix/speak_freely-6.1e.tar.gz

I haven't looked at the source handling the
multiple-send/duplicate-discard supports, but the idea is obvious
enough to need little explanation.

ObThought: This would be particularly cute if the client ran its own
statistics on the incoming multiple-copy data streams and sent
occassional advisory packets back to the server, requesting the
server to increase or decrease the number of duplicate packets sent
according to the averaged (weighted mean) percentage that are making
it thru in good order.  Bad connection/lag == more duplicates and
more network congestion.  Good connectivity == minimal duplication.

ObHack: Network connectivity problems rarely have nice sloped
shoulders (ie it doesn't start or stop gradually, but turns on and
off almost instantly).  As such the client would need to be able to
have an over-ride packet that it could send back to the server,
saying something to the effect of, "Help!  Increase dumplication
load immediately -- I'm not getting anything!".  The duplication
level would then be allowed to degrade from there as per normal.

--
J C Lawrence                              Internet: claw at kanga.nu
(Contractor)                             Internet: coder at kanga.nu
---------(*)                    Internet: claw at under.engr.sgi.com
...Honorary Member of Clan McFud -- Teamer's Avenging Monolith...




More information about the mud-dev-archive mailing list