NOMBRE

icmp - Módulo IPv4 ICMP del núcleo de Linux

DESCRIPCIÓN

Este módulo de protocolo del núcleo implementa el Protocolo de Mensajes de Control de Internet (Internet Control Message Protocol, ICMP) definido en el documento RFC 792. Se utiliza para indicar condiciones de error y para diagnóstico. El usuario no interactúa directamente con este módulo. En vez de eso, se comunica con los otros protocolos del núcleo y éstos pasan los errores ICMP a las capas de la aplicación. El módulo ICMP del núcleo también responde a peticiones ICMP.
Un protocolo de usuario puede recibir paquetes ICMP para todos los conectores locales abriendo un conector directo (raw) con el protocolo IPPROTO_ICMP. Vea raw(7) para más información. Los tipos de los paquetes ICMP pasados al conector se pueden filtrar usando la opción de conector ICMP_FILTER. Los paquetes ICMP son también siempre procesados por el núcleo, aunque se pasen a un conector de usuario.
Linux limita la tasa de paquetes de error ICMP para cada destino. ICMP_REDIRECT y ICMP_DEST_UNREACH también están limitados por la ruta de destino de los paquetes entrantes.

Interfaces /proc

ICMP implementa una serie de interfaces /proc para configurar algunos parámetros IP globales. Estos parámetros son accesibles leyendo o escribiendo los ficheros del directorio /proc/sys/net/ipv4. La mayoría de estos parámetros son limitaciones de tasas para tipos ICMP específicos. Linux 2.2 usa un filtro de cubetas de fichas (token bucket) para limitar los ICMP. El valor es el plazo de tiempo en unidades de tiempo (jiffies) hasta que el filtro de cubetas de fichas desaparece después de una ráfaga. Un 'jiffy' es una unidad dependiente del sistema, típicamente 10ms en la arquitectura x86 y alrededor de 1ms en las arquitecturas alpha e IA64.
icmp_destunreach_rate (Linux 2.2 a 2.4.9)
Tasa máxima para enviar paquetes ICMP de "destino inalcanzable". Esto limita la tasa a la que se envían los paquetes a cualquier ruta o destino individual. El límite no afecta al envío de paquetes ICMP_FRAG_NEEDED necesarios para descubrir la MTU de la ruta.
icmp_echo_ignore_all (desde Linux 2.2)
Si este valor es distinto de cero, Linux ignorará todas las peticiones ICMP_ECHO.
icmp_echo_ignore_broadcasts (desde Linux 2.2)
Si este valor es distinto de cero, Linux ignorará todos los paquetes ICMP_ECHO enviados a las direcciones de difusión (broadcast).
icmp_echoreply_rate (Linux 2.2 hasta 2.4.9)
Tasa máxima de envío de paquetes ICMP_ECHOREPLY en respuesta a paquetes ICMP_ECHOREQUEST.
icmp_errors_use_inbound_ifaddr (Booleano; por defecto: desactivado; a partir de Linux 2.6.12)
Si está deshabilitado, los mensajes de error ICMP se envía con la dirección primaria de la interfaz existente.
Si está activado, se enviará el mensaje con la dirección primaria de la interfaz que recibió el paquete causante del error ICMP. Esto es lo que esperan que haga un router la mayoría de administradores de red, ya que facilita mucho la depuración de errores en redes complejas.
Observe que si la interfaz seleccionada no tiene una dirección primaria, se empleará la primera interfaz (distinta de la de loopback) que disponga de una con independencia de la configuración.
icmp_ignore_bogus_error_responses (Booleano; por defecto:desactivado; a partir de Linux 2.2)
Algunos routers incumplen el RFC 1122 al responder a mensajes erróneos enviados a direcciones de difusión (broadcast). Estos incumplimientos suelen quedar registrados en los avisos del núcleo. Si se activa este parámetro, el núcleo no los registrará evitando en mucho casos que se llenen en exceso los archivos de registro.
icmp_paramprob_rate (Linux 2.2 hasta 2.4.9)
Tasa máxima de envío de paquetes ICMP_PARAMETERPROB. Estos paquetes se envían cuando un paquete llega con una cabecera IP inválida.
icmp_ratelimit (número entero; por defecto: 1000; a partir de Linux 2.4.10)
Limita el ritmo de envío de paquetes ICMP cuyo tipo coincidan con icmp_ratemask (vea más adelante). Su valor representa el tiempo mínimo entre respuestas medido en milisegundos, el valor '0' descativará este límite.
icmp_ratemask (entero; por defecto: vea más adelante; a partir de Linux 2.4.10)
Máscara creada a partir de los tipos ICMP a los cuales se les aplica un límite en su ratio.
Bits significativos: IHGFEDCBA9876543210
 
Máscara por defecto: 0000001100000011000 (0x1818)
Definiciones de bits (consulte el archivo de encabezado del núcleo include/linux/icmp.h):
0 Repuesta Eco
3 Destino Inalcanzable *
4 Ralentiza la Transmisión *
5 Redirección
8 Solicitud de eco
Tiempo excedido *
C Problemas en parámetros *
D Solicitud de marca temporal
E Respuesta a la solicitud de marca temporal
F Petición de información
G Respuesta a la petición de información
H Solicitud de máscara de red
I Respuesta a la solicitud de máscara de red
Los bits señalados con un asterisco tienen limitada la tasa de envío por defecto. Vea la máscara por defecto descrita anteriormente.
icmp_timeexceed_rate (Linux 2.2 hasta 2.4.9)
Tasa máxima de envío de paquetes ICMP_TIME_EXCEEDED. Estos paquetes se envían para evitar ciclos cuando un paquete ha dado demasiados saltos.
ping_group_range (dos enteros; por defecto: vea más adelante; a partir de Linux 2.6.39)
Intervalo de ID de grupo (ambos inclusive) que pueden crear conectores ICMP Eco. Por defecto sería "1 0" es decir, que ningún grupo puede crearlos.

VERSIONES

El soporte para peticiones ICMP_ADDRESS se eliminó en la versión 2.2.
El soporte para ICMP_SOURCE_QUENCH se eliminó en la versión 2.2.

NOTAS

Ya que muchas implementaciones no soportan conectores directos (raw) IPPROTO_ICMP, no debería contarse con esta característica en programas transportables.
No se envían paquetes ICMP_REDIRECT cuando Linux no actúa como enrutador (router). También, estos sólo son aceptados cuando procesden de la pasarela (gateway) anterior definida en la tabla de enrutamiento y las rutas de redirección expiran después de un cierto tiempo.
La marca de tiempo de 64 bits devuelta por ICMP_TIMESTAMP viene dada en milisegundos desde el Inicio de Unix, es decir 01-01-1970 00:00:00 +0000 (UTC).
El ICMP de Linux usa internamente un conector directo para enviar ICMPs. Este conector directo puede aparecer en la salida de netstat(8) con un nodo-i cero.

VÉASE TAMBIÉN

ip(7), rdisc(8)
RFC 792 para una descripción del protocolo ICMP.

TRADUCCIÓN

La traducción al español de esta página del manual fue creada por Juan Piernas <[email protected]> y Marcos Fouces <[email protected]>
Esta traducción es documentación libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a [email protected]

Recommended readings

Pages related to icmp you should read also: