gPTP Software Stack
InES-gPTP2020 (IEEE 802.1AS-2020 Software Stack)
The protocol software is a portable implementation of the TSN standard IEEE 802.1AS-2020 for Ethernet networks (full-duplex, point-to-point links - clause 11 of the standard). It has been successfully used on various operating systems and also runs on a Nios II bare-metal in a while(1) loop. The stack supports multiple parallel PTP instances for different PTP domains, synchronization tree creation using external port configuration, which is sometimes known as pre-engineered sync tree (PEST) and the well-known best timeTransmitter clock algorithm (BTCA – formerly BMCA).
We use the software in applied R&D projects with industry partners, but it can also be licensed as source code. We monitor ongoing developments in IEEE for functional extensions and plan to add new functionality as the standards mature.
Features
- Time-Aware System (PTP End Instance and PTP Relay Instance) according to IEEE 802.1AS-2020.
- Generic code allows porting to a wide variety of hardware and software platforms.
- An extensive API enables the connection of applications.
- The Comand Line Interface (CLI) allows evaluation, configuration, and monitoring of the gPTP software.
- Programmed in ANSI C.
- Extensive documentation.
Programming Language and Design
The programming language of the gPTP software is ANSI-C / C-99. The design of the gPTP stack is object-oriented, although C is not an object-oriented programming language.
Portability to different target systems
The gPTP software consists of a system-independent protocol engine and an OS abstraction layer. The Protocol Engine is completely system independent; the OS Abstraction Layer must be adapted to the HW/SW environment. Due to the clean structuring of the OS Abstraction Layer, the software is quickly and easily ported to different systems.
Application Programming Interface (API)
The API is the interface to the user application. It provides functions for configuration as well as monitoring of the stack.
Command Line Interface (CLI)
Developers configure and monitor PTP at runtime using the command line interface. For example, the state machine can be monitored continuously, the current values of the internal DataSets can be displayed, and parameters can be changed. The command line interface uses the same get() and set() functions that can be used to connect to the network management (YANG/MIB).
Licensing
In addition to use in joint research projects (interesting, practice-relevant research topics and requests for collaboration are always welcome), we offer InES-gPTP2020 as a source code license:
- Source code buy-out, unlimited in time and for any platforms in the licensee's portfolio.
The license includes:
- the complete source code of the protocol layer and the OS abstraction layer
- a reference implementation for Linux (currently for PC Engines’ APU2 with three Intel I210AT Ethernet Controllers running Debian Linux)
- Integration guide, PICS for host-independent functionality
- three days support by InES
Future extensions of IEEE 802.1AS
The IEEE is currently (end of 2023) working on several projects to support requirements for various TSN profiles: Hot standby redundancy, improvements in synchronization accuracy for long line structures, or disabling certain functions that are mandatory in AS-2020 are examples of this. We are following these discussions at first hand and plan to implement relevant functionality as soon as it is adopted by the IEEE.