icmp, IPPROTO_ICMP - Linux IPv4 ICMP kernel module.
DESCRIPTION
This kernel protocol module implements the Internet Con
trol Message Protocol defined in RFC792. It is used to
signal error conditions and for diagnosis. The user
doesn't interact directly with this module; instead it
communicates with the other protocols in the kernel and
these pass the ICMP errors to the application layers. The
kernel ICMP module also answers ICMP requests.
A user protocol may receive ICMP packets for all local
sockets by opening a raw socket with the protocol
IPPROTO_ICMP. See raw(7) for more information. The types
of ICMP packets passed to the socket can be filtered using
the ICMP_FILTER socket option. ICMP packets are always
processed by the kernel too, even when passed to a user
socket.
Linux limits the rate of ICMP error packets to each desti
nation. ICMP_REDIRECT and ICMP_DEST_UNREACH are also lim
ited by the destination route of the incoming packets.
SYSCTLS
ICMP supports a sysctl interface to configure some global
IP parameters. The sysctls can be accessed by reading or
writing the /proc/sys/net/ipv4/* files or with the
sysctl(2) interface. Most of these sysctls are rate limi
tations for specific ICMP types. Linux 2.2 uses a token
bucket filter to limit ICMPs. The value is the timeout in
jiffies until the token bucket filter is cleared after a
burst. A jiffy is a system dependent unit, usually 10ms on
x86 and about 1ms on alpha and IA64.
icmp_destunreach_rate
Maximum rate to send ICMP Destination Unreachable
packets. This limits the rate at which packets are
sent to any individual route or destination. The
limit does not affect sending of ICMP_FRAG_NEEDED
packets needed for path MTU discovery.
icmp_echo_ignore_all
If this value is non-zero, Linux will ignore all
ICMP_ECHO requests.
icmp_echo_ignore_broadcasts
If this value is non-zero, Linux will ignore all
ICMP_ECHO packets sent to broadcast addresses.
icmp_echoreply_rate
Maximum rate for sending ICMP_ECHOREPLY packets in
response to ICMP_ECHOREQUEST packets.
Maximum rate for sending ICMP_PARAMETERPROB pack
ets. These packets are sent when a packet arrives
with an invalid IP header.
icmp_timeexceed_rate
Maximum rate for sending ICMP_TIME_EXCEEDED pack
ets. These packets are sent to prevent loops when
a packet has crossed too many hops.
NOTES
As many other implementations don't support IPPROTO_ICMP
raw sockets, this feature should not be relied on in
portable programs.
ICMP_REDIRECT packets are not sent when Linux is not act
ing as a router. They are also only accepted from the old
gateway defined in the routing table and the redirect
routes are expired after some time.
The 64-bit timestamp returned by ICMP_TIMESTAMP is in mil
liseconds since January 1, 1970.
Linux ICMP internally uses a raw socket to send ICMPs.
This raw socket may appear in netstat(8) output with a
zero inode.
VERSIONS
Support for the ICMP_ADDRESS request was removed in 2.2.
Support for ICMP_SOURCE_QUENCH was removed in Linux 2.2.
SEE ALSO
ip(7)
RFC792 for a description of the ICMP protocol.
Man(1) output converted with
man2html