man*/: Improve timestamp documentation
[man-pages.git] / man7 / icmp.7
blobda6959660e42809063859cb53da4df3f37e07287
1 '\" t
2 .\" SPDX-License-Identifier: Linux-man-pages-1-para
3 .\"
4 .\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
5 .\"
6 .\" $Id: icmp.7,v 1.6 2000/08/14 08:03:45 ak Exp $
7 .\"
8 .TH icmp 7 (date) "Linux man-pages (unreleased)"
9 .SH NAME
10 icmp \- Linux IPv4 ICMP kernel module.
11 .SH DESCRIPTION
12 This kernel protocol module implements the Internet Control
13 Message Protocol defined in RFC\ 792.
14 It is used to signal error conditions and for diagnosis.
15 The user doesn't interact directly with this module;
16 instead it communicates with the other protocols in the kernel
17 and these pass the ICMP errors to the application layers.
18 The kernel ICMP module also answers ICMP requests.
20 A user protocol may receive ICMP packets for all local sockets by opening
21 a raw socket with the protocol
22 .BR IPPROTO_ICMP .
23 See
24 .BR raw (7)
25 for more information.
26 The types of ICMP packets passed to the socket can be filtered using the
27 .B ICMP_FILTER
28 socket option.
29 ICMP packets are always processed by the kernel too, even
30 when passed to a user socket.
32 Linux limits the rate of ICMP error packets to each destination.
33 .B ICMP_REDIRECT
34 and
35 .B ICMP_DEST_UNREACH
36 are also limited by the destination route of the incoming packets.
37 .SS /proc interfaces
38 ICMP supports a set of
39 .I /proc
40 interfaces to configure some global IP parameters.
41 The parameters can be accessed by reading or writing files in the directory
42 .IR /proc/sys/net/ipv4/ .
43 Most of these parameters are rate limitations for specific ICMP types.
44 Linux 2.2 uses a token bucket filter to limit ICMPs.
45 .\" FIXME . better description needed
46 The value is the timeout in jiffies until the token bucket filter is
47 cleared after a burst.
48 A jiffy is a system dependent unit, usually 10ms on i386 and
49 about 1ms on alpha and ia64.
50 .TP
51 .IR icmp_destunreach_rate " (Linux 2.2 to Linux 2.4.9)"
52 .\" Precisely: from Linux 2.1.102
53 Maximum rate to send ICMP Destination Unreachable packets.
54 This limits the rate at which packets are sent to any individual
55 route or destination.
56 The limit does not affect sending of
57 .B ICMP_FRAG_NEEDED
58 packets needed for path MTU discovery.
59 .TP
60 .IR icmp_echo_ignore_all " (since Linux 2.2)"
61 .\" Precisely: 2.1.68
62 If this value is nonzero, Linux will ignore all
63 .B ICMP_ECHO
64 requests.
65 .TP
66 .IR icmp_echo_ignore_broadcasts " (since Linux 2.2)"
67 .\" Precisely: from Linux 2.1.68
68 If this value is nonzero, Linux will ignore all
69 .B ICMP_ECHO
70 packets sent to broadcast addresses.
71 .TP
72 .IR icmp_echoreply_rate " (Linux 2.2 to Linux 2.4.9)"
73 .\" Precisely: from Linux 2.1.102
74 Maximum rate for sending
75 .B ICMP_ECHOREPLY
76 packets in response to
77 .B ICMP_ECHOREQUEST
78 packets.
79 .TP
80 .IR icmp_errors_use_inbound_ifaddr " (Boolean; default: disabled; since Linux 2.6.12)"
81 .\" The following taken from Linux 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
82 If disabled, ICMP error messages are sent with the primary address of
83 the exiting interface.
84 .IP
85 If enabled, the message will be sent with the primary address of
86 the interface that received the packet that caused the ICMP error.
87 This is the behavior that many network administrators will expect from
88 a router.
89 And it can make debugging complicated network layouts much easier.
90 .IP
91 Note that if no primary address exists for the interface selected,
92 then the primary address of the first non-loopback interface that
93 has one will be used regardless of this setting.
94 .TP
95 .IR icmp_ignore_bogus_error_responses " (Boolean; default: disabled; since Linux 2.2)"
96 .\" precisely: since Linux 2.1.32
97 .\" The following taken from Linux 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
98 Some routers violate RFC1122 by sending bogus responses to broadcast frames.
99 Such violations are normally logged via a kernel warning.
100 If this parameter is enabled, the kernel will not give such warnings,
101 which will avoid log file clutter.
103 .IR icmp_paramprob_rate " (Linux 2.2 to Linux 2.4.9)"
104 .\" Precisely: from Linux 2.1.102
105 Maximum rate for sending
106 .B ICMP_PARAMETERPROB
107 packets.
108 These packets are sent when a packet arrives with an invalid IP header.
110 .IR icmp_ratelimit " (integer; default: 1000; since Linux 2.4.10)"
111 .\" The following taken from Linux 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
112 Limit the maximum rates for sending ICMP packets whose type matches
113 .I icmp_ratemask
114 (see below) to specific targets.
115 0 to disable any limiting,
116 otherwise the minimum space between responses in milliseconds.
118 .IR icmp_ratemask " (integer; default: see below; since Linux 2.4.10)"
119 .\" The following taken from Linux 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
120 Mask made of ICMP types for which rates are being limited.
122 Significant bits: IHGFEDCBA9876543210
124 Default mask:     0000001100000011000 (0x1818)
126 Bit definitions (see the Linux kernel source file
127 .IR include/linux/icmp.h ):
128 .RS 12
130 l l.
131 0 Echo Reply
132 3 Destination Unreachable *
133 4 Source Quench *
134 5 Redirect
135 8 Echo Request
136 B Time Exceeded *
137 C Parameter Problem *
138 D Timestamp Request
139 E Timestamp Reply
140 F Info Request
141 G Info Reply
142 H Address Mask Request
143 I Address Mask Reply
147 The bits marked with an asterisk are rate limited by default
148 (see the default mask above).
150 .IR icmp_timeexceed_rate " (Linux 2.2 to Linux 2.4.9)"
151 Maximum rate for sending
152 .B ICMP_TIME_EXCEEDED
153 packets.
154 These packets are
155 sent to prevent loops when a packet has crossed too many hops.
157 .IR ping_group_range " (two integers; default: see below; since Linux 2.6.39)"
158 Range of the group IDs (minimum and maximum group IDs, inclusive)
159 that are allowed to create ICMP Echo sockets.
160 The default is "1 0", which
161 means no group is allowed to create ICMP Echo sockets.
162 .SH VERSIONS
163 Support for the
164 .B ICMP_ADDRESS
165 request was removed in Linux 2.2.
167 Support for
168 .B ICMP_SOURCE_QUENCH
169 was removed in Linux 2.2.
170 .SH NOTES
171 As many other implementations don't support
172 .B IPPROTO_ICMP
173 raw sockets, this feature
174 should not be relied on in portable programs.
175 .\" not really true ATM
176 .\" .P
177 .\" Linux ICMP should be compliant to RFC 1122.
179 .B ICMP_REDIRECT
180 packets are not sent when Linux is not acting as a router.
181 They are also accepted only from the old gateway defined in the
182 routing table and the redirect routes are expired after some time.
184 The 64-bit timestamp returned by
185 .B ICMP_TIMESTAMP
186 is in milliseconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC).
188 Linux ICMP internally uses a raw socket to send ICMPs.
189 This raw socket may appear in
190 .BR netstat (8)
191 output with a zero inode.
192 .SH SEE ALSO
193 .BR ip (7),
194 .BR rdisc (8)
196 RFC\ 792 for a description of the ICMP protocol.