This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2652R: Link Status Address List Questions

Part Number: CC2652R
Other Parts Discussed in Thread: Z-STACK

Hello,

We have a network that has a coordinator and about 30 routers, and we defined the MAX_NEIGHBOR_ENTRIES value to 16.  We are using the SimpleLink CC13x2 26x2 SDK 4.20.01.04 stack.

In our sniffer traces however, we see that some routers are sending link status messages with 16 addresses in the neighbor list, but some routers are sending link status messages with 17 addresses.  (About 46% of the router link status messages have 17 addresses and 54% have 16 addresses.)  All of the link status messages (except for those coming from one router) have the coordinator as the first address. But, if I look at the second address in the link status messages, it varies between at least 6 different addresses across routers.

Given these observations, we have two questions.

  1. Why do some routers send 17 addresses in their link status messages if the neighbor table size is 16?  We would expect all routers to have a consistent maximum number of addresses in the link status messages, so it is weird that the number of listed neighbors can be either 16 or 17. How does the stack get the link quality information for the 17th address if it can’t fit in our neighbor table?

  2. There seems to be some logic that tries to include the coordinator in the neighbor table, or at least, in the list of link status addresses.  If the NT selection algorithm was not somehow favoring the coordinator’s address, then the first entry in the sorted list of link status addresses should not always be the coordinator’s address.  It should be a low address, but there should be some variability among different routers - similar to how the second index looks.  But they all consistently list the coordinator’s address in their link status address list.  Any ideas why this is happening?

Related to question #2, our coordinator sends application broadcast commands into the network, say every 30 seconds or so.  We have done some limited testing where we have removed the coordinator from the neighbor table on some routers.  But it seems that the coordinator’s address is getting inserted back into the link status list shortly after the router receives a broadcast application packet from the coordinator.  To our knowledge, we have not written or enabled any code that would modify the neighbor table (other than one test condition that removes the coordinator from the neighbor table).

Thank you in advance!

  • Hello Damon,

    Can you provide the sniffer log of your findings?

    1. Total neighbors include associated devices (end device children) and active neighbors (other routing devices).  Is it possible that your network has a few ZED children?

    2. Neighbor entries are updated for every incoming NWK packet which matches the network's Pan ID, so any router which directly receives this ZC broadcast will directly add it to their local neighbor table if an entry is available.

    Regards,
    Ryan

  • Thank you, Ryan.


    #1 - The network should only have routers - no end devices.  Let me see if I can get a sniffer trace and confirm that a node with 17 addresses in the link status message does have all routers or not.

    #2 - That is very helpful to know that a directly received broadcast is added to the neighbor table.

    Damon

  • Hi Ryan,

    Back to issue #1.  In addition to our routers sometimes listing 17 addresses in their link status messages, we noticed the coordinator will advertise up to 28 routers in its link status messages, which requires two back-to-back link status broadcasts.  The first has 22 addresses and the second has 6.

    The coordinator's neighbor table is defined as 16 entries though, which means 12 addresses must be coming from some other table.  You mentioned in your previous post that total neighbors include associated devices and active neighbors.  So, if I understand correctly, 16 of the 28 routers in the link status message must be routers in the neighbor table, but the other 12 addresses must be associated devices.  Are these devices that associated directly to the coordinator?  If not, how does a router get added to the associated device table?  It appears the associated device table can include router or end device types.  (All of the 12 are routers.)

    We ran another test where we powered all routers off for 6 hours but left the coordinator running.  After 6 hours, the coordinator was advertising 12 devices in its link status table, each with incoming and outgoing costs set to 0.  So, this again seems to point to12 routers being stored in a table that is not the neighbor table.  This seems to account for the large number of routers we are seeing in the coordinator link status messages, that far exceeds the size of its neighbor table.  This would also explain why some routers advertise 17 routers in their link status messages.

    From all that, here are my questions:

    1. It appears the 12 extra neighbors in the coordinator link status message are associated devices.  How are routers added to the associated device table?

    2. Are there APIs that can read the associated device table?

    3. How is the size of the associated device table set?

    Damon

  • Hi Damon,

    Stack/nwk/assoc_list.h contains a variety of API such as AssocCount (number of devices) and AssocFindDevice (information for Nth device in list), among others.  You can compare these against nwk_util.h functions like nwkNeighborCount and nwkNeighborGetWithIndex.  It could be the case that the 12 routers in question directly joined the ZC and are considered children as such, so their entries are not removed until a Leave Request is sent or the device rejoins through a different router.  Note that Z-Stack routing has been improved since SDK v4.20

    Regards,
    Ryan