2.3.2 Протокол преобразования адресов — ARP
2.3.2.1 Проверка кэша ARP
Реализация протокола преобразования адресов ARP (Address Resolution Protocol) [RFC826] должна обеспечивать механизм удаления устаревших записей из таблицы. Если поддерживаемый механизм использует тайм-аут, должна обеспечиваться возможность настройки времени ожидания.
Реализация должна обеспечивать механизм предотвращения лавинной рассылки (ARP flooding) в виде повторяющихся с высокой частотой запросов ARP Request для одного адреса IP. Рекомендуемая частота запросов не должна превышать для каждого адреса 1 запрос/сек.
- Обсуждение:
- Спецификация ARP [RFC826] предлагает, но не требует использовать механизм тайм-аутов для объявления некорректными (invalidate) элементов кэша при смене хостом своего адреса Ethernet. Широкое распространение proxy ARP (см. параграф 2.4 в работе [RFC1009]) существенно повышает вероятность того, что в кэше будут содержаться некорректные записи, следовательно требуется механизм удаления устаревших записей из кэша ARP. Даже в отсутствие proxy ARP использование тайм-аутов полезно для автоматической коррекции данных ARP, которые могли быть кэшированы.
- Реализация
Для удаления устаревших записей из кэша используется 4 механизма (иногда в комбинации).
Timeout — записи периодически удаляются из кэша, даже если они остаются актуальными. При использовании ARP тайм-аут должен быть порядка 1 минуты.
Unicast Poll — активный опрос удаленных хостов с помощью периодической отправки по их адресам пакетов ARP Request и удаление записей для тех адресов, от которых не пришло пакетов ARP Reply после N последовательных опросов. Тайм-аут должен по-прежнему составлять около 1 минуты, а типичное значение N = 2.
Link-Layer Advice — если драйвер канального уровня обнаруживает проблемы с доставкой, соответствующая запись удаляется из кэша ARP.
Higher-layer Advice — обеспечивается вызов на канальный уровень с уровня Internet для индикации проблем с доставкой. Эффект такого вызова заключается в том, что соответствующая запись удаляется из кэша. Такой вызов является аналогом вызова ADVISE_DELIVPROB() с транспортного уровня на уровень Internet (см. параграф 3.4) и подпрограмма ADVISE_DELIVPROB фактически может использоваться для вызова программы канального уровня, удаляющей запись из кэша ARP.
Варианты (1) и (2) используют тайм-аут порядка 1 минуты или меньше. При отсутствии ARP такой короткий период ожидания может породить заметный избыточный трафик в больших сетях Ethernet. Следовательно, может потребоваться увеличение тайм-аута ARP.