А вот что придумал я.
Для простоты я рассмотрю вариант связи двух хостов. Связь большего количества происходит путем повторения этого алгоритма для каждой связывающейся пары.
Здесь делается допущение, что время путешествия пакета от одного хоста к другому равно путешествию в обратную сторону. Что, вообще говоря, может быть и не так, особенно при ассемитричном интернет-доступе.
Итак:
1. Пакеты объединяются в нити.
2. Пакеты, принадлежищие одной нити ходят поочередно туда-обратно между хостами.
3. Каждый хост для каждой нити записывает время отправки им последнего пакета.
4. Пакет в нити несет информацию о времени задержки нити на отправившем этот пакет хосте, а так же, помимо другой информации, угловые и пространственные координаты объектов с несколькими их производными (до 2-3й, чем больше тем лучше).
5. Время сетевой задержки опредеяется как (текущее время - время отправки последнего пакета нити - задержка нити на противоположном хосте) / 2
6. Текущие координаты объектов вычисляются исходя из полученных координат, производных и вычисленной сетевой задержки.
Я надеюсь, теперь все поняли зачем здесь нужны иллюстрации

Здесь:
красная, зеленая и синяя ломанные линии иллюстрируют нити. Наклонные участки - передача пакета в сети. Горизонтальные участки - обработка полученного пакета и формирование ответа. Время сетевой задержки T<sub>з</sub>=(время возврата нити - время задержки нити) /2.
X=X<sub>0</sub> + V<sub>0</sub>T<sub>з</sub> + a<sub>0</sub>T<sub>з</sub><sup>2</sup>/2
V=V<sub>0</sub>+a<sub>0</sub>T<sub>з</sub>
и т.д.
Обозначения с индексом 0 - данные, полученные из пришедшего пакета.
Это теория. А теперь практика:
Хосты должны обменитьвася информацией регулярно, т.е. пакеты должны отправляться через определенные промежутки времени. Поэтому, необходимое количество нитей, которые будут связывать хосты заранее неизвестно и зависит как раз от той самой сетевой задержки, которую мы пытаемся измерить. Кроме того рассмотрите такую ситуацию:

Что здесь произошло:
Пакет крассной нити задержался и его обогнал зеленый. Синий пакет просто потерялся. Зеленый опять шустер и успел до отправки фиолетового.
Что делают хосты:
1. Недождавшись прихода крассного пакета хост А инициирует новую нить, фиолетовую.
2. По приходу зеленой нити он смотрит - ага, крассная нить еще не пришла, значит она либо потерялась, либо задержалась и уже не актуальна, т.к. есть более свежая информация. Крассная нить считается оборванной.
3. По приходу крассной нити из пакета извлекаются остатки полезной информации и эта нить обрывается.
4. Зеленый пакет пришел на хост Б до того, как был отправлен фиолетовый. Ну, да и Бог с ним, собственно, подольше полежит, прождет своего часа.
5. Синий пакет просто утерян и вместо него инициируется коричневая нить.
А теперь как это привести к общему знаменателю:
1. всем нитям присваиваются уникальные для данного сеанса связи идентификаторы.
2. По приходу, нить ставится в очередь на отправку.
3. Если на момент необходимости отправки нового пакета нет ожидающих отправки нитей, то создается новая нить.
4. В момент отправки пакета нить становится в очередь ожидаемых нитей.
5. Если получен пакет от нити, не стоящей первой в очереди ожидаемых, то все нити до нее считаются оборванными.
6. Если получен пакет от оборванной нити, то из этого пакета извлекаются остатки полезной информации и ответ на данный покет не посылается.
Уф... Вроде бы все, на первый взгляд. Если что еще вспомню - допишу.