OpenSAF

Last updated
OpenSAF
Original author(s) Motorola
Developer(s) OpenSAF Foundation
Initial release31 June 2007;16 years ago (2007-06-31)
Stable release
5.21.03 / 1 March 2021;2 years ago (2021-03-01)
Repository
Written in C++
Type Cluster management software
Website opensaf.sourceforge.io OOjs UI icon edit-ltr-progressive.svg

OpenSAF (commonly styled SAF, the Service Availability Framework [1] ) is an open-source service-orchestration system for automating computer application deployment, scaling, and management. OpenSAF is consistent with, and expands upon, Service Availability Forum (SAF) and SCOPE Alliance standards. [2]

Contents

It was originally designed by Motorola ECC, and is maintained by the OpenSAF Project. [3] OpenSAF is the most complete implementation of the SAF AIS specifications, providing a platform for automating deployment, scaling, and operations of application services across clusters of hosts. [4] It works across a range of virtualization tools and runs services in a cluster, often integrating with JVM, Vagrant, and/or Docker runtimes. OpenSAF originally interfaced with standard C Application Programming interfaces (APIs), but has added Java and Python bindings. [2]

OpenSAF is focused on Service Availability beyond High Availability (HA) requirements. While little formal research is published to improve high availability and fault tolerance techniques for containers and cloud, [5] research groups are actively exploring these challenges with OpenSAF.

History

Service Availability, Principles and Practice, Textbook Service-Availability-Principles-and-Practice.jpg
Service Availability, Principles and Practice, Textbook

OpenSAF was founded by an Industry consortium, including Ericsson, HP, and Nokia Siemens Networks, and first announced by Motorola ECC, acquired by Emerson Network Power, on February 28, 2007. [6] The OpenSAF Foundation was officially launched on January 22, 2008. Membership evolved to include Emerson Network Power, SUN Microsystems, ENEA, Wind River, Huawei, IP Infusion, Tail-f, Aricent, GoAhead Software, and Rancore Technologies. [2] [7] GoAhead Software joined OpenSAF in 2010 before being acquired by Oracle. [8] OpenSAF's development and design are heavily influenced by Mission critical system requirements, including Carrier Grade Linux, SAF, ATCA and Hardware Platform Interface. OpenSAF was a milestone in accelerating adoption of Linux in Telecommunications and embedded systems. [9]

The goal of the Foundation was to accelerate the adoption of OpenSAF in commercial products. The OpenSAF community held conferences between 2008-2010; the first conference hosted by Nokia Siemens Networks in Munich (Germany), second hosted by Huawei in Shenzhen (China), and third hosted by HP in Palo Alto (USA). In February 2010, the first commercial deployment of OpenSAF in carrier networks was announced. [10] Academic and industry groups have independently published books describing OpenSAF-based solutions. [2] [11] A growing body of research in service availability is accelerating the development of OpenSAF features supporting mission-critical cloud and microservices deployments, and service orchestration. [12] [13]

OpenSAF 1.0 was released January 22, 2008. It comprised the NetPlane Core Service (NCS) codebase contributed by Motorola ECC. [14] Along with the OpenSAF 1.0 release, the OpenSAF foundation was incepted. [6] OpenSAF 2.0 released on August 12, 2008, was the first release developed by the OpenSAF community. This release included Log service and 64-bit support. [14] OpenSAF 3.0 released on June 17, 2009, included platform management, usability improvements, and Java API support. [15]

OpenSAF 4.0 was a milestone release in July 2010. [2] Nicknamed the "Architecture release", it introduced significant changes including closing functional gaps, settling internal architecture, enabling in-service upgrade, clarify APIs, and improve modularity. [16] Receiving significant interest from industry and academics, OpenSAF held two community conferences in 2011, one hosted by MIT University in Boston MA, and a second hosted by Ericsson in Stockholm.

