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.

Página man de Linux                               3 junio 1999                                            ARP(7)