Exploring Open Source IoT Through An Automotive Lens – Part 1, The State of The Art
VMware’s Open Source Technology Center is accelerating innovation through contributions to open source projects, such as the Linux Kernel, Kubernetes, Clarity, Precaution, Harbor, and Tern, while also giving back to the community. As we embrace the 4thIndustrial Revolution, a natural question to ask is what open source IoT efforts are underway?
The Internet of Things (or IoT) seeks to bridge our physical and digital worlds by building upon existing technologies to unlock unprecedented value. Still, it has to contend with large numbers of low-cost devices, device vulnerability due to remote distributed nature and/or unpatched firmware, and large data volumes. To both reduce network bandwidth requirements (for data transmission to a cloud for analysis) and response latency (to take some action), IoT drives the need for edge computing.
To ground this discussion and develop greater insights about both the problem space and available open source solutions, let’s start by exploring IoT from an automotive lens. The field’s wide applicability, together with readily available, inexpensive sensors, make the transportation domain particularly attractive. Today’s cars already produce vast amounts of data—this combined with GPS and possibly cameras provide a rich set of data that’s useful in developing actionable insights for a number of different parties. For instance, both individual drivers and their insurers care about driver behavior; cities and mapping companies care about traffic patterns; car owners and fleet managers care about maintenance-related information, and so on.
In this three-part series of posts, we’ll take you through our process of exploration. This first post shares what we found by way of open source offerings that already deliver, or can be used to deliver, solutions in the IoT space. We’ll follow up with a second post that describes the automotive proof-of-concept that we built as a learning tool for ourselves and some of our key findings. Then, our final post will explore the remaining challenges and opportunities that we believe developers might productively explore as they look to make contributions of their own.
So, do open source IoT solutions currently exist that gather and analyze automotive data to provide insights into vehicle performance and/or our driving?
Almost any IoT solution needs to be able to push out software updates, provide local storage, register devices and edge nodes, and monitor their health. A more sophisticated network solution would provide traffic isolation (separate command and data paths), encrypted communication, and tackle Quality of Service (QoS). Domain-specific data processing and transmission to cloud endpoints are also required.
Further, for mobile IoT, the sensor data handling should ideally be at the edge in order to tackle lack of constant connectivity, reduce network bandwidth needs, and to respond to events, if necessary, in real-time. Our research uncovered no single open source solution that meets the needs of automotive IoT, but we found evolving complementary projects.
The edge can be a gateway serving as a coordinator and clearinghouse for sensor data from multiple devices of the same kind, from a set of sensors associated with a single discrete physical entity such as a vehicle, or even from multiple tenant applications such as when you are controlling lights, heating and cooling, accounting, or ordering systems. But the edge must be able to talk to sensors that use different communication protocols, store and/or forward data, analyze said data to identify items of significance, and transmit them to higher level cloud/data center application endpoints. It must also be able to prune data to reduce network bandwidth requirements and accommodate low latency requirements.
As of today, there is really only one major open source project that approaches this kind of comprehensive provision for edge computing: EdgeX Foundry. Started by Dell, with contributors from Intel and startups such as MainFlux and IOTech, this Linux Foundation project has a six-month release cadence and is now up to version 0.7.
EdgeX is a collection of microservices, with each released as a container. It supports a wide variety of devices, local storage, and a messaging system whose events can trigger the various microservices. It also incorporates a rules engine to accommodate domain-specific processing. Unfortunately, EdgeX does not yet address intermittent network connectivity or support GPS and the automotive industry’s standard On-Board Diagnostics (OBD) devices. It does, however, offer an edge framework.
Edge nodes are typically remote and oftentimes resource constrained. The open source Balena Engine project supports resilient firmware updates in addition to efficient, atomic container pulls, delta container updates, and need-based container file system layer expansion. The delta updates reduce network bandwidth requirements while the atomic updates ensure edge-resiliency should data corruptions occur during transmission.
Lastly, we found KubeEdge, a nascent project that seeks to bring Kubernetes orchestration and tooling to edge computing. Edge nodes are no different from cloud/data center nodes (with their associated compute, networking, and storage) except that they may be more resource constrained and are typically widely dispersed. It should come as no surprise then that edge and IoT can benefit from container technologies, standardized APIs, and tools used in data centers.
However, to grapple with the longer network latency that will manifest during workload scheduling and capturing cluster state updates, some customizations will be required for the edge. Additionally, the semantics of auto-scaling would need to be revisited. KubeEdge could well become a valuable IoT component, particularly to handle software updates and monitoring edge nodes. In addition, it paves the way to leveraging more advanced Kubernetes networking features, such as network segmentation and QoS.
These three projects, we feel, complement each other. With some enhancements and maturity, they could be the basis of a general end-to-end IoT framework. We shall be watching the Linux Foundation’s recently announced Akraino Edge Stack as well, which seeks to address Telco use cases at the edge.
Our next step is to actually build our automotive IoT application, which we discuss in Part II. Stay tuned to the Open Source Blog and follow us on Twitter (@vmwopensource) for when that piece goes live.