I didn't read this thread sufficiently carefully the first time around, and looking at draft-ietf-6man-subnet-model-02 there is one change which isn't necessary and that makes ND a bit inconsistent.

Thomas Narten wrote:
If the original intent of the spec authors was to ignore these
additional conditions in the conceptual sending algorithm, I'll more
strongly agree that removing the third and fourth bullets is the right
way to go.

At least this original author doesn't recall *intending* that the
additional bullets be ignored. That is, I don't recall that we
intentionally put bullets 3 and 4 into the document for a particular
reason.  Rather, I think this is just a classic case of imprecise text
not being caught during earlier review cycles. :-(

FWIW I don't remember a good reason either. I might have believed they would be useful for "large clouds" i.e., non-broadcast multiple-access links were a node might not be aware of all the on-link prefixes used on the link. But I've verified that even in for such cases these rules wouldn't be necessary.

We should also note that invalidating the part of on-link definition
affects other parts of RFC4861.  For example, it will invalidate this
point:

   If the Source Address is not the unspecified
   address and, on link layers that have addresses, the solicitation
   includes a Source Link-Layer Address option, then the recipient
   SHOULD create or update the Neighbor Cache entry for the IP Source
   Address of the solicitation.
(section 7.2.3)

we should also clearly state each affected part is invalidated;
otherwise, the reader will be confused about the discrepancy.

Yes. This makes sense.

That change is what I have a problem with.

This thread has already correctly concluded that the next-hop determination in the conceptual sending algorithm is unaffected by the content of the neighbor cache. Thus a node can update and create Neighbor Cache Entries without any impact on the interface and nexthop used to send packets. And since the conceptual neighbor cache is per interface there is no security issue with accepting such packets.
Thus the change isn't necessary to solve the problem at hand.

Furthermore, if the effect of this change is anywhere near to the code change sugegsted in this FreeBSD comment that was quoted earlier, then we can create interoperability problems:

+        /*
+         * According to recent IETF discussions, it is not a good idea
+         * to accept a NS from an address which would not be deemed
+         * to be a neighbor otherwise.  This point is expected to be
+         * clarified in future revisions of the specification.
+         */

If node A and node B are on the same link and the router advertisements list prefix P1 as on-link, but node B also is statically configured with prefix P2 as on-link, then dropping such an NS can lead to A and B failing to communicate. Node B might send a NS with source P2::B looking for the target P1::A, and the above text says to drop it. With this part unmodified the conceptual model in RFC 4861 the effect is that A creates a NCE for P2::B and responds to the NS with a NA. Subsequent to that B would send packets directly to A, and A would send the packets via a router (since A doesn't have P2 as an on-link prefix.)

Thus I suggest we just change the minimal thing to remove the security concern, which is removing bullet three and four from the on-link definition in RFC 4861.

    Erik

--------------------------------------------------------------------
IETF IPv6 working group mailing list
[email protected]
Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------

Reply via email to