Cisco Platform Abstraction (CPA) is a model-driven, administrative platform software development kit (SDK) created by Cisco developers that disaggregates software and hardware from a Network Operating System (NOS) like Cisco IOS XE. As a single source of truth and a standardized repository of hardware information, CPA simplifies development, debugging, and device validation, making it easier and faster for developers to provide code for data objects on new platforms. 

Creating Order out of Device Software Chaos 

Today, the descriptive data used to interact with device platforms on networks is spread out over multiple documents, spreadsheets, emails, code, and sometimes it resides in people’s heads. This includes the business configuration, device address, identification programmable read-only memory (IDPROM), and hardware/system functional specifications. 

For developers, working with this widespread device data is inefficient, adds time to market for new product development, and is prone to error from fragmented or conflicting device information. They have had to modify code for each platform framework. 

To date, organizations like the Open Compute Project has created a common, consistent abstraction interface called Open Network Linux Platform (ONLP) for accessing important platform assets such as SFPs, PSUs, Fans, Sensors, LEDs, and non-volatile storage devices. The Open Compute Project has also tried to build open source, white box switches using hardware and software disaggregation. 

Supporting Distributed Systems and Expanded Features 

CPA is more advanced than ONLP due to its support for abstraction of distributed, large chassis systems with fabric cards and its more up-to-date way of building device models and describing device data. It was originally developed for Nexus OS and then adapted to bring up Cisco service provider platforms running Cisco IOS XR. Later this year, CPA will be part of the Cisco IOS XE codebase on two enterprise platforms.   

Cisco developers have used CPA to support development of distributed platforms by writing new APIs to support Ethernet out of Band Channel (EOBC), optics, network processing units (NPUs), and fabric devices.  

CPA obtains very specific data from every device, via an API, without requiring a lot of platform-specific code. Its APIs are compatible with APIs used by third party and open-source network operating systems (NOSs), allowing developers to use CPA for both Cisco and third-party hardware platforms and software. 

CPA Design 

The CPA SDK consists of libraries that are part of the Linux user space. CPA relies on the software representation of hardware devices and their interconnects. It provides a method to describe device connection and interconnection details and how the network reads and writes to devices from the network stack. It also describes how device data is obtained from the user space or the kernel driver and provides a common architecture for drivers and code across the Positions in Network (PINs) within the different network layers. 

The CPA architecture (Figure 1) includes an OS adaption layer (the CPA Interface) that maintains the existing software stack functions and interfaces (e.g., Cisco IOS XE, Cisco IOS XR, or NX-OS) along with data structures, trace and log mechanisms, and error codes specific to the software stack.  

Figure 1. CPA and Network Layers

A northbound layer which is OS independent and platform agnostic consists of YANG models for device modeling, code generation plugins, infrastructure source files, public header files, and source code. Using this information, CPA auto generates APIs and platform API test code. The southbound layer which is specific to a given platform includes JSON and YAML files to describe each hardware platform’s database, board-specific implementation logic, and driver interface code (user space and kernel). It accesses pertinent code from the Board Support Package (BSP), kernel loadable modules (KLMs), vendor provided SDKs, and Cisco and OS infrastructure libraries.

Benefits in Development and Debugging

CPA streamlines the work of the hardware development team, the diagnostics team, and the platform team, saving Cisco time and money for development. As a tool for debugging, it allows developers to pinpoint where a problem exists without fully integrating it into the NOS features.

Using CPA, Cisco developers can bring up new hardware generations by making updates to CPA. It can be re-used by other teams developing on the same Cisco hardware and speeds the software release cycle by utilizing existing platform functions and information.

Cisco IOS XE is an open and flexible operating system optimized for the future of work. As the single OS for enterprise wired and wireless access, aggregation, core, and WAN, Cisco IOS XE reduces business and network complexity. It provides a common architecture for developing software for enterprise routing and switching platforms. The CPA architecture is an important framework in Cisco IOS XE to build a model-driven, disaggregated common platform software which is shared across multiple platforms.

Here is a summary of CPA’s major benefits for engineering teams:

  • Hardware and software disaggregation tool
  • Single source of truth for hardware board specification
  • Common models and APIs to access platforms
  • Auto generation of platform specification from platform model schema
  • Standardization and recipes baked into developer workflow

Learn more about network programmability and infrastructure as code: Check out the full agenda of technical sessions and demos coming to Cisco DevNet Create 2021, starting October 19, 2021.

Additional reading



Shivu Vibhuti

Senior Technical Leader

Enterprise Networking