Вы можете использовать функцию "netem", встроенную в ядро Linux. Поставляется с большинством современных дистрибутивов. netem - это модуль дисциплины управления трафиком, который намеренно задерживает, отбрасывает и переупорядочивает пакеты и имеет широкие возможности настройки.
Это работает только для отправки пакетов (поскольку очереди только исходящие), поэтому вы можете разместить хост маршрутизатора с netem между двумя тестовыми машинами и запустить netem на обоих интерфейсах (с разными параметрами, если хотите).
Самый простой способ добиться этого - запустить netem в виртуальной машине для маршрутизации между двумя сетями виртуальных машин. Я обнаружил, что это очень удобно.