Skip to content
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

WIP: Add support for the RPL routing protocol #627

Closed
wants to merge 7 commits into from

Conversation

thvdveld
Copy link
Contributor

@thvdveld thvdveld commented Jun 10, 2022

This adds the RPL routing protocol from RFC6550. This routing protocol is designed for Lossy Low-power Networks.


  • Add wire representation of the RPL headers and the options (section 6).
    • Add field getters
    • Add field setters
    • Add parse functions
    • Add header_len functions
    • Add emit functions
    • Add tests!
  • Update the support of extension headers in 6LoWPAN (currently only for Hop By Hop, which is needed in RPL).
    • Currently, smoltcp has support for compressed UDP, uncompressed IPv6 headers, but no support for compressed IPv6 extension headers. These headers are mostly carried unmodified in the bytes immediately following the LOWPAN_NHC octet, with two important exceptions: Length field and Next Header field RFC6282 § 4.2. I saw Contiki-OS using this for their RPL protocol where they used a compressed Hop-by-Hop extension header.
  • Add the Trickle timer mechanism from RFC6202.
    • The Trickle algorithm allows nodes in low-power and lossy networks to exchange information in a highly robust, energy efficient, simple, and scalable manner. Dynamically adjusting transmission windows allows Trickle to spread new information on the scale of link-layer transmission times while sending only a few messages per hour when information does not change. A simple suppression mechanism and transmission point selection allow Trickle's communication rate to scale logarithmically with density.
  • Add Objective Functions:
    • The Objective Function (OF) defines how RPL nodes select and optimize routes within a RPL Instance. The following OFs are supported by Contiki-OS:
    • Objective Function Zero RFC6552
    • Minimum Rank with Hysteresis Objective Function RFC6719 (Not sure if this will be added in this PR)
  • Support for Mode of Operation 0: no downward routes maintained.
  • Support for Mode of Operation 1: upward routes, without storing mode
  • Support for Mode of Operation 2: upward routes, with storing mode (no multicast)
  • Support for Mode of Operation 3: upward routes, with storing mode (multicast)

@thvdveld thvdveld marked this pull request as draft June 11, 2022 15:28
@thvdveld thvdveld changed the title WIP: Add wire representation for RPL WIP: Add support for the RPL routing protocol Jun 14, 2022
@thvdveld thvdveld force-pushed the rpl-wire branch 2 times, most recently from 7166c08 to 34dc2cc Compare September 30, 2022 11:11
@thvdveld thvdveld force-pushed the rpl-wire branch 3 times, most recently from 0dcf316 to 374169a Compare January 30, 2023 14:46
This commit is the first commit for adding support for the RPL protocol.
The RPL protocol is a routing protocol used in low-power networks. The
protocol defines 4 modes of operations (MOP0), the routing protocol only
supports upward routes. It is thus not possible to transmit messages
down in to the routing tree.
The trickle timer immediately expired when a non root node received a
DIO message for the first time, and thus transmitted a DIO immediately.
However, the trickle timer should reset first, before sending the DIO
message.
bors bot added a commit that referenced this pull request Apr 7, 2023
766: Add wire representation for the RPL protocol. r=thvdveld a=thvdveld

I'm splitting #627 into smaller PRs.

This PR adds the wire representation of the RPL protocol.

Co-authored-by: Thibaut Vandervelden <thvdveld@vub.be>
@thvdveld thvdveld mentioned this pull request Apr 13, 2023
15 tasks
@thvdveld
Copy link
Contributor Author

Closing this PR since I'm breaking this down into multiple PRs. I have a tracking issue for RPL #769 .

@thvdveld thvdveld closed this Apr 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant