This is a guest post by Gabe Kassel, Product Manager for Embedded Software at eero.
Relying on a single wireless router to provide internet in every room of the home is like expecting a single light bulb to illuminate the entire house. It’s physics - WiFi radio waves don’t travel through walls or objects easily. The eero Home WiFi System is a new take on home connectivity, bucking the trend of one high-powered device in the center of the home. Instead, eero uses multiple access points that talk to each other via our proprietary mesh technology -- TrueMesh -- to spread coverage and a high throughput connection throughout a home.
eero’s hardware - its distributed access point system - solves the problem of spreading a consistent, stable WiFi signal in a home. But hardware is only part of the puzzle. On the backend of eero’s technology, we face different challenges: how do we build a highly available, high performance infrastructure that’s able to communicate with each eero device? We’ve discussed parts of our architecture previously, but we haven’t yet explored into how we use Cloudflare to eliminate one “single-point-of-failure” in our architecture.
How eeros interact with the cloud
eero devices are in near constant communication with our cloud. They send device diagnostic data to the cloud as well as data to support certain features in our mobile application. An example of this is when we added the ability for eero users to see real time data usage by device. While most products stream this data from a local server, both our user experience and security models rely on relaying that data through our cloud application to aggregate, analyze, and prevent direct local misuse from an unsecured web server.
In addition to streaming data to our cloud, eero devices need to continuously understand whether they have access to the internet. This specific architecture resulted in some special thinking.
First, we needed to ensure eero devices had a secondary source of truth (other than our cloud) to check if they could reach the internet. We originally thought about checking common resources like google.com and twitter.com, however we felt that had negative privacy implications since we didn’t own both sides of that request and connection. We wanted to prevent third-party sites from counting or analyzing eero installations to preserve privacy.
Second, we wanted to make sure that this secondary check was truly “out of band” of our current cloud infrastructure. Since the internet itself is highly distributed, we needed a service that mimicked that and was resilient to swaths of the internet being unreachable.
What Cloudflare allows us to do
Enter Cloudflare. Cloudflare provides CDN, security, and high availability, all in one tool. By storing a small file in Amazon S3, with Cloudflare at that domain, we’re able to serve a secondary internet check to hundreds of thousands of devices. Regardless of whether that connection can reach Amazon S3 and regardless of the health of the internet at-large, we have confidence Cloudflare will deliver the file.
We’re essentially using Cloudflare as a cloud canary. Since Cloudflare exposes a robust API, we’re able to track eero requests to this secondary internet check to create alerts when eeros are not able to resolve our cloud. And, as a bonus, since the file is 99.97% of the time served from Cloudflare’s edge, we can serve hundreds of gigabytes of the same tiny file and not spend anything with S3 to do it.
Cloudflare enables eero to provide an “out of band,” high availability, and low cost method to test internet availability from every eero device. We’re excited to help Cloudflare think about the specific needs of Internet of Things products, and continue to build out features that support scale across millions of devices. To learn more about how eero is solving connectivity in the home visit us at www.eero.com.