There's still the problem of sending an NA back to yourself, if you are a router and happen to have the same address as the one being registered. Also, section 8.2 (as indicated in the ticket) does not fix the problem of sending and NA to a duplicate GP16 address: Here's an example of the problem:

  1. Host[A] sends NS+ARO (with GP16 source address) to a 6LR
  2. 6LR sends NS+ARO+address to 6LBR.
  3. 6LBR sends NS+ARO+address+success to 6LR. 6LR adds Neighbor Cache
     entry.
  4. 6LR sends NA+ARO+success to Host[A]. All good so far.
  5. Sometime passes
  6. Host[B] sends NS+ARO (with source as Host[A]'s GP16 address) to
     the same 6LR. This is a duplicate address registration.
  7. 6LR sends NS+ARO+address to 6LBR.
  8. 6LBR sends NS+ARO+address+failure to 6LR. There is already a
     Neighbor Cache entry for this GP16 address (pointing to Host[A]).
  9. This is where it goes wrong: How does the 6LR send the ARO failure
     to Host[B] when the Cache entry is clearly pointing to Host[A]?
     Sure, one could come up with a hack to make this work, but
     wouldn't it be cleaner and simpler to always include the address
     field in the ARO. That way, an ARO is the same for all NS/NA
     messages (single or multi hop), and the unique LL64 can be used in
     the source address of an NS.


Dario


6lowpan issue tracker wrote:
#87: GP16 as source address in initial NS
--------------------------------+-------------------------------------------
Reporter: z...@... | Owner: Type: enhancement | Status: new Priority: major | Milestone: Component: nd | Version: Severity: - | Keywords: --------------------------------+-------------------------------------------
 From ZigBee IP interop:

 Still some potential issues using GP16 in source address of
 initial NS from joining node to parent router and NA back to
 joining node from parent router on initial multihop-DAD. If parent
 router has the same GP16 as the one randomly chosen by the joining
 node in its routing tables (i.e a valid node already exists more
 than one hop away), it has to make sure this new colliding GP16 is
 properly addressed in preference to attempting to send it through
 the routing mechanism. The parent router itself could also have the
 same duplicate address as the chosen GP16. This would mean you are
 trying to send back to itself.

 Furthermore, multihoming device could be an issue
 -- may send on another interface if it's done through routing.
 RFC2462 also states that tentative address (i.e. not been through
 DAD) is not assigned to the interface, so strictly it can't be
 used. To comply with 4861, choices are are LL64 or unspecified.

 The authors have discussed this issue more, and think it can be solved
 with better clarification in the draft:

 Using GP16 as the src IPv6 address is not an issue - as specified in
 section 8.2:

   "For the synchronous multihop DAD the 6LR MUST NOT add a Neighbor
   Cache entry for the address until it receives a successful ARO option
 from the 6LBRs."

 Thus the router would not be confused by the duplicate address until it is
 known that the address is not a duplicate. Perhaps we also need to make it
 clear that the router must not create any routing state for the address
 until it has received the success?

 Section 8.2 also tries to make it clear how the router responds by saying

 "Note that the 6LR does not create a Neighbor Cache entry until it
 receives a successful ARO back from a 6LBR.  Instead it uses the SLLA
 option of the NA from the 6LBR to reach the host."

 6lowpan-nd avoids 4861 constraints by the rules specified in section 8.2
 and elsewhere. Basically, an NS with a SLLAO does not modify an existing
 NCE, nor does it create a NCE, until it is known that the address is not a
 duplicate. The multicast DAD in 4861 works differently.


_______________________________________________
6lowpan mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/6lowpan

Reply via email to