Конечно, это будет трудно сделать без использования всей доступной полосы пропускания.
Вдобавок ко всему, вы могли бы сделать большую широковещательную передачу UDP между host1 и host2, а затем сделать так, чтобы host2 сообщал обратно host1, какой процент пакетов он сделал и какова задержка между первым и последним пакетом. Он должен быть достаточно большим, чтобы переполнить буферизацию ядра и маршрутизатора.
Если часы на двух серверах синхронизированы, вы можете рассчитать задержку, отправив временную метку в каждом пакете и сравнив их на сервере. Другой способ - просто отправить пару пакетов, и они сразу же будут подтверждены сервером.
Не уверен, какую точность вы бы получили с помощью такого метода. Вы можете немного улучшить его, выполняя этот тест время от времени, чтобы приспособиться к случайной фоновой загрузке сети.