Release history
VersionRelease dateNotes
Old version, no longer maintained: 1.022 January 2008Original codebase of NetPlane Core Service (NCS) codebase contributed by Motorola ECC to OpenSAF project.
Old version, no longer maintained: 2.012 August 2008
Old version, no longer maintained: 3.017 June 2009The second release (counting from v2.0 onwards), took about 1.5 years, with contributions from Wind River Systems. [17]
Old version, no longer maintained: 4.01 July 2010The "Architecture" release. First viable carrier-grade deployment candidate. [18]
Older version, yet still maintained: 4.216 March 2012Improved manageability, enhanced availability modelling.
Older version, yet still maintained: 5.05 May 2016A significant release. Support for spare system controllers (2N + spares), headless cluster(cloud resilience), enhanced Python bindings, node name logging. [19]
Current stable version: 5.201 June 2021
Legend:
Old version
Older version, still maintained
Latest version
Latest preview version
Future release

Concepts

OpenSAF v4 Architecture OpenSAF v4 Architecture.png
OpenSAF v4 Architecture

OpenSAF defines a set of building blocks, collectively providing a mechanism to manage Service Availability (SA) of applications based on resource-capability models. [20] SA and High Availability (HA) is the probability of a service being available at a random point in time; mission-critical systems require at least 99.999% (five nines) availability. HA and SA are essentially the same, but SA goes further (i.e. in-service upgrades of hardware and software). [21] OpenSAF is designed for loosely coupled systems with fast interconnections between nodes (i.e. using TIPC/TCP), [22] and extensible to meet different workloads; components communicate between themselves using any protocol. This extensibility is provided in large part by the IMM API, used by internal components and core services. The platform can exert control over compute and storage resources by defining as Objects, to be managed as (component service) instances and/or node constraints. [2] [20] [23]

