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

RPL Mode of Operation 0, Mode of Operation 1 and Mode of Operation 2 #869

Draft
wants to merge 107 commits into
base: main
Choose a base branch
from

Conversation

thvdveld
Copy link
Contributor

@thvdveld thvdveld commented Dec 6, 2023

This adds the Routing Protocol for Low-power and lossy networks (RPL) protocol, as defined in RFC6550. I tried making this smaller, but it quickly became difficult to keep track of everything as most features are used for the different modes of operation in RPL. I will try to move changes less related to RPL, but that were required for RPL to work, into different PRs.

At the moment, the following should be working (but still in experimental phase):

  • Mode of operation 0: a network is build using only ICMP RPL DIS and DIO messages. If a node needs to transmit something, it always goes to its preferred parent. Thus messages always go up the tree.
  • Mode of operation 1: a network is build using ICMP RPL DIS, DIO, DAO and DAO-ACK messages. However, only the root node knows about the structure of the tree. Messages first are routed to the root. The root then inserts a source routing header to reach the destination.
  • Mode of operation 2: the network is build like MOP1, however, each node in the network knows about its subtree. A message is routed via a common ancestor in the tree.

The RPL option in the Hop-by-Hop header is used for detecting inconsistencies in the tree. The option contains information about the direction of the data message (where data is a term used in the standard but is ill-defined).

There are still things missing in the implementation, such as handling some options. Examples are prefix information option. There is also room for optimization. An example is the source routing header, where parts of the prefix can just be elided. This is something we don't do yet.

To test the implementation, we added integration tests. These integration tests simulate some networks. The tests then check for expected behaviours.

@thvdveld thvdveld marked this pull request as draft December 6, 2023 10:53
thvdveld and others added 29 commits January 17, 2024 15:22
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Co-authored-by: Diana Deac <diana.deac@vub.be>
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Signed-off-by: Thibaut Vandervelden <thvdveld@vub.be>
Copy link

codecov bot commented Mar 18, 2024

Codecov Report

Attention: Patch coverage is 76.56530% with 917 lines in your changes are missing coverage. Please review.

Project coverage is 80.28%. Comparing base (4c27918) to head (ad6431c).

❗ Current head ad6431c differs from pull request most recent head 8438f9e. Consider uploading reports for the commit 8438f9e to get more accurate results

Files Patch % Lines
src/wire/rpl/options.rs 61.15% 296 Missing ⚠️
src/iface/interface/rpl.rs 71.71% 258 Missing ⚠️
src/wire/rpl/mod.rs 84.59% 102 Missing ⚠️
src/iface/rpl/mod.rs 80.10% 79 Missing ⚠️
src/iface/interface/mod.rs 46.82% 67 Missing ⚠️
src/iface/interface/ipv6.rs 75.92% 39 Missing ⚠️
src/wire/rpl/instance_id.rs 43.75% 18 Missing ⚠️
src/wire/rpl/hbh.rs 84.41% 12 Missing ⚠️
src/iface/interface/sixlowpan.rs 96.21% 11 Missing ⚠️
src/iface/rpl/relations.rs 87.67% 9 Missing ⚠️
... and 5 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #869      +/-   ##
==========================================
+ Coverage   79.96%   80.28%   +0.32%     
==========================================
  Files          82       87       +5     
  Lines       28378    30130    +1752     
==========================================
+ Hits        22693    24191    +1498     
- Misses       5685     5939     +254     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

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

2 participants