Provided by: manpages-es_1.55-10_all bug

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 PF_INET.

       El módulo ARP mantiene una cache de asociaciones entre direcciones hardware y  direcciones
       de  protocolo.  La cache tiene un tamaño limitado por lo que las entradas antiguas y menos
       frecuentemente usadas son elminadas por un recolector de  basura.  Las  entradas  marcadas
       como  permanentes  nunca  son  eliminadas  por  el recolector de basura. La caché se puede
       manipular directamente mediante ioctls y su comportamiento se puede ajustar  mediante  las
       sysctls definidas más abajo.

       Una  entrada  de  la  cache  de  vecinos  se  considerará  caduca  cuando  no  exista  una
       retroalimentación positiva después de algún tiempo para una asociación existente (vea  las
       sysctls  más  abajo).   La  retroalimentación  positiva  puede  ser  obtenida  de una capa
       superior; por ejemplo de una confirmación positiva (ACK) de TCP. Otros  protocolos  pueden
       señalizar la progresión del reenvío usando la opción MSG_CONFIRM en sendmsg(2).  Cuando no
       hay progresión de reenvío ARP vuelve a intentarlo.  Primero intenta consultar a un demonio
       arp local app_solicit veces.  Si esto falla y se conoce la antigua dirección MAC, se envía
       un sondeo unidestino durante ucast_solicit veces. Si esto también falla, se  realizará  la
       difusión  de  una  nueva  petición  ARP a la red. Las peticiones sólo se envían cuando hay
       datos encolados para ser enviados.

       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

       Existen  tres  ioctls disponibles en todos los conectores PF_INET.  Toman un puntero a una
       estructura struct arpreq como argumento.

       struct arpreq
       {
           struct sockaddr arp_pa;      /* dirección del protocolo */
           struct sockaddr arp_ha;      /* dirección hardware */
           int             arp_flags;   /* opciones */
           struct sockaddr arp_netmask; /* máscara de red de la dirección
                                           de protocolo */
           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  debe  ser un conector AF_INET y arp_ha debe tener el mismo tipo que el dispositivo
       que se especifica en arp_dev.  arp_dev es una cadena terminada en cero que da el nombre de
       un dispositivo.

       ┌──────────────────────────────────────────────┐
       │                  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.

SYSCTLS

       El  módulo  ARP  soporta  una  interfaz  sysctl  para  configurar  parámetros  globales  o
       específicos  de  una  interfaz.   Se puede acceder a las sysctls leyendo o escribiendo los
       ficheros /proc/sys/net/ipv4/neigh/*/* o con la  interfaz  sysctl(2).   Cada  interfaz  del
       sistema  tiene  su  propio  directorio en /proc/sys/net/ipv4/neigh/.  La configuración del
       directorio `por defecto' se usa para todos los dispositivos recién creados. A menos que se
       indique otra cosa, las sysctls relacionadas con el tiempo se especifican en segundos.

       anycast_delay
              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
              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
              Una  vez que se ha encontrado un vecino, la entrada se considera válida durante, al
              menos, un valor aleatorio entre  base_reachable_time/2  y  3*base_reachable_time/2.
              La  validez  de  una entrada se ampliará si recibe retroalimentación positiva desde
              los protocolos de los niveles más altos.  El valor por defecto es de 30 segundos.

       delay_first_probe_time
              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
              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
              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
              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
              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
              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
              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
              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
              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
              Número  máximo  de  paquetes que se pueden encolar para direcciones proxy-ARP.  Por
              defecto vale 64.

       retrans_time
              Número de unidades de tiempo a esperar antes  de  retransmitir  una  petición.   El
              valor por defecto es 1 segundo.

       ucast_solicit
              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
              Número máximo de paquetes que otras capas de red pueden encolar para cada dirección
              sin resolver. Por defecto vale 3.

FALLOS

       Algunos  valores del cronómetro se especifican en unidades de tiempo (jiffies), cuyo valor
       dependen de la arquitectura. En los Alpha una unidad de tiempo es 1/1024 segundos y en  la
       mayoría de arquitecturas es 1/100 segundos.

       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).

       Esta  página  de  manual mezcla funcionalidad específica de IPv4 y comportida entre IPv4 e
       IPv6.

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).

       Los sysctls del tipo neigh/* no existían en versiones de Linux anteriores a la 2.2.

VÉASE TAMBIÉN

       ip(7)

       RFC826 para una descripción de ARP.
       RFC2461  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.