OpenSAF software is distributed in nature, following the primary/replica architecture. In an `OpenSAF' cluster, there are two types of nodes which can be divided into those that manage an individual node and control plane. One system controller runs in "active" mode, another in "standby" mode, and remaining system controllers (if any) are spares ready to take over as Active or Standby role in case of a fault. Nodes can run headless, without control plane, adding cloud resilience. [16] [24]

System Model

System Designers need better Modeling tools An-AMF-model-generation-approach-2015.png
System Designers need better Modeling tools

The OpenSAF System Model is the key enabler API, allowing OpenSAF to process and validate requests, and update the state of objects in the AMF model, allowing directors to schedule workloads and service groups across worker/payload nodes. AMF behavior is changed via a configuration object. [24] Services can use ‘No Redundancy’, 2N, N+M, N-way, and N-way Active redundancy models. [20] OpenSAF lacks obvious modeling toolchains to simplify design and generation of AMF configuration Models. Ongoing research to address this gap, [25] [26] needs to deliver ecosystem tools, to better support modeling and automation of carrier-grade and Cloud Native Computing Foundation use cases.

Control Plane

The OpenSAF System Controller (SC) is the main controlling unit of the cluster, managing its workload and directing communication across the system. The OpenSAF control plane consists of various components, each its own process, that can run both on a single SC node or on multiple SC nodes, supporting high-availability clusters and service availability. [2] [24] The various components of the OpenSAF control plane are as follows:

Component

The Component is a logical entity of the AMF system model and represents a normalized view of a computing resource such as processes, drivers, or storage. Components are grouped into logical Service Units (SU), according to fault inter-dependencies, and associated with a Node. The SU is an instantiable unit of workload controlled by an AMF redundancy model, either active, standby, or failed state. SU of the same type is grouped into Service Groups (SG) which exhibit particular redundancy modeling characteristics. SU within an SG gets assigned to Service Instances (SI) and given an Availability state of active or standby. SI's are scalable redundant logical services protected by AMF. [2] [16]

Node

A Node is a compute instance (a blade, hypervisor, or VM) where service instances (workload) are deployed. The set of nodes belonging to the same communication subnet (no routing) comprise the logical Cluster. Every node in the cluster must run an execution environment for services, as well as OpenSAF services listed below:

Service Unit

OpenSAF Concepts OpenSAF-2NRedSG-2NRedSG-IPAddress-Example.png
OpenSAF Concepts

The basic scheduling unit in OpenSAF is a Service Unit (SU). A SU is a grouping of components. A SU consists of one or more components that are guaranteed to be co-located on the same node. SUs are not assigned IP addresses by default but may contain some component that does. A SU can be administratively managed using an object address. AmfND monitors the state of SUs, and if not in the desired state, re-deploys to the same node if possible. AmfD can start the SU on another Node if required by the redundancy model. [2] A SU can define a volume, such as a local disk directory or a network disk, and expose it to the Components in the SU.[39] SU can be administratively managed through the AMF CLI, or management can be delegated to AMF. Such volumes are also the basis for Persistent Storage. [2] [16]

Service Group

The purpose of a Service Group is to maintain a stable set of replica SU's running at any given time. It can be used to guarantee the availability of a specified number of identical SU's based on selected configured redundancy model: N-Way, N-way-Active, 2N, N+M, or 'No-redundancy'. The SG is a grouping mechanism that lets OpenSAF maintain the number of instances declared for a given SG. The definition of an SG identifies all associated SU and their state (active, standby, failed). [2] [16]

Service Instance

An OpenSAF Service Instance (SI) is a set of SU that work together, such as one tier of a multi-tier application. The set of SU that protects a service is defined by the SG. Multi-instance SG (N-way-active, N-way, N+M) requires a stable IP address, DNS name, and load balancer to distribute the traffic of that IP address among active SU in that SG (even if failures cause the SU's to move from machine to machine). By default, a service is exposed inside a cluster (e.g. SU[TypeA] is grouped into one SG, with requests from the SU[typeB] load-balanced among them), but service can also be exposed outside a cluster (e.g., for clients to reach front-end SUs). [2] [16]

Volumes

Filesystems available to OpenSAF SU's are potentially ephemeral storage, by default. If the node is destroyed/recreated the data is lost on that Node. One solution is a Network File System (NFS) shared storage, accessible to all payload nodes. [30] Other technical solutions are possible - what is important is that Volumes (File Share, mount point) can be modeled in AMF. Highly available Volumes provide persistent storage that exists for the lifetime of the SU itself. This storage can also be used as a shared disk space for SU within the SG. Volumes mounted at specific mount points on the Node are owned by a specific SG, so that instance cannot be shared with other SG using the same file system mount point.

Architecture

The OpenSAF architecture is distributed and runs in a cluster of logical nodes. All of the OpenSAF services either have 3-Tier or 2-Tier architecture. In the 3-Tiered architecture, OpenSAF services are partitioned into a service Director, a service Node-Director and an Agent. The Director is part of an OpenSAF service with central service intelligence. Typically it is a process on the controller node. The Node Directors co-ordinate node scoped service activities such as messaging with its central Director and its local Agents. The Agent provides service capabilities available to clients by way of a (shared) linkable library that exposes well-defined service APIs to application processes. Agents typically talk to their service Node Directors or Servers. The OpenSAF services are modularly classified as below [22]

The optional services can be enabled or disabled during the build/packaging of OpenSAF. OpenSAF can be configured to use TCP or TIPC as the underlying transport. Nodes can be dynamically added/deleted to/from the OpenSAF cluster at run time. OpenSAF cluster scales well up several hundred nodes. OpenSAF supports the following language bindings for the AIS interface APIs:

The modular architecture enables the addition of new services as well as the adaptation of the existing services. All OpenSAF services are designed to support in-service upgrades.

Services

The following SA Forum's AIS services are implemented by OpenSAF 5.0. [23]

Supporters

Network Equipment Providers will be the primary users of products based on the OpenSAF code base, integrating them into their products for network service providers, carriers, and operators. Many network equipment providers have demonstrated their support for OpenSAF by joining the Foundation and/or contributing to the Open Source project. Current Foundation Members include: Ericsson, HP, and Oracle. Several providers of computing and communications technology also have indicated support for the OpenSAF initiative including, OpenClovis SAFplus, Emerson Network Power Embedded Computing, Continuous Computing, Wind River, IP Infusion, Tail-f, Aricent, Rancore Technologies, GoAhead Software, and MontaVista Software.

Uses

OpenSAF is commonly used as a way to achieve carrier-grade (five-nines) service availability. OpenSAF is functionally complete but lacks the ecosystem of modeling tools available to other open-source solutions like Kubernetes and Docker Swarm.

See also

Related Research Articles

Grid computing is the use of widely distributed computer resources to reach a common goal. A computing grid can be thought of as a distributed system with non-interactive workloads that involve many files. Grid computing is distinguished from conventional high-performance computing systems such as cluster computing in that grid computers have each node set to perform a different task/application. Grid computers also tend to be more heterogeneous and geographically dispersed than cluster computers. Although a single grid can be dedicated to a particular application, commonly a grid is used for a variety of purposes. Grids are often constructed with general-purpose grid middleware software libraries. Grid sizes can be quite large.

Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems. MOM allows application modules to be distributed over heterogeneous platforms and reduces the complexity of developing applications that span multiple operating systems and network protocols. The middleware creates a distributed communications layer that insulates the application developer from the details of the various operating systems and network interfaces. APIs that extend across diverse platforms and networks are typically provided by MOM.

MySQL Cluster is a technology providing shared-nothing clustering and auto-sharding for the MySQL database management system. It is designed to provide high availability and high throughput with low latency, while allowing for near linear scalability. MySQL Cluster is implemented through the NDB or NDBCLUSTER storage engine for MySQL.

WebSphere Application Server (WAS) is a software product that performs the role of a web application server. More specifically, it is a software framework and middleware that hosts Java-based web applications. It is the flagship product within IBM's WebSphere software suite. It was initially created by Donald F. Ferguson, who later became CTO of Software for Dell. The first version was launched in 1998. This project was an offshoot from IBM HTTP Server team starting with the Domino Go web server.

In computing, a Parallel Sysplex is a cluster of IBM mainframes acting together as a single system image with z/OS. Used for disaster recovery, Parallel Sysplex combines data sharing and parallel computing to allow a cluster of up to 32 systems to share a workload for high performance and high availability.

High-availability clusters are groups of computers that support server applications that can be reliably utilized with a minimum amount of down-time. They operate by using high availability software to harness redundant computers in groups or clusters that provide continued service when system components fail. Without clustering, if a server running a particular application crashes, the application will be unavailable until the crashed server is fixed. HA clustering remedies this situation by detecting hardware/software faults, and immediately restarting the application on another system without requiring administrative intervention, a process known as failover. As part of this process, clustering software may configure the node before starting the application on it. For example, appropriate file systems may need to be imported and mounted, network hardware may have to be configured, and some supporting applications may need to be running as well.

<span class="mw-page-title-main">Distributed Replicated Block Device</span> Distributed replicated storage system for Linux

DRBD is a distributed replicated storage system for the Linux platform. It is implemented as a kernel driver, several userspace management applications, and some shell scripts. DRBD is traditionally used in high availability (HA) computer clusters, but beginning with DRBD version 9, it can also be used to create larger software defined storage pools with a focus on cloud integration.

IBM App Connect Enterprise is IBM's premier integration software offering, allowing business information to flow between disparate applications across multiple hardware and software platforms. Rules can be applied to the data flowing through user-authored integrations to route and transform the information. The product can be used as an Enterprise Service Bus supplying a communication channel between applications and services in a service-oriented architecture.

The Hardware Platform Interface (HPI) is an open specification that defines an application programming interface (API) for platform management of computer systems. The API supports tasks including reading temperature or voltage sensors built into a processor, configuring hardware registers, accessing system inventory information like model numbers and serial numbers, and performing more complex activities, such as upgrading system firmware or diagnosing system failures.

oVirt Free, open-source virtualization management platform

oVirt is a free, open-source virtualization management platform. It was founded by Red Hat as a community project on which Red Hat Virtualization is based. It allows centralized management of virtual machines, compute, storage and networking resources, from an easy-to-use web-based front-end with platform independent access. KVM on x86-64, PowerPC64 and s390x architecture are the only hypervisors supported, but there is an ongoing effort to support ARM architecture in a future releases.

<span class="mw-page-title-main">Computer cluster</span> Set of computers configured in a distributed computing system

A computer cluster is a set of computers that work together so that they can be viewed as a single system. Unlike grid computers, computer clusters have each node set to perform the same task, controlled and scheduled by software. The newest manifestation of cluster computing is cloud computing.

Eucalyptus is a paid and open-source computer software for building Amazon Web Services (AWS)-compatible private and hybrid cloud computing environments, originally developed by the company Eucalyptus Systems. Eucalyptus is an acronym for Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems. Eucalyptus enables pooling compute, storage, and network resources that can be dynamically scaled up or down as application workloads change. Mårten Mickos was the CEO of Eucalyptus. In September 2014, Eucalyptus was acquired by Hewlett-Packard and then maintained by DXC Technology. After DXC stopped developing the product in late 2017, AppScale Systems forked the code and started supporting Eucalyptus customers.

<span class="mw-page-title-main">Single point of failure</span> A part whose failure will disrupt the entire system

A single point of failure (SPOF) is a part of a system that, if it fails, will stop the entire system from working. SPOFs are undesirable in any system with a goal of high availability or reliability, be it a business practice, software application, or other industrial system.

The Application Interface Specification (AIS) is a collection of open specifications that define the application programming interfaces (APIs) for high-availability application computer software. It is developed and published by the Service Availability Forum and made freely available. Besides reducing the complexity of high-availability applications and shortening development time, the specifications intended to ease the portability of applications between different middleware implementations and to admit third party developers to a field that was highly proprietary in the past.

<span class="mw-page-title-main">Slurm Workload Manager</span> Free and open-source job scheduler for Linux and similar computers

The Slurm Workload Manager, formerly known as Simple Linux Utility for Resource Management (SLURM), or simply Slurm, is a free and open-source job scheduler for Linux and Unix-like kernels, used by many of the world's supercomputers and computer clusters.

<span class="mw-page-title-main">Oracle NoSQL Database</span> Distributed database

Oracle NoSQL Database is a NoSQL-type distributed key-value database from Oracle Corporation. It provides transactional semantics for data manipulation, horizontal scalability, and simple administration and monitoring.

Kubernetes is an open-source container orchestration system for automating software deployment, scaling, and management. Originally designed by Google, the project is now maintained by the Cloud Native Computing Foundation.

Enduro/X is an open-source middleware platform for distributed transaction processing. It is built on proven APIs such as X/Open group's XATMI and XA. The platform is designed for building real-time microservices based applications with a clusterization option. Enduro/X functions as an extended drop-in replacement for Oracle Tuxedo. The platform uses in-memory POSIX Kernel queues which insures high interprocess communication throughput.

<span class="mw-page-title-main">Oracle Cloud</span> Cloud computing service

Oracle Cloud is a cloud computing service offered by Oracle Corporation providing servers, storage, network, applications and services through a global network of Oracle Corporation managed data centers. The company allows these services to be provisioned on demand over the Internet.

References

  1. "OpenSAF/About". SourceForge. Archived from the original on 2015-05-11. Retrieved 2020-12-28.
  2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Maria Toeroe; Francis Tam (2012). Service Availability: Principles and Practice. John Wiley & Sons. ISBN   978-1-1199-4167-5.
  3. "OpenSAF Readme". SourceForge. Archived from the original on 2020-12-28. Retrieved 2020-12-28.
  4. "OpenSAF". OpenSAF. 19 March 2014. Retrieved 2020-12-28.
  5. "Fault-Tolerant Containers Using NiLiCon" (PDF). ucla. Archived (PDF) from the original on 2020-12-29. Retrieved 2020-12-28.
  6. 1 2 Carolyn Mathas. "OpenSAF project". eetimes. Archived from the original on 2020-08-27. Retrieved 2020-12-28.
  7. ED News Staff (2007). "Industry Leaders To Establish Consortium On OpenSAF Project". Archived from the original on 2020-12-29.
  8. OpenSaf Foundation (2010). "GoAhead Software Joins OpenSAF(TM)" (Press release). Archived from the original on 2020-12-29.
  9. cook (2007). "Motorola launches open-source High Availability Operating Environment". Archived from the original on 2014-12-21.
  10. OpenSAF Foundation (2010). "OpenSAF in Commercial Deployment" (Press release). Archived from the original on 2018-06-25.
  11. Madhusanka Liyanage; Andrei Gurtov; Mika Ylianttila (2015). Software Defined Mobile Networks (SDMN): Beyond LTE Network Architecture. John Wiley & Sons, Ltd. doi:10.1002/9781118900253. ISBN   9781118900253.
  12. Yanal Alahmad; Tariq Daradkeh; Anjali Agarwal (2018). "Availability-Aware Container Scheduler for Application Services in Cloud". IEEE: 1–6. doi:10.1109/PCCC.2018.8711295. ISBN   978-1-5386-6808-5. S2CID   155108018.
  13. Leila Abdollahi Vayghan; Mohamed Aymen Saied; Maria Toeroe; Ferhat Khendek (2019). "Kubernetes as an Availability Manager for Microservice Applications". Journal of Network and Computer Applications. arXiv: 1901.04946 .
  14. 1 2 "OpenSAF Releases 2.0". LightReading. Archived from the original on 15 August 2020. Retrieved 29 December 2020.
  15. "Open source Carrier Grade Linux middleware rev'd (LinuxDevices)". LWN. Archived from the original on 2015-09-17. Retrieved 29 December 2020.
  16. 1 2 3 4 5 6 7 8 9 "OpenSAF Release 4 Overview "The Architecture Release"" (PDF). OpenSAF. Archived (PDF) from the original on 31 December 2020. Retrieved 29 December 2020.
  17. Hans J. Rauscher (22 June 2009). "OpenSAF 3.0 released". WindRiver. Archived from the original on 2009-06-29. Retrieved 30 December 2020.
  18. "OpenSAF Project Releases Major Update to High Availability Middleware". PICMG. Archived from the original on 2020-12-31. Retrieved 30 December 2020.
  19. "Announcement of 5.0.0 GA release and 4.7.1, 4.6.2 maintenance releases". sourceforge. Archived from the original on 2020-12-31. Retrieved 30 December 2020.
  20. 1 2 3 SA Forum (2010). "SAI-AIS-AMF-B.04.01 Section 3.6" (PDF). OpenSAF. Retrieved 20 December 2020.
  21. Anders Widell; Mathivanan NP (2012). "OpenSAF in the Cloud. Why an HA Middleware is still needed" (PDF). Linuxfoundation Events. Retrieved 24 September 2015.
  22. 1 2 Jon Paul Maloy (2004). "TIPC: Providing Communication for Linux Clusters" (PDF). Linux Kernel.org. Linux Symposium, Volume Two. Archived (PDF) from the original on 2017-08-30. Retrieved 31 December 2020.
  23. 1 2 3 4 OpenSAF TSC (2016). "Opensaf". OPNFV. Archived from the original on 2020-12-31. Retrieved 2020-12-28.
  24. 1 2 3 OpenSAF Project (2020). "OpenSAF README". Sourceforge. Retrieved 2020-12-31.
  25. Maxime TURENNE (2015). "A NEW DOMAIN SPECIFIC LANGUAGE FOR GENERATING AND VALIDATING MIDDLEWARE CONFIGURATIONS FOR HIGHLY AVAILABLE APPLICATIONS" (PDF). etsmtl.ca. Retrieved 2020-12-28.
  26. Pejman Salehi; Abdelwahab Hamou-Lhadj; Maria Toeroe; Ferhat Khendek (2016). "A UML-based domain specific modeling language for service availability management". doi. Elsevier Science Publishers B. V. Computer Standards & Interfaces, Vol. 44, No. C. doi:10.1016/j.csi.2015.09.009 . Retrieved 2020-12-28.
  27. OPNFV HA Project (2016). "Scenario Analysis for High Availability in NFV, Section 5.4.2" (PDF). OPNFV. Archived (PDF) from the original on 2020-12-31. Retrieved 2020-12-31.
  28. OpenSAF Project (2020). "OpenSAF IMM README". Sourceforge. Archived from the original on 2020-12-31. Retrieved 2020-12-31.
  29. Jens Jensen; Expert Group (2010). "JSR 319: Availability Management for Java". JCP. Archived from the original on 2017-07-10. Retrieved 2020-12-31.
  30. Ferhat Khendek (2013). "OpenSAF and VMware from the Perspective of High Availability" (PDF). DMTF. Archived (PDF) from the original on 2015-09-23. Retrieved 2020-12-31.