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.