ARP(7)

NOMBRE
arp - Módulo ARP del núcleo de Linux.

DESCRIPCIÓN
Este módulo de protocolo del núcleo implementa el protocolo de resolución de direcciones (Address Resolution Protocol, ARP) definido en RFC 826. Se usa para convertir direcciones hardware de la Capa 2 a direcciones del protocolo IPv4 y viceversa, en redes conectadas directamente. El usuario normalmente no interactúa directamente con este módulo salvo para configurarlo. En cambio, proporciona un servicio para otros protocolos dentro del núcleo.

Un proceso de usuario puede recibir paquetes ARP usando conectores packet(7). También existe un mecanismo para gestionar la cache ARP en el espacio de usuario usando conectores netlink(7). La tabla ARP también se puede controlar aplicando la llamada ioctl(2) a cualquier conector AF_INET.

The ARP module maintains a cache of mappings between hardware addresses and protocol addresses. The cache has a limited size so old and less frequently used entries are garbage-collected. Entries which are marked as permanent are never deleted by the garbage-collector. The cache can be directly manipulated by the use of ioctls and its behavior can be tuned by the /proc interfaces described below.

When there is no positive feedback for an existing mapping after some time (see the /proc interfaces below), a neighbor cache entry is considered stale. Positive feedback can be gotten from a higher layer; for example from a successful TCP ACK. Other protocols can signal forward progress using the MSG_CONFIRM flag to sendmsg(2). When there is no forward progress, ARP tries to reprobe. It first tries to ask a local arp daemon app_solicit times for an updated MAC address. If that fails and an old MAC address is known, a unicast probe is sent ucast_solicit times. If that fails too, it will broadcast a new ARP request to the network. Requests are sent only when there is data queued for sending.

Linux automáticamente añadirá una entrada proxy arp no permanente cuando reciba una petición de una dirección a la que él reenvía y cuando el proxy arp esté activo en la interfaz receptora. Cuando existe una ruta de rechazo para un destino, no se añade ninguna entrada arp.

  Ioctls
Three ioctls are available on all AF_INET sockets. They take a pointer to a struct arpreq as their argument.

    struct arpreq {
        struct sockaddr arp_pa;      /* protocol address */
        struct sockaddr arp_ha;      /* hardware address */
        int             arp_flags;   /* flags */
        struct sockaddr arp_netmask; /* netmask of protocol address */
        char            arp_dev[16];
    };

SIOCSARP, SIOCDARP y SIOCGARP establecen, borran u obtienen una asociación ARP, respectivamente.Establecer y borrar asociaciones ARP son operaciones privilegiadas y sólo pueden ser realizadas por un proceso con la capacidad CAP_NET_ADMIN o con un UID efectivo 0.

arp_pa must be an AF_INET address and arp_ha must have the same type as the device which is specified in arp_dev. arp_dev is a zero-terminated string which names a device.
    arp_flags
    Bandera | Significado
    ATF_COM | Búsqueda completa
    ATF_PERM | Entrada permanente
    ATF_PUBL | Publicar entrada
    ATF_USETRAILERS | Son necesarios terminadores
    ATF_NETMASK | Usar una máscara de red
    ATF_DONTPUB | No responder

Si se activa la bandera ATF_NETMASK, arp_netmask debe ser válida. La versión 2.2 de Linux no soporta entradas de proxy arp de red, por lo que debería asignar a arp_netmask el valor 0xffffffff o 0 para eliminar una entrada proxy arp existente. La opción ATF_USETRAILERS está obsoleta y no debería usarse.

  /proc interfaces
ARP supports a range of /proc interfaces to configure parameters on a global or per-interface basis. The interfaces can be accessed by reading or writing the /proc/sys/net/ipv4/neigh/*/* files. Each interface in the system has its own directory in /proc/sys/net/ipv4/neigh/. The setting in the "default" directory is used for all newly created devices. Unless otherwise specified, time-related interfaces are specified in seconds.

anycast_delay (desde Linux 2.2)
    Número máximo de unidades de tiempo (jiffies) a esperar antes de contestar a un mensaje IPv6 de solicitud de vecinos. El soporte "cualquier dirección" (anycast) todavía no está implementado. El valor por defecto es de 1 segundo.

app_solicit (desde Linux 2.2)
    El número máximo de sondeos a enviar a un demonio ARP en el espacio de usuario mediante netlink antes de recurrir a sondeos multidestino (vea mcast_solicit). Por defecto es 0.

base_reachable_time (desde Linux 2.2)
    Once a neighbor has been found, the entry is considered to be valid for at least a random value between base_reachable_time/2 and 3*base_reachable_time/2. An entry's validity will be extended if it receives positive feedback from higher level protocols. Defaults to 30 seconds. This file is now obsolete in favor of base_reachable_time_ms.

base_reachable_time_ms (desde Linux 2.6.12)
    As for base_reachable_time, but measures time in milliseconds. Defaults to 30000 milliseconds.

delay_first_probe_time (desde Linux 2.2)
    Tiempo de espera antes del primer sondeo después de que se haya decidido que un vecino está caduco. Por defecto es 5 segundos.

gc_interval (desde Linux 2.2)
    Periodo con el que el recolector de basura para las entradas de vecinos debería intentar ejecutarse. Por defecto es de 30 segundos.

gc_stale_time (desde Linux 2.2)
    Determina la frecuencia con la que se comprueban las entradas en busca de vecinos caducos. Cuando la entrada de un vecino se considera caduca, se resuelve de nuevo antes de enviarle datos. El valor por defecto es de 60 segundos.

gc_thresh1 (desde Linux 2.2)
    Número mínimo de entradas a guardar en la cache ARP. El recolector de basura no se ejecutará si hay menos entradas en la cache que el número indicado. Por defecto vale 128.

gc_thresh2 (desde Linux 2.2)
    Número máximo flexible de entradas a guardar en la cache ARP. El recolector de basura permitirá que el número de entradas exceda éste límite durante 5 segundos antes de realizar una recolección. El valor por defecto es de 512 entradas.

gc_thresh3 (desde Linux 2.2)
    Número máximo estricto de entradas a guardar en la cache ARP. El recolector de basura se ejecutará siempre si hay más entradas en la caché que el número indicado. Por defecto vale 1024.

locktime (desde Linux 2.2)
    Número mínimo de unidades de tiempo que debe permanecer una entrada ARP en la cache. Esto evita la modificación continua de la cache ARP si hay más de una asociación potencial (debido, generalmente, a una mala configuración de la red). Por defecto es 1 segundo.

mcast_solicit (desde Linux 2.2)
    Número máximo de intentos para resolver una dirección mediante multidestino/difusión antes de marcar la entrada como inalcanzable. El valor por defecto es 3.

proxy_delay (desde Linux 2.2)
    Cuando se recibe una solicitud ARP para una dirección proxy-ARP conocida, esperar hasta proxy_delay unidades de tiempo antes de responder. Esto se utiliza para evitar inundar la red en algunos casos. Por defecto vale 0,8 segundos.

proxy_qlen (desde Linux 2.2)
    Número máximo de paquetes que se pueden encolar para direcciones proxy-ARP. Por defecto vale 64.

retrans_time (desde Linux 2.2)
    The number of jiffies to delay before retransmitting a request. Defaults to 1 second. This file is now obsolete in favor of retrans_time_ms.

retrans_time_ms (desde Linux 2.6.12)
    The number of milliseconds to delay before retransmitting a request. Defaults to 1000 milliseconds.

ucast_solicit (desde Linux 2.2)
    Número máximo de intentos para enviar sondeos unidestino antes de preguntar al demonio ARP (vea app_solicit). Por defecto es 3.

unres_qlen (desde Linux 2.2)
    Número máximo de paquetes que otras capas de red pueden encolar para cada dirección sin resolver. Por defecto vale 3.

VERSIONES
La estructura struct arpreq cambió en la versión 2.0 de Linux para incluir el miembro arp_dev y los números de las ioctls cambiaron a la misma vez. El soporte para las antiguas ioctls se eliminó en la versión 2.2 de Linux.

El soporte para entradas proxy arp de red (máscara de red distinta de 0xffffffff) se eliminó en la versión 2.2 de Linux. Se reemplazó por una configuración proxy arp automática realizada por el núcleo para todos los anfitriones (hosts) alcanzables a través de otras interfaces (cuando están activos el reenvío y el proxy arp en la interfaz).

The neigh/* interfaces did not exist before Linux 2.2.

ERRORES
Some timer settings are specified in jiffies, which is architecture- and kernel version-dependent; see time(7).

No hay forma de indicar una retroalimentación positiva desde el espacio de usuario. Esto significa que los protocolos orientados a conexión implementados en el espacio de usuario generarán un tráfico ARP excesivo, debido a que ndisc volverá regularmente a sondear las direcciones MAC. El mismo problema es aplicable a algunos protocolos del núcleo (p.e. NFS sobre UDP).

This man page mashes together functionality that is IPv4-specific with functionality that is shared between IPv4 and IPv6.

VÉASE TAMBIÉN
capabilities(7), ip(7), arpd(8)

RFC 826 para una descripción de ARP. RFC 2461 para una descripción del descubrimiento de vecinos de IPv6 y los algoritmos base utilizados. La implementación IPv4 ARP de Linux 2.2+ usa los algoritmos IPv6 cuando éstos son aplicables.

COLOFÓN
Esta página es parte de la versión 5.10 del proyecto Linux man-pages. Puede encontrar una descripción del proyecto, información sobre cómo informar errores y la última versión de esta página en https://www.kernel.org/doc/man-pages/.

TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Juan Piernas <piernas@ditec.um.es> Esta traducción es documentación libre; lea la GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org>..