This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

repeat process in mesh network?

In the mesh network, the sender uses trickle algorithm to control the repeat sending process, and at last the sender will send the message forever in a max interval at a handle. then my question is : does the other nodes repeat the message from the sender using trickle control logic for a specific times ,or just simplely repeat send serveral times in a constant interval(if so, what's the interval, I can't get it in the mesh sample code)?

  • Hi there,

    The other devices will start their interval from the bottom, then increase it exponentially, just like the sender did at first. In the internals of the mesh framework, there's no real difference between setting a value in the application or receiving it from a neighbor. The interval behaves the same, and the value is stored in the same list.

  • So I have another question: the sender will resend the message forever at last, so does its neighbor will repeat relay like it forever? if it is, I think it's so strange

  • I had the same thought as you. I'm currently simulating the algorithm as implemented by nordic in matlab/octave, and what i'm seeing is that the variable c never reaches the k-constant.

    In the RFC6206, it says "At time t, Trickle transmits if and only if the counter c is less than the redundancy constant k.". When c never reaches k, trickle will always transmit.

    This change in algorithm was intentional, as stated in the documentation: "When the interval hits this upper limit, it will stay there and the device will keep repeating the message over and over forever." [1]

    Here you find some information on how to disable the infinite transmitting: github.com/.../100

  • In the RFC6206 it says, that the node only transmit when the counter is less than the constant k. If i understand it correctly, it means that the node will stop to transmit after hearing 3 consistent messages from other nodes. In your documentation (and code), it won't stop transmitting and keeps transmitting at a high intervall.

    Why did you choose to do it this way? Because in your documentation, you also say: "If the handle-value pair has never been used before, the framework forces the node to broadcast an empty version 0-message to other nodes, which, in turn will answer with their version of the handle-value-pair." I couldn't find this behaivour in the code.

    It would make more sense to me to stop the transmission as stated in the rfc after consistancy is reached and only transmit again, when an inconsistancy is detected (like another node is sending a zero-value to get the latest handle version).

Related