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

Reduction of broadcast traffic #1096

Closed
cdjackson opened this issue Jul 26, 2020 · 1 comment
Closed

Reduction of broadcast traffic #1096

cdjackson opened this issue Jul 26, 2020 · 1 comment
Milestone

Comments

@cdjackson
Copy link
Member

During some recent testing with a reasonably large network, it has become obvious that the framework is sending too many broadcasts - especially on startup. On the Ember NCP this causes a lot of failures - while the framework paces the number of broadcasts being sent, it does not have visibility of all other broadcasts being sent by the coordinator itself - eg APS broadcasts, APS multicasts, route discoveries, ZDO announcements or broadcast requests, PAN ID / channel / NWK key update notifications. The ZigBee (or 802.15.4) spec limits the number of broadcasts that can be sent to around 8 in an 8 second period - the transaction manager respects this (currently only releasing a broadcast every 1.2 seconds) but if there are other broadcasts going on, as there will be when the network is starting and routes are being discovered, then many of these will fail.

So, looking at ways to reduce this...

Currently, the system always attempts to get the network address of a device by sending a broadcast on startup - the assumption being that it might have changed. However, routers should not change address, and ZEDs may change address if they change parent, but that does not happen often. Therefore, it is propose to always start this discovery with a unicast, and only use broadcast as a last resort.

The ZigBeeNetworkDiscoverer also uses broadcasts for a similar reason - this was actually written before the transaction manager was implemented, and was not updated. The transaction manager performs retries of frames that time out, so the retires in this class should be removed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant