Modbus 1.0.0

Adam Crain September 06, 2022
Modbus 1.0.0

We’ve released the 1.0.0 version of our Modbus library. This release adds a number of important items to make the library feature complete including:

  • RTU (serial) support
  • Secure Modbus - TLS support including the X.509 role extension handling
  • Dynamically controllable protocol decoding
  • C++ bindings

API Stability

The Rust community strictly adheres to the semver specification. Prior to 1.0, pretty much anything goes in terms of breaking changes. After 1.0, breaking changes are only allowed when incrementing the major version number.

A 1.0 release is a commitment to API stability. We can continue to add functionality in a non-breaking way, but we can’t break user code until 2.0.

Modbus Security

Modbus.org has done a nice job of specifying how TLS should be applied to the protocol. The specification includes an x.509 extension that contains a role identifier. This id allows the server to restrict access to a subset of available function codes and/or addresses and thereby implement role-based access control (RBAC).

How much adoption this will see remains to be seen. Others have argued that Modbus is too simple and has too much legacy deployment to warrant its own cryptographic security. I think that it serves as a nice illustration of a pragmatic approach that standards bodies can take to specify security for their protocols.