version 1, including all changes.
.
Rev |
Author |
# |
Line |
1 |
perry |
1 |
ICMP |
|
|
2 |
!!!ICMP |
|
|
3 |
NAME |
|
|
4 |
DESCRIPTION |
|
|
5 |
SYSCTLS |
|
|
6 |
NOTES |
|
|
7 |
VERSIONS |
|
|
8 |
SEE ALSO |
|
|
9 |
---- |
|
|
10 |
!!NAME |
|
|
11 |
|
|
|
12 |
|
|
|
13 |
icmp, IPPROTO_ICMP - Linux IPv4 ICMP kernel module. |
|
|
14 |
!!DESCRIPTION |
|
|
15 |
|
|
|
16 |
|
|
|
17 |
This kernel protocol module implements the Internet Control |
|
|
18 |
Message Protocol defined in RFC792. It is used to signal |
|
|
19 |
error conditions and for diagnosis. The user doesn't |
|
|
20 |
interact directly with this module; instead it communicates |
|
|
21 |
with the other protocols in the kernel and these pass the |
|
|
22 |
ICMP errors to the application layers. The kernel ICMP |
|
|
23 |
module also answers ICMP requests. |
|
|
24 |
|
|
|
25 |
|
|
|
26 |
A user protocol may receive ICMP packets for all local |
|
|
27 |
sockets by opening a raw socket with the protocol |
|
|
28 |
__IPPROTO_ICMP__. See raw(7) for more information. |
|
|
29 |
The types of ICMP packets passed to the socket can be |
|
|
30 |
filtered using the __ICMP_FILTER__ socket option. ICMP |
|
|
31 |
packets are always processed by the kernel too, even when |
|
|
32 |
passed to a user socket. |
|
|
33 |
|
|
|
34 |
|
|
|
35 |
Linux limits the rate of ICMP error packets to each |
|
|
36 |
destination. __ICMP_REDIRECT__ and |
|
|
37 |
__ICMP_DEST_UNREACH__ are also limited by the destination |
|
|
38 |
route of the incoming packets. |
|
|
39 |
!!SYSCTLS |
|
|
40 |
|
|
|
41 |
|
|
|
42 |
ICMP supports a sysctl interface to configure some global IP |
|
|
43 |
parameters. The sysctls can be accessed by reading or |
|
|
44 |
writing the __/proc/sys/net/ipv4/*__ files or with the |
|
|
45 |
sysctl(2) interface. Most of these sysctls are rate |
|
|
46 |
limitations for specific ICMP types. Linux 2.2 uses a token |
|
|
47 |
bucket filter to limit ICMPs. The value is the timeout in |
|
|
48 |
jiffies until the token bucket filter is cleared after a |
|
|
49 |
burst. A jiffy is a system dependent unit, usually 10ms on |
|
|
50 |
x86 and about 1ms on alpha and IA64. |
|
|
51 |
|
|
|
52 |
|
|
|
53 |
__icmp_destunreach_rate__ |
|
|
54 |
|
|
|
55 |
|
|
|
56 |
Maximum rate to send ICMP Destination Unreachable packets. |
|
|
57 |
This limits the rate at which packets are sent to any |
|
|
58 |
individual route or destination. The limit does not affect |
|
|
59 |
sending of __ICMP_FRAG_NEEDED__ packets needed for path |
|
|
60 |
MTU discovery. |
|
|
61 |
|
|
|
62 |
|
|
|
63 |
__icmp_echo_ignore_all__ |
|
|
64 |
|
|
|
65 |
|
|
|
66 |
If this value is non-zero, Linux will ignore all |
|
|
67 |
__ICMP_ECHO__ requests. |
|
|
68 |
|
|
|
69 |
|
|
|
70 |
__icmp_echo_ignore_broadcasts__ |
|
|
71 |
|
|
|
72 |
|
|
|
73 |
If this value is non-zero, Linux will ignore all |
|
|
74 |
__ICMP_ECHO__ packets sent to broadcast |
|
|
75 |
addresses. |
|
|
76 |
|
|
|
77 |
|
|
|
78 |
__icmp_echoreply_rate__ |
|
|
79 |
|
|
|
80 |
|
|
|
81 |
Maximum rate for sending __ICMP_ECHOREPLY__ packets in |
|
|
82 |
response to __ICMP_ECHOREQUEST__ packets. |
|
|
83 |
|
|
|
84 |
|
|
|
85 |
__icmp_paramprob_rate__ |
|
|
86 |
|
|
|
87 |
|
|
|
88 |
Maximum rate for sending __ICMP_PARAMETERPROB__ packets. |
|
|
89 |
These packets are sent when a packet arrives with an invalid |
|
|
90 |
IP header. |
|
|
91 |
|
|
|
92 |
|
|
|
93 |
__icmp_timeexceed_rate__ |
|
|
94 |
|
|
|
95 |
|
|
|
96 |
Maximum rate for sending __ICMP_TIME_EXCEEDED__ packets. |
|
|
97 |
These packets are sent to prevent loops when a packet has |
|
|
98 |
crossed too many hops. |
|
|
99 |
!!NOTES |
|
|
100 |
|
|
|
101 |
|
|
|
102 |
As many other implementations don't support |
|
|
103 |
__IPPROTO_ICMP__ raw sockets, this feature should not be |
|
|
104 |
relied on in portable programs. |
|
|
105 |
|
|
|
106 |
|
|
|
107 |
__ICMP_REDIRECT__ packets are not sent when Linux is not |
|
|
108 |
acting as a router. They are also only accepted from the old |
|
|
109 |
gateway defined in the routing table and the redirect routes |
|
|
110 |
are expired after some time. |
|
|
111 |
|
|
|
112 |
|
|
|
113 |
The 64-bit timestamp returned by __ICMP_TIMESTAMP__ is in |
|
|
114 |
milliseconds since January 1, 1970. |
|
|
115 |
|
|
|
116 |
|
|
|
117 |
Linux ICMP internally uses a raw socket to send ICMPs. This |
|
|
118 |
raw socket may appear in netstat(8) output with a |
|
|
119 |
zero inode. |
|
|
120 |
!!VERSIONS |
|
|
121 |
|
|
|
122 |
|
|
|
123 |
Support for the __ICMP_ADDRESS__ request was removed in |
|
|
124 |
2.2. |
|
|
125 |
|
|
|
126 |
|
|
|
127 |
Support for __ICMP_SOURCE_QUENCH__ was removed in Linux |
|
|
128 |
2.2. |
|
|
129 |
!!SEE ALSO |
|
|
130 |
|
|
|
131 |
|
|
|
132 |
ip(7) |
|
|
133 |
|
|
|
134 |
|
|
|
135 |
RFC792 for a description of the ICMP protocol. |
|
|
136 |
---- |