2 .\" SPDX-License-Identifier: Linux-man-pages-1-para
4 .\" This man page is Copyright (C) 1999 Matthew Wilcox <willy@bofh.ai>.
6 .\" Modified June 1999 Andi Kleen
7 .\" $Id: arp.7,v 1.10 2000/04/27 19:31:38 ak Exp $
9 .TH arp 7 (date) "Linux man-pages (unreleased)"
11 arp \- Linux ARP kernel module.
13 This kernel protocol module implements the Address Resolution
14 Protocol defined in RFC\ 826.
15 It is used to convert between Layer2 hardware addresses
16 and IPv4 protocol addresses on directly connected networks.
17 The user normally doesn't interact directly with this module except to
19 instead it provides a service for other protocols in the kernel.
21 A user process can receive ARP packets by using
24 There is also a mechanism for managing the ARP cache
25 in user-space by using
28 The ARP table can also be controlled via
34 The ARP module maintains a cache of mappings between hardware addresses
35 and protocol addresses.
36 The cache has a limited size so old and less
37 frequently used entries are garbage-collected.
38 Entries which are marked
39 as permanent are never deleted by the garbage-collector.
41 be directly manipulated by the use of ioctls and its behavior can be
44 interfaces described below.
46 When there is no positive feedback for an existing mapping after some
49 interfaces below), a neighbor cache entry is considered stale.
50 Positive feedback can be gotten from a higher layer; for example from
52 Other protocols can signal forward progress
57 When there is no forward progress, ARP tries to reprobe.
58 It first tries to ask a local arp daemon
60 times for an updated MAC address.
61 If that fails and an old MAC address is known, a unicast probe is sent
64 If that fails too, it will broadcast a new ARP
65 request to the network.
66 Requests are sent only when there is data queued
69 Linux will automatically add a nonpermanent proxy arp entry when it
70 receives a request for an address it forwards to and proxy arp is
71 enabled on the receiving interface.
72 When there is a reject route for the target, no proxy arp entry is added.
74 Three ioctls are available on all
77 They take a pointer to a
84 struct sockaddr arp_pa; /* protocol address */
85 struct sockaddr arp_ha; /* hardware address */
86 int arp_flags; /* flags */
87 struct sockaddr arp_netmask; /* netmask of protocol address */
93 .BR SIOCSARP ", " SIOCDARP " and " SIOCGARP
94 respectively set, delete, and get an ARP mapping.
95 Setting and deleting ARP maps are privileged operations and may
96 be performed only by a process with the
98 capability or an effective UID of 0.
105 must have the same type as the device which is specified in
108 is a zero-terminated string which names a device.
116 ATF_COM:Lookup complete
117 ATF_PERM:Permanent entry
118 ATF_PUBL:Publish entry
119 ATF_USETRAILERS:Trailers requested
120 ATF_NETMASK:Use a netmask
121 ATF_DONTPUB:Don't answer
130 Linux 2.2 does not support proxy network ARP entries, so this
131 should be set to 0xffffffff, or 0 to remove an existing proxy arp entry.
133 is obsolete and should not be used.
135 ARP supports a range of
137 interfaces to configure parameters on a global or per-interface basis.
138 The interfaces can be accessed by reading or writing the
139 .I /proc/sys/net/ipv4/neigh/*/*
141 Each interface in the system has its own directory in
142 .IR /proc/sys/net/ipv4/neigh/ .
143 The setting in the "default" directory is used for all newly created
145 Unless otherwise specified, time-related interfaces are specified
148 .IR anycast_delay " (since Linux 2.2)"
149 .\" Precisely: 2.1.79
150 The maximum number of jiffies to delay before replying to a
151 IPv6 neighbor solicitation message.
152 Anycast support is not yet implemented.
153 Defaults to 1 second.
155 .IR app_solicit " (since Linux 2.2)"
156 .\" Precisely: 2.1.79
157 The maximum number of probes to send to the user space ARP daemon via
158 netlink before dropping back to multicast probes (see
162 .IR base_reachable_time " (since Linux 2.2)"
163 .\" Precisely: 2.1.79
164 Once a neighbor has been found, the entry is considered to be valid
165 for at least a random value between
166 .IR base_reachable_time "/2 and 3*" base_reachable_time /2.
167 An entry's validity will be extended if it receives positive feedback
168 from higher level protocols.
169 Defaults to 30 seconds.
170 This file is now obsolete in favor of
171 .IR base_reachable_time_ms .
173 .IR base_reachable_time_ms " (since Linux 2.6.12)"
175 .IR base_reachable_time ,
176 but measures time in milliseconds.
177 Defaults to 30000 milliseconds.
179 .IR delay_first_probe_time " (since Linux 2.2)"
180 .\" Precisely: 2.1.79
181 Delay before first probe after it has been decided that a neighbor
183 Defaults to 5 seconds.
185 .IR gc_interval " (since Linux 2.2)"
186 .\" Precisely: 2.1.79
187 How frequently the garbage collector for neighbor entries
188 should attempt to run.
189 Defaults to 30 seconds.
191 .IR gc_stale_time " (since Linux 2.2)"
192 .\" Precisely: 2.1.79
193 Determines how often to check for stale neighbor entries.
194 When a neighbor entry is considered stale, it is resolved again before
196 Defaults to 60 seconds.
198 .IR gc_thresh1 " (since Linux 2.2)"
199 .\" Precisely: 2.1.79
200 The minimum number of entries to keep in the ARP cache.
201 The garbage collector will not run if there are fewer than
202 this number of entries in the cache.
205 .IR gc_thresh2 " (since Linux 2.2)"
206 .\" Precisely: 2.1.79
207 The soft maximum number of entries to keep in the ARP cache.
208 The garbage collector will allow the number of entries to exceed
209 this for 5 seconds before collection will be performed.
212 .IR gc_thresh3 " (since Linux 2.2)"
213 .\" Precisely: 2.1.79
214 The hard maximum number of entries to keep in the ARP cache.
215 The garbage collector will always run if there are more than
216 this number of entries in the cache.
219 .IR locktime " (since Linux 2.2)"
220 .\" Precisely: 2.1.79
221 The minimum number of jiffies to keep an ARP entry in the cache.
222 This prevents ARP cache thrashing if there is more than one potential
223 mapping (generally due to network misconfiguration).
224 Defaults to 1 second.
226 .IR mcast_solicit " (since Linux 2.2)"
227 .\" Precisely: 2.1.79
228 The maximum number of attempts to resolve an address by
229 multicast/broadcast before marking the entry as unreachable.
232 .IR proxy_delay " (since Linux 2.2)"
233 .\" Precisely: 2.1.79
234 When an ARP request for a known proxy-ARP address is received, delay up to
236 jiffies before replying.
237 This is used to prevent network flooding in some cases.
238 Defaults to 0.8 seconds.
240 .IR proxy_qlen " (since Linux 2.2)"
241 .\" Precisely: 2.1.79
242 The maximum number of packets which may be queued to proxy-ARP addresses.
245 .IR retrans_time " (since Linux 2.2)"
246 .\" Precisely: 2.1.79
247 The number of jiffies to delay before retransmitting a request.
248 Defaults to 1 second.
249 This file is now obsolete in favor of
250 .IR retrans_time_ms .
252 .IR retrans_time_ms " (since Linux 2.6.12)"
253 The number of milliseconds to delay before retransmitting a request.
254 Defaults to 1000 milliseconds.
256 .IR ucast_solicit " (since Linux 2.2)"
257 .\" Precisely: 2.1.79
258 The maximum number of attempts to send unicast probes before asking
263 .IR unres_qlen " (since Linux 2.2)"
264 .\" Precisely: 2.1.79
265 The maximum number of packets which may be queued for each unresolved
266 address by other network layers.
271 changed in Linux 2.0 to include the
273 member and the ioctl numbers changed at the same time.
274 Support for the old ioctls was dropped in Linux 2.2.
276 Support for proxy arp entries for networks (netmask not equal 0xffffffff)
277 was dropped in Linux 2.2.
278 It is replaced by automatic proxy arp setup by
279 the kernel for all reachable hosts on other interfaces (when
280 forwarding and proxy arp is enabled for the interface).
284 interfaces did not exist before Linux 2.2.
286 Some timer settings are specified in jiffies, which is architecture-
287 and kernel version-dependent; see
290 There is no way to signal positive feedback from user space.
291 This means connection-oriented protocols implemented in user space
292 will generate excessive ARP traffic, because ndisc will regularly
293 reprobe the MAC address.
294 The same problem applies for some kernel protocols (e.g., NFS over UDP).
296 This man page mashes together functionality that is IPv4-specific
297 with functionality that is shared between IPv4 and IPv6.
299 .BR capabilities (7),
303 RFC\ 826 for a description of ARP.
304 RFC\ 2461 for a description of IPv6 neighbor discovery and the base
306 Linux 2.2+ IPv4 ARP uses the IPv6 algorithms when applicable.