Provided by:
manpages-es_1.55-10_all 
NOMBRE
arp - Modulo ARP del nucleo de Linux.
DESCRIPCI'ON
Este modulo de protocolo del nucleo implementa el protocolo de
resolucion 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 interactua directamente con
este modulo salvo para configurarlo. En cambio, proporciona un servicio
para otros protocolos dentro del nucleo.
Un proceso de usuario puede recibir paquetes ARP usando conectores
packet(7). Tambien existe un mecanismo para gestionar la cache ARP en
el espacio de usuario usando conectores netlink(7). La tabla ARP
tambien se puede controlar aplicando la llamada ioctl (2) a cualquier
conector PF_INET.
El modulo ARP mantiene una cache de asociaciones entre direcciones
hardware y direcciones de protocolo. La cache tiene un tamano 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 cache
se puede manipular directamente mediante ioctls y su comportamiento se
puede ajustar mediante las sysctls definidas mas abajo.
Una entrada de la cache de vecinos se considerara caduca cuando no
exista una retroalimentacion positiva despues de algun tiempo para una
asociacion existente (vea las sysctls mas abajo). La retroalimentacion
positiva puede ser obtenida de una capa superior; por ejemplo de una
confirmacion positiva (ACK) de TCP. Otros protocolos pueden senalizar
la progresion del reenvio usando la opcion MSG_CONFIRM en sendmsg(2).
Cuando no hay progresion de reenvio ARP vuelve a intentarlo. Primero
intenta consultar a un demonio arp local app_solicit veces. Si esto
falla y se conoce la antigua direccion MAC, se envia un sondeo
unidestino durante ucast_solicit veces. Si esto tambien falla, se
realizara la difusion de una nueva peticion ARP a la red. Las
peticiones solo se envian cuando hay datos encolados para ser enviados.
Linux automaticamente anadira una entrada proxy arp no permanente
cuando reciba una peticion de una direccion a la que el reenvia y
cuando el proxy arp este activo en la interfaz receptora. Cuando existe
una ruta de rechazo para un destino, no se anade 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; /* direccion del protocolo */
struct sockaddr arp_ha; /* direccion hardware */
int arp_flags; /* opciones */
struct sockaddr arp_netmask; /* mascara de red de la direccion
de protocolo */
char arp_dev[16];
};
SIOCSARP, SIOCDARP y SIOCGARP establecen, borran u obtienen una
asociacion ARP, respectivamente. Establecer y borrar asociaciones ARP
son operaciones privilegiadas y solo 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 | Busqueda completa |
+----------------+-----------------------------+
|ATF_PERM | Entrada permanente |
+----------------+-----------------------------+
|ATF_PUBL | Publicar entrada |
+----------------+-----------------------------+
|ATF_USETRAILERS | Son necesarios terminadores |
+----------------+-----------------------------+
|ATF_NETMASK | Usar una mascara de red |
+----------------+-----------------------------+
|ATF_DONTPUB | No responder |
+----------------+-----------------------------+
Si se activa la bandera ATF_NETMASK, arp_netmask debe ser valida. La
version 2.2 de Linux no soporta entradas de proxy arp de red, por lo
que deberia asignar a arp_netmask el valor 0xffffffff o 0 para eliminar
una entrada proxy arp existente. La opcion ATF_USETRAILERS esta
obsoleta y no deberia usarse.
SYSCTLS
El modulo ARP soporta una interfaz sysctl para configurar parametros
globales o especificos 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 configuracion del
directorio `por defecto' se usa para todos los dispositivos recien
creados. A menos que se indique otra cosa, las sysctls relacionadas con
el tiempo se especifican en segundos.
anycast_delay
Numero maximo de unidades de tiempo (jiffies) a esperar antes de
contestar a un mensaje IPv6 de solicitud de vecinos. El soporte
"cualquier direccion" (anycast) todavia no esta implementado.
El valor por defecto es de 1 segundo.
app_solicit
El numero maximo 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
valida durante, al menos, un valor aleatorio entre
base_reachable_time/2 y 3*base_reachable_time/2. La validez de
una entrada se ampliara si recibe retroalimentacion positiva
desde los protocolos de los niveles mas altos. El valor por
defecto es de 30 segundos.
delay_first_probe_time
Tiempo de espera antes del primer sondeo despues de que se haya
decidido que un vecino esta caduco. Por defecto es 5 segundos.
gc_interval
Periodo con el que el recolector de basura para las entradas de
vecinos deberia 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
Numero minimo de entradas a guardar en la cache ARP. El
recolector de basura no se ejecutara si hay menos entradas en la
cache que el numero indicado. Por defecto vale 128.
gc_thresh2
Numero maximo flexible de entradas a guardar en la cache ARP. El
recolector de basura permitira que el numero de entradas exceda
este limite durante 5 segundos antes de realizar una
recoleccion. El valor por defecto es de 512 entradas.
gc_thresh3
Numero maximo estricto de entradas a guardar en la cache ARP. El
recolector de basura se ejecutara siempre si hay mas entradas en
la cache que el numero indicado. Por defecto vale 1024.
locktime
Numero minimo de unidades de tiempo que debe permanecer una
entrada ARP en la cache. Esto evita la modificacion continua de
la cache ARP si hay mas de una asociacion potencial (debido,
generalmente, a una mala configuracion de la red). Por defecto
es 1 segundo.
mcast_solicit
Numero maximo de intentos para resolver una direccion mediante
multidestino/difusion antes de marcar la entrada como
inalcanzable. El valor por defecto es 3.
proxy_delay
Cuando se recibe una solicitud ARP para una direccion 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
Numero maximo de paquetes que se pueden encolar para direcciones
proxy-ARP. Por defecto vale 64.
retrans_time
Numero de unidades de tiempo a esperar antes de retransmitir una
peticion. El valor por defecto es 1 segundo.
ucast_solicit
Numero maximo de intentos para enviar sondeos unidestino antes
de preguntar al demonio ARP (vea app_solicit). Por defecto es
3.
unres_qlen
Numero maximo de paquetes que otras capas de red pueden encolar
para cada direccion sin resolver. Por defecto vale 3.
FALLOS
Algunos valores del cronometro 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 mayoria de arquitecturas es
1/100 segundos.
No hay forma de indicar una retroalimentacion positiva desde el espacio
de usuario. Esto significa que los protocolos orientados a conexion
implementados en el espacio de usuario generaran un trafico ARP
excesivo, debido a que ndisc volvera regularmente a sondear las
direcciones MAC. El mismo problema es aplicable a algunos protocolos
del nucleo (p.e. NFS sobre UDP).
Esta pagina de manual mezcla funcionalidad especifica de IPv4 y
comportida entre IPv4 e IPv6.
VERSIONES
La estructura struct arpreq cambio en la version 2.0 de Linux para
incluir el miembro arp_dev y los numeros de las ioctls cambiaron a la
misma vez. El soporte para las antiguas ioctls se elimino en la
version 2.2 de Linux.
El soporte para entradas proxy arp de red (mascara de red distinta de
0xffffffff) se elimino en la version 2.2 de Linux. Se reemplazo por una
configuracion proxy arp automatica realizada por el nucleo para todos
los anfitriones (hosts) alcanzables a traves de otras interfaces
(cuando estan activos el reenvio y el proxy arp en la interfaz).
Los sysctls del tipo neigh/* no existian en versiones de Linux
anteriores a la 2.2.
V'EASE TAMBI'EN
ip(7)
RFC826 para una descripcion de ARP.
RFC2461 para una descripcion del descubrimiento de vecinos de IPv6 y
los algoritmos base utilizados.
La implementacion IPv4 ARP de Linux 2.2+ usa los algoritmos IPv6 cuando
estos son aplicables.
Pagina man de Linux 3 junio 1999 ARP(7)