Organizations that provide mission critical communications technology are increasingly shifting to the Rust programming language to improve their software security. It’s tied in to software memory, which the NSA said in a recent report is responsible for nearly three-quarters of all exploits known to hack a system. Mission Critical turned to Angelo Corsaro, CEO of ZettaScale, to find out more about the company’s new protocol that a number of organizations in the IoT, industrial tech, transportation, robotics, and telecom sectors are utilizing in order to significantly cut the amount of energy required to send data.
Mission Critical: Can you tell us more about the Zenoh protocol and how it is used in mission critical systems?
Zenoh is a pub/sub/query protocol that unifies data in motion, data at rest and computations from embedded microcontrollers up the datacenter. Zenoh provides location-transparent primitives for high performance pub/sub, distributed computations and distributed queries from the data center down to the microcontroller.
In addition to massive adoption in robotics, transportation, automotive, industrial, and Internet-scale machine learning/analytics, there have been bold statements and important recommendations around Zenoh.
For instance, Amazon recently stated that: "Perhaps the most viable protocol that will help us mature to this ideal model is Zenoh which is an Eclipse Incubation project."
While the ITU working group FGAI4AD, after two years of investigation, decided that Zenoh was the best protocol for Intelligent Transport Systems.
Mission Critical: How did the decision to switch to Rust come about, and what were the main benefits you saw from making that change?
The first version of Zenoh was developed in OCaml, a functional programming language that is quite popular in academia, such as Yale, Cambridge and the top engineering schools in France, and finds some strong users in applications that require good performance, productivity, security and safety.
Around 2018 we were a bit frustrated by the fact OCaml’s support for multicore was not maturing quickly enough (was eventually released in 2023) and we had pressure from some of our major users in the telecommunication industry to move toward a programming language that was more mainstream. In other terms, for which you can more easily find developers across the globe.
We had a strong push to move to Go. But Go was for me a "no-go" as the language isn’t sufficiently expressive, extremely verbose and with a garbage collector. At the same time we did not want to use C/C++ for security reasons. While this is now widely discussed, we were already well aware that ~70% of security issues are created by memory management issues.
We had evaluated Rust already in 2016 and discarded it as we had felt that the language wasn’t sufficiently mature.
In 2018 the situation was different, thus after an in depth re-evaluation we decided to go for it. Rust was essentially satisfying all of our requirements and also had some bonus points. Specifically, it was a memory and concurrency safe language, did not have a garbage collector, had an advanced type system, had support for asynchronous programming (which we find essential for networking code), and all of this while being extremely performant. The cherry on the cake was the promise of embedded Rust, which would allow us to run bare metal on micro-controllers. Thus, we started rewriting Zenoh in Rust and it has been great fun!
Mission Critical: How has the adoption of Rust affected the security of the Zenoh platform, and what specific security features does Rust provide that other programming languages may not?
Security was not something we could afford to compromise with a memory unsafe language, Thus as explained above, even the first implementation of Zenoh was using OCaml, a memory safe language. Rust allowed us to move to a system programming language that performs as well as C/C++ or better and is memory and concurrency safe. This as explained above cuts already 70% of the potential security holes. The rest is a matter of protocol design.
Mission Critical: How has the shift to Rust impacted the performance and efficiency of the Zenoh platform, particularly in terms of energy usage?
The shift to Rust has positively impacted the performance and efficiency of the Zenoh platform. Based on an independent evaluation, available here, Zenoh is by far the most performing protocol available on the market today. That is in part a merit of our protocol design and in part a merit of Rust – since we can write extremely high level software that runs blazing fast. The other way of reading our performances is that we need fewer CPU cycles and less bandwidth than other technologies to do the same work – which directly translates to higher energy efficiency.
Mission Critical: Can you talk about some specific use cases of Zenoh in various mission critical industries, and how the Rust implementation has impacted those use cases?
Zenoh is used in various industries for a range of applications, such as real-time monitoring and control in IoT, data analytics in industrial tech, traffic management in transportation, and network management in telecom. The Rust implementation has improved the reliability, security, and performance of these use cases by providing a robust and efficient foundation for the Zenoh protocol.
Additionally, many of our users have started switching to Rust after hearing from our experience and seeing what we have achieved with Zenoh.
Mission Critical: As more organizations shift to Rust for improved security, do you see Rust becoming the de facto language for mission critical applications in the future?
Absolutely. Rust is the C/C++ of the new Millenium. It was recently added to the list of safe languages by the NIST( see https://www.nist.gov/itl/ssd/software-quality-group/safer-languages), the first certified compiler will be available on the market on Q2 2023, thus we’ll see a growing adoption on safe and secure systems.
Mission Critical: What advice do you have for other organizations looking to improve the security of their mission critical systems through programming language choices, and what factors should they consider in making that decision?
Organizations should prioritize languages that emphasize safety, security, and performance, like Rust, when developing mission-critical systems. Factors to consider include the language's memory management, type system, concurrency support, and community support. Ultimately, the choice should align with the organization's goals and requirements for building reliable, secure, and efficient systems.
Mission Critical: Can you tell us about any challenges or obstacles you faced when making the switch to Rust, and how did you overcome them?
Some of the challenges we faced during the switch to Rust included learning the new language and its unique concepts, such as ownership and borrowing, as well as retraining our development team. We overcame these challenges by investing in education, training, and mentorship, leveraging Rust's extensive documentation and supportive community to facilitate the learning process. Overall, I should say that the rate of adoption of Rust was quite fast.
Mission Critical: Looking ahead, what are some of the new features or updates you are working on for the Zenoh protocol, and how do you see the role of Rust evolving in the context of mission critical communications technology in the coming years?
We are continuously working on improving and expanding the Zenoh protocol. With respect to Rust, we are extremely happy to see how the support for embedded systems has been maturing. We are working on a "Rust no-std" version of our protocol that will be able to run bare-metal on microcontrollers. This is something we always dreamed of, something that Java kind of achieved, but not at the scale that Rust may actually achieve. The other area of expansion relates to WASM support in Rust and a Zenoh-based data-flow programming framework we’ve been working on called Zenoh-Flow.