¿Qué es el ARP?
Para poder entender qué es el ARP timeout, primero es importante entender qué es el ARP y para que sirve.
Al enviar paquetes de datos usando TCP/IP desde nuestro equipo a otro equipo, ya sea en la misma subred u otra, debemos conocer la dirección IP de destino del paquete. Sin embargo, con esto no es suficiente, ya que nuestro router debe conocer cual es la dirección MAC asociada a la dirección IPv4 de destino (o del gateway). Este proceso de mapeo entre una dirección IPv4 y una dirección MAC se realiza con el protocolo ARP que realiza esta traducción.
Más específicamente, cada vez que queremos enviar un paquete, nuestro router deberá hacer una consulta ARP broadcast que se envía a todos los dispositivos que pertenecen a la misma LAN, y recibirá la respuesta por parte del equipo que tenga la dirección IPv4. Esto implica una enorme cantidad de paquetes de broadcast, lo que produce un mayor consumo de ancho de banda, pero principalmente hace un mayor consumo de CPU en los equipos, sean o no los destinatarios de la dirección IPv4, ya que igual se deben procesar estos paquetes ARP broadcast. En IPv6 no se usa ARP, sino que se usa IPv6 neighbor caché, tema que cubriremos en un próximo artículo.
Reducir el problema de consumo con ARP timeout.
Para reducir este problema, los routers mantienen una tabla ARP que actúa como un caché, donde se mantiene una relación entre dirección IPv4 y dirección MAC, evitando así que por cada paquete nuevo se deba hacer la consulta ARP broadcast, sino que solamente se volverá a hacer la consulta ARP broadcast una vez que la entrada haya expirado (timeout). También se pueden crear entradas ARP estáticas, pero no las cubriremos en este artículo, ya que en la gran mayoría de los casos su uso implica una carga administrativa muchísimo mayor que el beneficio de esto.
Por lo tanto, el ARP timeout es el tiempo máximo de duración en caché de un registro ARP. El valor por defecto del ARP timeout está a discreción de cada fabricante de hardware o software, sin embargo, en algunos equipos este valor es extremadamente bajo, lo que al combinarse con el gran número de routers presentes en un IX, que además sólo se cambian en forma esporádica ya que los ISPs no andan cambiando sus routers de borde cada 5 minutos, hacen que sea importante definir un valor de ARP timeout más alto.
Impacto de un ARP timeout bajo.
Veamos el impacto de un ARP timeout bajo, como por ejemplo los 30 segundos que tienen por defecto los equipos Mikrotik. Al dividir las 24 horas del día en 30 segundos nos da que nuestro equipo realizará 2880 solicitudes al día por cada dirección IPv4, no en total, sino que por cada dirección IPv4, por lo que deberemos multiplicar este valor por la cantidad de hosts presentes en la red. Veamos que pasa si nuestro router está en una red /22. Hagamos los cálculos, 2880 x 1022 (1024 menos la dirección de red y brodcast), que da 2.943.360, es decir, nuestro router enviará casi 3 millones de paquetes al día. Si todos los hosts de la subred /22 tienen configurado el mismo ARP timeout de 30 segundos entonces nuestro router recibirá casi 3.000 millones de paquetes ARP al día, es decir, ¡casi 30.000 pps sólo en paquetes ARP!
Por otro lado, si configuramos el ARP timeout en 4 horas (14400 segundos), que es el valor que en Perú IX recomendamos configurar (en realidad, casi todos los IX del mundo recomiendan el mismo valor de ARP timeout) en nuestro router de borde, se producirán sólo 6 consultas de ARP broadcast por cada dirección IPv4 al día, lo que si lo multiplicamos por los hosts presentes en la red /22 nos da un total de 6.132 paquetes al día. Y asumiendo que todos los hosts también configuran su ARP timeout en 4 horas, entonces pasamos de los 3.000 millones de paquetes ARP al día que se recibiríamos a sólo 6 millones de paquetes ARP al día, es decir, ¡alrededor de 500 veces menos paquetes ARP que nuestro router deberá procesar!
¿Cómo configurar el ARP timeout a 4 horas en mi router de borde?
Es muy fácil, aquí te mostramos los ejemplos dependiendo de la marca de tu router
Cisco
1arp timeout 14400
Juniper
1arp timeout 14400
Huawei
1arp expire-time 14400
Mikrotik
1/ip settings set arp-timeout=4h
Desde RouterOS 6.36 hacia arriba también se soporta definir el ARP-timeout por interfaz no sólo en forma global1/interface ethernet set [ find default-name=<interface> ] arp-timeout=4h
Arista
En Arista el ARP timeout por defecto es de 4 horas, pero si se quiere modificar el comando es 1arp aging timeout 14400