Zephyr-based Border Router #7482
Replies: 1 comment 2 replies
-
Hey @beriberikix! Great to hear about your efforts to enable OpenThread Border Router. Looks like you're already done your homework. A Thread Border Router can provide many functions, including:
Depending on your specific use case, you may or may not depend on all of the above mentioned features. We are actively working on enabling all of the mentioned features in the OpenThread project. The more Thread-specific functions are implemented within the OpenThread core library, for example:
A reason for doing so is to make it easier to enable OpenThread Border Router on RTOS-based platforms. Currently, the ESP32 platform is the only RTOS-based example I'm aware of that integrates OpenThread Border Router functionality. Also, in case you missed it, the Thread Group is actively working to standardize the Border Router function:
If you are interested in learning more in advance of the launch, I encourage you to join the Thread Group :) |
Beta Was this translation helpful? Give feedback.
-
👋 Hi all! I've been looking into what it would take to implement a Border Router based on Zephyr and would love some feedback.
Background
Our company golioth.io provides device management capabilities for microcontroller-class devices that are supported by Zephyr. That allows us to support, for example, secure end-to-end software updates with secure boot for 100s of host MCUs and various forms of connectivity including Wi-Fi, Ethernet & Cellular. We also provide messaging, storage & data forwarding services across those ranges of hardware and connectivity. We're seeing an increase of interest to add Thread support to Golioth for both commercial and non-commercial use cases. The initial implementations will primarily be for managing end devices with Golioth but we'd like to support border routers as well.
Additionally, we're active contributors and sponsors of Zephyr so we're interested in seeing the project grow to expand new use cases 😀
What exists today
OpenThread is the official Thread implementation for Zephyr & there are already examples for NCP & RCP. Zephyr has a suite of native networking implementations, and some app layer protocols such as DNS/mDNS. DNS-SD is under active development.
Outside of Zephyr there is an MCU BR implementation from Espressif based on their ESP-IDF/FreeRTOS. There is also of course ot-br-posix, which builds upon Unix libraries like dnsmasq and tayga.
What's missing
Zephyr currently lacks implementations for several of the app layer networking protocols, such as a DHCP server (of any kind,) NAT64 & DNS64, as well as others suggested in the Thread Border Router Best Practices.) There may be additional features or glue code missing (ex. integrating the Thread Border Agent.)
Next steps
I plan on trying to build an example that uses the Espressif BR but instead of using the Espressif RCP, use a Zephyr-based RCP running Zephyr (probably an nRF52.) I believe that should work relatively easily, but I'll only know once I try!
Suggestions welcome!
Are there any suggestions on how to move forward on an implementation in Zephyr? What should be in a minimal BR, what libraries to use, any gotchas to keep in mind?
Many thanks in advance! 🙏
Beta Was this translation helpful? Give feedback.
All reactions