kuznet@alisa:~ $ ip neigh ls :: dev lo lladdr 00:00:00:00:00:00 nud noarp fe80::200:cff:fe76:3f85 dev eth0 lladdr 00:00:0c:76:3f:85 router \ nud stale 0.0.0.0 dev lo lladdr 00:00:00:00:00:00 nud noarp 193.233.7.254 dev eth0 lladdr 00:00:0c:76:3f:85 nud reachable 193.233.7.85 dev eth0 lladdr 00:e0:1e:63:39:00 nud stale kuznet@alisa:~ $
The first word of each line is the protocol address of the neighbour. Then the device name follows. The rest of the line describes the contents of the neighbour entry identified by the pair (device, address).
lladdr
is the link layer address of the neighbour.
nud
is the state of the ``neighbour unreachability detection'' machine
for this entry. The detailed description of the neighbour
state machine can be found in [1]. Here is the full list
of the states with short descriptions:
none
-- the state of the neighbour is void.
incomplete
-- the neighbour is in the process of resolution.
reachable
-- the neighbour is valid and apparently reachable.
stale
-- the neighbour is valid, but is probably already
unreachable, so the kernel will try to check it at the first transmission.
delay
-- a packet has been sent to the stale neighbour and the kernel is waiting
for confirmation.
probe
-- the delay timer expired but no confirmation was received.
The kernel has started to probe the neighbour with ARP/NDISC messages.
failed
-- resolution has failed.
noarp
-- the neighbour is valid. No attempts to check the entry
will be made.
permanent
-- it is a noarp
entry, but only the administrator
may remove the entry from the neighbour table.
The link layer address is valid in all states except for none
,
failed
and incomplete
.
IPv6 neighbours can be marked with the additional flag router
which means that the neighbour introduced itself as an IPv6 router [1].