Association time in mobile RPL/6lowpan networks

Has anyone tested the amount of time it takes for a node (full or reduced function) to join an RPL routed 6lowpan network? I realize that it’s very likely to vary quite a bit depending on the network, I’m just curious if anyone has an approximate range.

Thanks,

Adam Hunt

Hi Adam!

Has anyone tested the amount of time it takes for a node (full or reduced function) to join an RPL routed 6lowpan network? I realize that it's very likely to vary quite a bit depending on the network, I'm just curious if anyone has an approximate range.

As you said: it depends quite a bit on the network and the parameters. Since nodes on the current RPL implementation won't send proactively DIS messages and the interval of sending DIOs increases, it will usually take just a couple of seconds if you try to join the network right after bootup, but can take more than one minute in a later phase.

Cheers, Oleg

That’s great. Is there any way to force a node to send a DIS message from userspace?

Hey Adam,

I am currently adopting RPL to our new network stack and while doing so, I also added sane functionalities which were plainly missing in the old implementation. This also includes sending a DIS when initializing RPL for the first time. However, I am just now realizing that such a DIS can get lost in our typical LLN case - it may make sense to send a DIS periodically until a DIO is received? Does anyone has an opinion on this?

Forcing a DIS from userspace sounds like a good feature. It may help in testing/debuging the dodag tree interactively. I also thought about reseting the trickle timer from userspace to enforce DIOs.

Cheers, Cenk

Hey Adam,

I am currently adopting RPL to our new network stack and while doing so, I also added sane functionalities which were plainly missing in the old implementation. This also includes sending a DIS when initializing RPL for the first time. However, I am just now realizing that such a DIS can get lost in our typical LLN case - it may make sense to send a DIS periodically until a DIO is received? Does anyone has an opinion on this?

Good idea, as long as the periodic interval is large enough to not waste power or cause interruptions in normal traffic if there is no other rpl node on the network.

Forcing a DIS from userspace sounds like a good feature. It may help in testing/debuging the dodag tree interactively. I also thought about reseting the trickle timer from userspace to enforce DIOs.

+1 for this. It would be nice to have some shell commands to call these functions too.

Best regards, /Joakim

I like the idea of sending periodic DIS messages but I absolutely believe that it should not only be optional but that it be configurable at runtime.

Honestly, I am a firm believe in the idea that virtually anything like this should be runtime configurable as long as such configurability doesn’t adversely effect battery life, code complexity/readability, etcetera in a massive way. This is something that Linus has absolutely right with Linux; policy don’t shouldn’t be written in kernel space stone; everyone had different requirements and altering the way an OS behaves from the (sensible) defaults shouldn’t require altering mainline code and maintaining a private branch if at all possible. Ideally everything should be runtime configurable, if that’s not possible it should be configurable at boot, if that for some reason isn’t possible it should be compile time configurable.

Hi Adam, hi Cenk,

Has anyone tested the amount of time it takes for a node (full or reduced function) to join an RPL routed 6lowpan network? Not a particular range, but I can confirm that the time varies until a RPL topology converges in whole, and that it varies for a single node to join.

Regarding the further discussion, I’m not convinced if we should send periodic DIS messages. Even if they get lost, DIOs are disseminated repeatedly by all nodes in a DODAG when trickle fires [1]. Concerning LLNs I don’t like to send additional packets periodically at all. In my opinion it just drains the energy of a node with small to no benefit. Even if a node is not answered with a DIO directly when sending a DIS, eventually a DIO will arrive from a neighbor node (assuming one is present).

Resetting the trickle timer from applications sounds like a good opportunity for debugging and testing things. Just as Adam I also think such feature should be only available for debugging and testing. Resetting the trickle timer in “normal operation” from an application sounds for me like interfering with the routing protocol, or even attacking the topology :wink:

…anything like this should be runtime configurable as long as such configurability doesn’t adversely effect battery life, code complexity/readability, etcetera in a massive way I think the most impacting problem with such approach is that every convenience function/structure we provide will produce more bytes used on the ROM and RAM. RPL is used on nodes with few kB RAM and ROM and it must share this room with a network stack and further productive applications. Concerning this, I obviously vote for compile time configuration :slight_smile:

These are just some thoughts and my personal opinion.

Best regards, Martin

[1] RFC 6550 - RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks