OPC UA PubSub application on x86 Linux with Time Based Scheduling on I210 network interface controller
Industry 4.0 demands vendor independent end-to-end interoperability from sensor to cloud. OPC UA is a platform independent, service-oriented modelling framework that together with TSN is capable of meeting this demand. While there is majority market consensus behind this choice of standards, to ensure that real products are released quickly in the market, it is essential that open source resources are available to accelerate adoption of OPC UA and TSN.
In this scenario, OPC UA has a very good open source resource in the open62541 stack that is written from the ground up to run on resource constrained embedded devices (devices such as PLCs, gateways, sensors, actuators, etc that make up the bulk of field assets). open62541 is available under the Mozilla Public License v2.0 that allows it to be integrated into commercial products
On the other hand, TSN standards and silicon are still under development and there isn’t yet wide commercial availability in the market. Meanwhile, upstream interfaces for Linux are implementing provisions for Time Based Scheduling (TBS) in preparation for when TSN silicon does eventually become available.
In a related development, Intel has introduced patches to their open source igb Linux network driver that will provide TBS capabilities on the I210 network interface controller. These patches together with the open source PTP stack provide the basis for setting up a Linux PC with TSN like capabilities for time synchronization IEEE 802.1 AS and scheduled traffic IEEE 802.1 Qbv.
The TBS patches were tested only with a rudimentary UDP packet sending application by Intel and the transmit queue configuration procedure was not very straightforward as very limited documentation was available. As part of development activities in Phase #1 of the Open Source Ecosystem project for OPC UA TSN, Kalycito integrated the TBS patches from Intel with the OPC UA PubSub application and measured its performance in a configuration that would be closer to that of an end user environment. A related whitepaper with the performance measurements is also available as part of this package.
- Setup Intel patches needed for Linux user space applications to use launch time functionality of the I210
- Compile the open62541 Pub/Sub application to
- use the patched I210 driver
- use the new SO_TXTIME socket option
- Setup Linux PTP for time synchronization
- Run the Pub/Sub application synchronized to network time
- Capturing the network trace and verifying
- time synchronization jitter
- packet publish jitter
- application round trip time