ARP — протокол канального уровня модели OSI, благодаря ARP трафик находит путь и коммутация происходит корректно. Для ARP ключевым является понятие MAC-адреса, протокол оперирует именно MAC определяя адреса по IP адресу. Кэш ARP — возможность сетевых устройств запоминать результаты обработки ARP запросов. Управление ARP cache в Linux производится при помощи утилит из набора iproute.
ARP cache Linux, добавление записей
ARP cache в Linux и в специальных сетевых устройствах представляет собой область памяти в которой сохраняются все результаты.
Как разрешается ARP запрос
При поступлении на роутер запроса по IP адресу роутер обращается к своему ARP кэшу и проверяет известно ли ему устройство и знает ли он на какой интерфейс отправлять фрейм с данными. Если в кэше есть ардес — фрэйм просто отправляется на получателю через интерфейс, к которому он подключен.
Если значения в ARP кэше нет — роутер отправляет broadcast запрос на все интерфейсы ожидая получить ответ от того, кому принадлежит IP адрес. Все устройства, которым адрес не принадлежит на запрос не отвечают, отвечает только то устройство, которому он фактически присвоен.
Роутер получает MAC и заносит в свой кэш, в нем данные хранятся какое-то время и если обращение к адресу произойдет вновь broadcast запроса (которой означает передачу большого количества трафика по сети) не будет — данные будут перенаправлены основываясь на полученном ранее ответе на нужный интерфейс.
Если обращений не происходит — информация из кэша автоматически удаляется. Процедура в дальнейшем может быть повторена.
Посмотрим как это работает для Linux сервера.
ip neigh show
192.168.0.76 dev enp1s0 lladdr c0:18:85:bd:74:1f STALE
192.168.0.1 dev enp1s0 lladdr cc:b2:55:9a:01:ba REACHABLE
В выводе только локальные адреса. Добавим еще один отправив ICMP запрос на локальное устройство
ping -c 1 192.168.0.96
С ключом -c можно указать количество пакетов, которые отправляются.
ip neigh show
192.168.0.76 dev enp1s0 lladdr c0:18:85:bd:74:1f STALE
192.168.0.1 dev enp1s0 lladdr cc:b2:55:9a:01:ba REACHABLE
192.168.0.96 dev enp1s0 lladdr c9n2:55:7a:45:9i REACHABLE
Теперь в ARP cache добавлена еще одна строка, представляющая собой соотносящиеся IP и MAC адреса
Продолжительность жизни кэша по умолчанию 15 минут. Если повторных обращений не будет треться строка пропадет через 15 минут.
Также из ARP cache Linux значение можно удалить принудительно вручную
ip neigh delete 192.168.0.96 dev enp1s0
Указывается IP адрес и интерфейс, который используется для работы и к которому относится адрес.
Читайте про утилиту iperf, она используется для анализа загруженности сетевого канала на третьем уровне модели OSI.