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 with all modes of operation #869

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

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.
  • Mode of operation 3: the network is build like MOP2, but multicast support is added.

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 <[email protected]>
Co-authored-by: Diana Deac <[email protected]>
Signed-off-by: Thibaut Vandervelden <[email protected]>
Signed-off-by: Thibaut Vandervelden <[email protected]>
Signed-off-by: Thibaut Vandervelden <[email protected]>
Signed-off-by: Thibaut Vandervelden <[email protected]>
Signed-off-by: Thibaut Vandervelden <[email protected]>
Signed-off-by: Thibaut Vandervelden <[email protected]>
Signed-off-by: Thibaut Vandervelden <[email protected]>
Signed-off-by: Thibaut Vandervelden <[email protected]>
@thvdveld thvdveld changed the title RPL Mode of Operation 0, Mode of Operation 1 and Mode of Operation 2 RPL with all modes of operation Aug 28, 2024
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.

3 participants