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 6LoWPAN-ND [RFC 6775] #1765
base: master
Are you sure you want to change the base?
Conversation
1b733d6
to
fdcea15
Compare
@vsaw , i need your feedback and comments on this. |
a previous discussion,was conducted in a old version of this PR, can be found here #1760 |
The files The pull request is is still in a state that makes it very hard to review your contribution to ContikiOS. But I very much encourage you to keep working on it as it seems like it's just a matter of cleaning things up, especially since Travis seems to like your pull-request. |
@vsaw Thank you for your comment, but let me clear things a little bit here. RFC 6775 optimize neighbor discovery protocol (RFC 4861) by adding some features to make it practical in LoWPAN networks. Besides, the RFC 6775 adds new constants and modified some other constants. so, in my implementation i wanted to keep the old ND (4861) and the same time implement the optimized version (6775). consequently, core/net/ipv6/uip-6lowpan-nd6.c will be similar to core/net/ipv6/uip-nd6.c but with the extra added logic to implement the RFC 6775 features. e.g. in uip-nd6-ns-output, you will find the processing of the ARO (new option header) and the modification to ND processes such as DAD, NUD, address resolution. Finally, please let me know if you have any other comments, i'll really appreciate it. Regards |
thank you very much for taking the time to reply to my remarks. This makes your intentions clear to me and I agree that making the RFC 6775 optional and keeping the current RFC 4861 based implementation in place is a good thing! I just wonder if this can be achieved in a way that is easier to maintain. I primarily wonder if it can be oden without introducing a separate C file, but instead by using the compile time configuration like A clean implementation of that feature would also add it to the list of configurable options in |
Nothing can not be achieved :) e.g. NS, NA messages have new ARO option, and this option might be included or not in the message based on its purpose. merging such behavior with the old ND may be confusing. another level of complexity, when we think about that in 6lowpan ND, we have 3 types of nodes: finally, in my opinion it will be very complex to combine the old and new ND in the same file , so that leaves us with only 2 options: Thanks for your time |
@MohamedSeliem I see, in that case I propose to get a separate set of opinions on what should be done in order to achieve consensus. @simonduq @adamdunkels Anyone care to weigh in? |
I believe the best option would be to have a compilation flag or #define that will allow using the new optimized ND or the current one. Is this possible @MohamedSeliem? |
@kelsayed yes of course, in this implementation, we define UIP_CONF_IPV6_LOWPAN_ND flag. |
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 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 update tcpip.c to handle ND timers
fdcea15
to
9368300
Compare
@yatch i need your feedback and comments on this. |
@MohamedSeliem OK; let me leave some (general) comments:
|
Please provide permission to pull the code |
@sumantgupta1984 you can get the code by forking a clone from this link: |
Hi guys, what is the current status here? |
@MohamedSeliem Could you apply the recommendation of @yatch to have the PR moving forward. |
I just noticed there is a bug in uip-6lowpan-nd6.h here, it has these definitions: the values starting with ARO are off by one: |
@kelsayed Sure I will do, However, we still need Contiki member to weigh in for reviewing process. @tuvok Thank you for reporting this, please feel free to contact me if you found any other bugs to fix. |
@MohamedSeliem I'm no longer active here sorry, moved on to Contiki-NG. |
@MohamedSeliem |
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 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