-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implementation of optimized neighbor discovery based on RFC 6775 #1760
Conversation
I really appreciate the work implementing RFC 6775. This is a very useful feature for many nodes and networks. However it seems the pull-request was based on an outdated version of ContikiOS. E.g. you have included an outdated version of tcpip.c. Contiki's current version of As far as I can see, the bulk of your work should be portable to the current contiki codebase. Would you mind trying a rebase, and if this fails, a manual port? |
I am trying manual port now. i will try rebase after Travis build ends. any feed will be gladly appreciated. |
Please refrain from pushing until you have completed your work; many e-mails get sent about commits to this PR otherwise. |
i need to delete all old commits except the last one (fixing issues). when i do rebase, it did not work. |
The ND optimization should definitively be part of the contiki codebase. I've noticed that you have implemented the code from https://github.com/lcmaqueda/6lowpan-nd. I did the same and found that it can work well. But I switched then to the ND optimisation implemented in the 6lbr project. In the first implementation, the registrations are stored in a list and handled by dedicated functions (add, remove, lookup, ...). The new states introduced by RFC6775 for the Neighbor Cache Management (Garbage-collectible, Registered and Tentative) are then assigned to these registrations. However, these new types of Neighbor Cache Entries must instead remplace those in RFC4861 (Incomplete, Reachable, Stale, ...) which is not really the case with this implementation. In the 6lbr project, the new types are assigned to the neighbor cache entries and the implementation is much easier to understand I think. |
First, i would like to thank you for your interest in implementing ND optimizations and our work. Also, when i skimmed through the 6lbr project. i did not see the above points are covered. 1- "The most important part of the optimizations is the evolved host-to- |
It seems to me that the points you mentionned are covered by the implementation from the 6lbr project, at least as I tested them so far. For me with this optimized standard there is no more host-to-host interaction when using sleeping devices, therefore the use of the precedent states (Incomplete, Reachable, ...) are no more required for a sleeping host to perform Address Resolution. The host send NS only for registration and to perform NUD with the routers. Howerver, on the router side, I guess this later use the new types with the sleeping device when the ARO option is present, and the others when not. Meaning that orthogonal means that the new types doesn't affect the old ones. But this means that both protocol cohabits on the router. This is what I understand, maybe I'm wrong :) |
i closed this pull request, and will start all over again as i made major changes in the code to be compatible with contiki v 3.0. |
#1765 updates this pull request. |
Cannot you push -f to this branch again, so as to update this rather than open a new one? |
sorry, i can not as i deleted this branch when i created the new one. |
I would simply push to the branch again and then look for the "reopen" button on the web |
when i try doing what you mentioned i get this message. as i mentioned, i deleted the branch from my repository. |
do not attempt to push on contiki-is/contiki, target your own repo instead |
excuse me, but i can not push to my own repo, as i do not have a branch that will commit the changes to this PR. |
ah ok I see you were using your master, then well, not sure if we can re-open this one indeed |
…io-hal Fixes to simplelink GPIO HAL
the commit of this pull is to update the neighbor discovery files to implement the new optimized version of neighbor discovery which suggested by IETF in RFC 6775.
IPv6 Neighbor Discovery (ND) based on RFC4861 was developed primarily for wired traffic on the shared medium. Its heavily use the multicast transmission in periodic router-advertisement multicast addresses with router solicitation, neighbor solicitation, address resolution, and duplicate-address detection. While periodic multicast signaling and solicited-node multicast signaling are useful for network stability in the standard Ethernet-based shared network, the limited-lifetime, battery-operated devices in the IEEE 802.15.4 network conserve energy with less signaling and by sending broadcast messages only once in a while. that makes makes it inefficient and sometimes impractical for IPv6 over Low power Wireless Personal Area Networks (6LoWPAN).
(https://tools.ietf.org/html/rfc6775) optimizes multicast messages to uni-cast messages. It eliminates the need for relatively expensive address resolution by sending a neighbor registration option along with a neighbor solicitation; it supports sleepy nodes in the networks; and it optimizes the protocol constants while eliminating periodic router-advertisement messages.
you could find all details in the following paper http://eece.cu.edu.eg/~akhattab/files/ND.pdf.