Максимальная задержка ICMP между эхо-запросом и ответом, поддерживаемая NAT маршрутизатора

Я пытался замедлить работу сети на моем сервере (arch linux vm) с netem

sudo tc qdisc add dev eth0 root netem delay 1600ms

С задержкой 1600 мс клиент не получает пакет ответа эха, хотя пакет генерируется со стороны сервера. Однако он может выдержать до 1500ms задержка. Если задержка меньше, чем эхо-ответ получен на стороне клиента.

Но в RFC определяет ли он фиксированную максимальную задержку между эхо-запросом и эхо-ответом?

я использовал ping так же как scapy чтобы генерировать ICMP пакеты эхо-запроса и tcpdump проверить входящие эхо-ответные пакеты. Так что это не проблема ping программа.

Поэтому я думаю, что где-то в промежуточном маршрутизаторе ECHO reply пакеты отбрасываются из-за задержки. Итак, какова максимальная величина задержки между эхо-запросом и ответом, которую поддерживают обычные маршрутизаторы?

2 ответа

В RFC 5508 есть рекомендации"Поведенческие требования NAT для ICMP" относительно того, как долго маршрутизатор должен сохранять состояние для пакетов ICMP, но нет гарантии, что кто-то последует за ними.

Контекст: ICMP не является протоколом с отслеживанием состояния.

В сценарии, когда вы сидите за маршрутизатором, который NAT для вашего трафика, и вы пингуете устройство на другой стороне маршрутизатора, маршрутизатор должен отслеживать ваши эхо-запросы ICMP, чтобы позволить соответствующим эхо-ответам ICMP войти. Как это сделать, если ICMP не с состоянием? Просто запишите запись в таблицу NAT и держите ее некоторое время.

Производитель вашего маршрутизатора решил, что 1500 мс - это хороший компромисс между функциональностью (работает ICMP) и безопасностью:

1) Маршрутизатор может быстро освободить память, вместо того чтобы хранить потенциально миллионы записей для односторонних ICMP.
2) Маршрутизатор блокирует нежелательные эхо-ответы ICMP, потенциально используемые для проверки, снятия отпечатков пальцев и т. Д.

Как следует из примечаний, по умолчанию время ожидания ping для Windows составляет 4 секунды, а для многих дистрибутивов Linux - 10 секунд (в сравнении с инструментами ping по умолчанию в обеих ОС).

Другие вопросы по тегам