Jump-Start into the TSN Era with the TSN°Enabler

The TSN°Enabler is a software component allowing you to tunnel your non-TSN traffic of your non-TSN applications and devices through a TSN network with minimal effort.

Our Motivation

In the frame of multiple projects with industry partners, we noticed the lack of commercially available TSN endpoints. The attempt to build and configure a Linux-based TSN endpoint ourselves further revealed the lack of a generic and easy-to-use tool to turn a Linux host into a TSN endpoint.

Hence, the idea of the TSN°Enabler was born.

Our motivation is to provide a generic and easy to use tool that completely automates the configuration process of a Linux-based system to become a TSN endpoint (or gateway) based on a provided stream configuration (schedule). The resulting TSN°Enabler is a library that can be used as a base for new TSN-native applications or compiled to the TSN°Gateway application suitable to retrofit existing non-TSN applications or devices.

Fraunhofer FOKUS is happy to announce the first release of the TSN°Enabler. 

You're welcome to get in touch with us for further information.

TSN Enabler Fig 1
Figure 1: The TSN°Enabler empowering multiple TSN-native applications sharing a same NIC Fraunhofer FOKUS

TSN°Enabler

The TSN°Enabler is a library that abstracts the complexity of scheduled traffic and its configuration for application developers. The usage of the exposed functions by the library is sufficient to implement reconfigurable scheduled traffic in new TSN-native applications, allowing developers to fully focus on their application logic. The TSN°Enabler library encapsulates/decapsulates and schedules (IEEE 802.1Qbv) network traffic according to a given schedule in order to assure deterministic communication and quality of service.

The library supports generic commercial off-the-shelf (COTS) hardware that allows affordable deployment of the solution to existing devices such as brown field edge nodes or IPCs. Hardware and software independency is a defined design goal of the TSN°Enabler, aiming to support various CPU architectures and operating systems in the future. Current developments and testing are focused on x86 CPUs, the i210 NIC, and the Linux operating system.

Figure 1 shows the TSN°Enabler library being used as a base for a TSN-native application running on an edge node. Application developers can rely on the TSN°Enabler for TSN configuration of the system and scheduling of selected traffic according to a given schedule. The application logic interfaces the 'app interface' for deterministic network connectivity.

TSN Enabler Fig 2
Figure 2: The TSN°Gateway empowering a non-TSN application (left) and a non-TSN device (right) Fraunhofer FOKUS

TSN°Gateway

The TSN°Gateway is our sample application showcasing the functionality and performance of the TSN°Enabler library. It acts as a TSN gateway empowering multiple non-TSN network applications (such as vPLCs) or multiple non-TSN physical devices (such as conventional PLCs) to leverage the benefits of TSN without any further required modification or support of the preexisting applications or devices. The TSN°Gateway terminates TSN streams as a TSN endpoint for non-TSN appliances. The TSN configuration process (IEEE 802.1Qcc) is also entirely handled by the TSN°Gateway at run time by interfacing the involved configuring instance (CUC/CNC) – This allows dynamic reconfiguration of deployed systems at runtime.

Figure 2 shows the two use cases of the TSN°Gateway. On the left side the TSN°Gateway empowers a non-TSN application running on the same host to use the TSN network. On the right side the TSN°Gateway empowers a non-TSN PLC, attached to the edge node running the TSN°Gateway, to also participate in TSN. In both cases the TSN°Gateway acts as a gateway for TSN to the non-TSN application and device.  The network traffic produced by both endpoints, such as industrial Ethernet protocols, is transparently tunneled through the TSN network.

Use Cases

1) TSN°Enabler as a library for new TSN-native applications

  • Developer-friendly TSN abstraction
  • Intuitive addition and removal of TSN streams or entire schedules
  • TSN library for native TSN support of, for example:
    • 5G components such as UPF, NW-TT, DS-TT, etc.
    • The TSN°Gateway as depicted in use cases 2 and 3 below
    • Any new software meant to participate in TSN

2) TSN°Gateway to retrofit non-TSN applications

  • TSN empowerment of non-TSN applications
  • No modification of applications required
  • Support of vPLCs (e.g., Profinet over TSN)
  • Deployable as virtual TSN gateway on the host of the application
  • TSN gateway to empower, for example:
    • vPLCs
    • Custom industrial applications
    • SCADA Systems

3) TSN°Gateway to retrofit non-TSN devices

  • TSN empowerment of non-TSN devices
  • No modification of devices required
  • Support of industrial drives (e.g., Profinet over TSN)
  • Deployable as physical TSN gateway (additional device) connected upstream to the device
  • TSN gateway to empower, for example:
    • Industrial drives
    • Conventional PLCs/IPCs
    • Industrial sensors and actuators

API

TSN°Enabler API

The TSN°Enabler features a set of functions suitable to leverage the functionality of the TSN°Enabler. Functions allow, for instance, to apply and remove individual streams or entire schedules.

TSN°Gateway API

The TSN°Gateway can be configured via RPC at runtime or JSON at start-up.

RPC

The TSN°Gateway is configurable by means of Remote Procedure Calls (RPC).

The RPC server of the TSN°Gateway provides an interface to configure TSN streams at runtime by external services. Stream configurations received via the RPC interface are applied using the TSN°Enabler. The runtime RPC server interface is built using gRPC, due to its vast programming language support. This provides flexibility with regards to implementation of third-party RPC clients (such as a CUC) meant to interface the TSN°Gateway. 

The RPC interface is defined by a protobuf3 formatted file. This file contains, for instance, the definition of a TSN stream composed of different timing data, interface names, and multiple MAC addresses. Examples for RPC clients able to configure the TSN°Gateway are provided in C++ and Python as part of the code base.

JSON

The TSN°Gateway will also load and apply a default configuration from a JSON file if present at start-up. This allows to use and evaluate the TSN°Gateway without the need of an RPC client.