DNP3 (aka IEEE 1815) is the most common SCADA protocol used in electric power in North America. It is event-based and efficiently transfers measurement data between outstation and master components. It can be operated in a purely poll-based mode, or an unsolicited (push) mode where the outstation transmits events as they occur.

Current Version: Beta
Release Date: Q1 2021

Source Code

Scale Up or Down

Our DNP3 library is fully asynchronous and uses the most efficient event-driven backend provided by your OS: epoll on Linux, IOCP on Windows, etc. The library scales to many thousands of concurrent communication sessions while maintaining a small memory and CPU footprint.

Conformance Testing

Our outstation implementation is conformance tested using a fully automated testing engine. This testing engine implements the conformance test procedures as published by the DNP Users Group and augments our own unit and integration test suites. This means that users are unlikely to face interoperability challenges talking to 3rd party implementations of the protocol.

JavaTCPUDPTLSSerial.NETC++C APIGenerated from modelRustDNP3Async Runtime


  • Level 3 master and outstation components in a single library
  • Supports TCP, UDP, Serial, and TLS communication channels
  • Server and Client TLS support provided using Rustls: Modern TLS library in Rust (not openssl).
  • Written in safe Rust with idiomatic bindings for C, .NET Core, and Java
  • Blazing fast (and secure) zero-copy / zero-allocation parsing of application data
  • Automatic mapping between DNP3 and higher-level measurement types
  • Built-in logging and protocol decoding
  • Share runtime resources with other libraries to implement extremely efficient gateways and translators
  • Runs on all platforms and operating systems supported by the Tokio Runtime:
    • Windows, Linux, OSX, FreeBSD
    • x86, x64, ARM, PowerPC, MIPS