While reading the RFC of NDP I wondered, why it is necessary to monitor upper layer traffic in order to know if a neighbor is reachable, e.g. a TCP ACK.
I do get the IPv6 packet anyway, so I know it's reachable without having to bother about TCP.
Where does it say it is "necessary to monitor upper layer traffic?" RFC 4861, Neighbor Discovery for IP version 6 (IPv6) actually says:
When available, this upper-layer information SHOULD be used.
RFC 2119, Key words for use in RFCs to Indicate Requirement Levels defines the term SHOULD:
- SHOULD This word, or the adjective "RECOMMENDED", mean that there may exist valid reasons in particular circumstances to ignore a particular item, but the full implications must be understood and carefully weighed before choosing a different course.
The use of upper-layer protocol information deals with Neighbor Unreachability Detection. This deals with neighbors that have already been discovered, but something may have gone wrong. For instance, a the neighbor's NIC was swapped, so the MAC address for the neighbor has changed. You need to make sure that the forward path works. See 7.3.1. Reachability Confirmation, specifically:
The receipt of a solicited Neighbor Advertisement serves as reachability confirmation, since advertisements with the Solicited flag set to one are sent only in response to a Neighbor Solicitation. Receipt of other Neighbor Discovery messages, such as Router Advertisements and Neighbor Advertisement with the Solicited flag set to zero, MUST NOT be treated as a reachability confirmation. Receipt of unsolicited messages only confirms the one-way path from the sender to the recipient node. In contrast, Neighbor Unreachability Detection requires that a node keep track of the reachability of the forward path to a neighbor from its perspective, not the neighbor's perspective. Note that receipt of a solicited advertisement indicates that a path is working in both directions. The solicitation must have reached the neighbor, prompting it to generate an advertisement. Likewise, receipt of an advertisement indicates that the path from the sender to the recipient is working. However, the latter fact is known only to the recipient; the advertisement's sender has no direct way of knowing that the advertisement it sent actually reached a neighbor. From the perspective of Neighbor Unreachability Detection, only the reachability of the forward path is of interest.