The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

arp (7)
  • arp (1) ( Solaris man: Команды и прикладные программы пользовательского уровня )
  • arp (4) ( FreeBSD man: Специальные файлы /dev/* )
  • arp (7) ( Solaris man: Макропакеты и соглашения )
  • >> arp (7) ( Русские man: Макропакеты и соглашения )
  • arp (7) ( Linux man: Макропакеты и соглашения )
  • arp (8) ( FreeBSD man: Команды системного администрирования )
  • arp (8) ( Linux man: Команды системного администрирования )
  • Ключ arp обнаружен в базе ключевых слов.
  •  

    НАЗВАНИЕ

    arp - модуль ARP ядра Linux.  

    ОПИСАНИЕ

    Этот модуль протокола ядра реализует Address Resolution Protocol (протокол разрешения адресов), определенный RFC 826. Протокол предназначен для преобразования аппаратных адресов второго уровня (Layer2) в адреса протокола IPv4 в соединенных напрямую сетях. Как правило, пользователю не приходится работать с этим модулем непосредственно, исключая случаи его настройки. Модуль может использоваться другими протоколами ядра.

    Процесс пользователя может получать пакеты ARP через сокеты packet(7). Кроме того, существует механизм управления кэшем ARP с помощью сокетов netlink(7) из пространства пользователя. Таблица ARP может управляться с помощью ioctl (2) произвольным сокетом PF_INET.

    Модуль ARP поддерживает кэш соответствий аппаратных адресов и адресов протокола. Размер кэша ограничен, поэтому старые и наименее используемые записи удаляются. Записи, помеченные как постоянные, не удаляются никогда. Кэшем можно управлять непосредственно, с помощью ioctl-вызовов. Работа кэша может быть настроена с помощью sysctl-вызовов, описанных ниже.

    Если в течение некоторого времени (см. sysctl-вызовы ниже) не производится обращение к существующей записи кэша, то она считается устаревшей. Положительная обратная связь может быть получена с более высокого уровня; например, от успешного вызова TCP ACK. Остальные протоколы могут обозначать свой прогресс в работе, используя флаг MSG_CONFIRM для команды sendmsg(2). Если прогресса нет, то ARP пытается повторить запрос. Сначала он пытается app_solicit раз запросить обновленный MAC-адрес у локального демона arp. Если получить адрес не удалось, а старый MAC-адрес известен, то адресный запрос посылается ucast_solicit раз. Если и после этого адрес определить не удалось, то по сети посылается новый широковещательный ARP-запрос. Запросы посылаются только при наличии в очереди данных для отправки.

    Linux автоматически добавляет произвольную запись proxy arp, когда система получает запрос адреса и производит переадресацию этого запроса, а proxy arp запущен на принимающем интерфейсе. При наличии reject route (маршрута отказа) запись proxy arp не производится.

     

    СИСТЕМНЫЕ ВЫЗОВЫ

    Всем сокетам PF_INET доступны три ioctl-вызова. В качестве параметра вызова дается указатель на struct arpreq.
    
    struct arpreq
    {
        struct sockaddr arp_pa;      /* адрес протокола */
        struct sockaddr arp_ha;      /* аппаратный адрес */
        int             arp_flags;   /* флаги */
        struct sockaddr arp_netmask; /* маска сети */
        char            arp_dev[16];
    };
    
    Вызовы SIOCSARP, SIOCDARP и SIOCGARP соответственно устанавливают, удаляют и считывают соответствия ARP. Для установки или удаления соответсвий ARP процесс должен иметь возможность CAP_NET_ADMIN или эффективный UID пользователя, равный 0.

    arp_pa должен быть сокетом AF_INET, а arp_ha должен иметь тот же тип, что и тип устройства, указанного в arp_dev. arp_dev - строка с именем устройства, оканчивающаяся нулем.
    arp_flags
    флагзначение
    ATF_COMПоиск окончен
    ATF_PERMПостоянная запись
    ATF_PUBLАнонсировать запись
    ATF_USETRAILERSТребуются trailers
    ATF_NETMASKИспользовать маску сети
    ATF_DONTPUBНе отвечать

    Если установлен флаг ATF_NETMASK, то должно быть указано корректное значение arp_netmask. Linux 2.2 не поддерживает сетевые записи proxy ARP, поэтому для удаления существующих записей proxy arp это значение должно быть равно 0xffffffff или нулю. ATF_USETRAILERS считается устаревшей, ее не рекомендуется использовать.

     

    СИСТЕМНЫЕ ВЫЗОВЫ

    ARP поддерживает интерфейс sysctl для настройки общих параметров или параметров конкретного сетевого интерфейса. Hастройка осуществляется путем чтения файла или записи в него /proc/sys/net/ipv4/neigh/*/*, а также с помощью вызовов sysctl(2). Для каждого сетевого интерфейса в системе существует соответствующий каталог в /proc/sys/net/ipv4/neigh/. Hастройки в каталоге `default' используются для всех новых устройств. Если явно не определено время, то оно считается указанным в секундах.
    anycast_delay
    Максимальное значение задержки в тиках (jiffies) до ответа на запрос IPv6. В данное время поддержка anycast еще не реализована. По умолчанию - 1 секунда.
    app_solicit
    Максимальное количество попыток послать запрос через сетевое соединение ARP-демону пользователя до возврата к широковещательным запросам (см. mcast_solicit). По умолчанию - 0.
    base_reachable_time
    Если адрес был найден, значение записи в диапазоне времени между base_reachable_time/2 и 3*base_reachable_time/2 будет считаться неустаревшим. Запись будет считаться правильной более длительное время, если будет получен положительный ответ от протоколов более высокого уровня. По умолчанию - 30 секунд.
    delay_first_probe_time
    Задержка до первого запроса после того, как запись стала считаться устаревшей. По умолчанию - 5 секунд.
    gc_interval
    Частота очистки кэша от устаревших и некорректных записей. По умолчанию - 30 секунд.
    gc_stale_time
    Частота проверки записей на старение. Если запись считается устаревшей, то перед тем, как данные будут посланы, адрес снова проверяется. По умолчанию - 60 секунд.
    gc_thresh1
    Минимальное количество записей, хранимых в кэше. Если количество записей меньше этого значения, то очистка кэша производится не будет. По умолчанию - 128.
    gc_thresh2
    Необязательный лимит количества записей в кэше ARP. Если это значение будет превышено более, чем на 5 секунд, то будет произведена очистка кэша. По умолчанию - 512.
    gc_thresh3
    "Жесткий" лимит количества записей в ARP-кэше. Если это значение будет превышено, то очистка кэша будет произведена в любом случае. По умолчанию - 1024.
    locktime
    Минимальное время хранения записи в кэше в тиках. Предотвращает появление ошибок в кэше при наличии более одного возможного соответствия (в общем случае из-за неправильной настройки сети). По умолчанию - 1 секунда.
    mcast_solicit
    Максимальное количество попыток определить адрес с помощью широковещательной передачи. Если адрес не будет обнаружен, то он будет помечен как недоступный. По умолчанию - 3.
    proxy_delay
    Задержка в тиках между получением ARP-запроса на известный proxy ARP-адрес и ответом. Предназначена для предотвращения перегрузки сети. По умолчанию - 0.8 секунд.
    proxy_qlen
    Максимальное количество пакетов, которые могут быть отправлены в очередь для передачи по адресу proxy ARP. По умолчанию - 64.
    retrans_time
    Задержка перед повторением запроса в тиках. По умолчанию - 1 секунда.
    ucast_solicit
    Максимальное количество попыток послать адресный запрос перед запросом демона ARP (см. app_solicit). По умолчанию - 3.
    unres_qlen
    Максимальное количество пакетов, поставленных в очередь протоколами других сетевых уровней для передачи по неразрешенному адресу. По умолчанию - 3.

     

    НАЙДЕННЫЕ ОШИБКИ

    Значения некоторых настроек указаны в тиках, длительность которых зависит от архитектуры компьютера. В Alpha тик равен 1/1024 секунды. В большинстве остальных архитектур он равен 1/100 секунды.

    Hе существует способа сообщить о положительном ответе из пользовательского пространства. Это означает, что протоколы, ориентированые на соединения и реализованные в пользовательском пространстве, будут создавать избыточный ARP-трафик вследствие того, что ndisc будет вновь и вновь запрашивать MAC-адрес. То же относится и к некоторым протоколам ядра (например, NFS через UDP).

    На этой странице соединено описание специфических функций IPv4 и функций, разделяемых IPv4 и IPv6.

     

    ВЕРСИИ

    В Linux 2.0, в структуру structarpreq, было включено поле arp_dev и изменены номера ioctl. Старые ioctl более не поддерживаются.

    Сетевые записи proxy arp (маска сети не равна 0xffffffff) в Linux 2.2 не поддерживаются. Вместо этого было реализовано автоматическое определение ядром всех доступных через другие интерфейсы машин (при отправке сообщения и запущенном proxy arp).neigh/* sysctls не существовали до версии Linux 2.2.

     

    СМ. ТАКЖЕ

    ip(7)

    RFC826 описывает ARP.
    RFC2461 описывает определение соседних машин с помощью протоколов IPv6 и основные используемые алгоритмы.

    Linux 2.2+ IPv4 ARP использует алгоритмы IPv6, когда они применимы.


     

    Index

    НАЗВАНИЕ
    ОПИСАНИЕ
    СИСТЕМНЫЕ ВЫЗОВЫ
    СИСТЕМНЫЕ ВЫЗОВЫ
    НАЙДЕННЫЕ ОШИБКИ
    ВЕРСИИ
    СМ. ТАКЖЕ


    Поиск по тексту MAN-ов: 




    Спонсоры:
    Inferno Solutions
    Ideco
    A-Real
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру