Paul Vancil – Distinguished Eng., ESI Architecture, Dell EMC

Dell EMC contributes open source Redfish service

Dell EMC has always been a big believer in open source and open standards because open technologies make our customers successful. These open standards accelerate innovation, provide flexibility to customize solutions, and allow the freedom to choose the ideal technology for each customer’s needs.  
redfish

We have a long history of making contributions to the open source community. Our PowerEdge server team has made many code contributions to the Linux kernel, and to Linux driver code.
We are a platinum member of the OpenStack open source cloud effort; leading and contributing on projects like Crowbar (an open source deployment tool), Rex Ray (storage orchestration engine) and Jetpack (OpenStack environment deployment).

The Distributed Management Task Force (DMTF) created the Scalable Platform Management Forum (SPMF) to work on Redfish - the open, industry standard specification and schema for systems management, designed to provide a consistent API that addresses all the components in the data center. Dell EMC is one of the original members and has served as a co-chair since its formation.

What is RedDrum?

OpenBMC

 

Our latest contribution to the open source community is related to our work on Redfish. It is RedDrum, an open source, python-based implementation of a Redfish service, and includes a recipe for backend integration with OpenBMC. RedDrum allows client system management software to use standard Redfish APIs to access the capabilities provided by OpenBMC. RedDrum is derived from the currently shipping Dell EMC DSS 9000 Rack Manager Redfish service and shows our continued leadership and commitment to improve developer and interoperability tools to enable the Redfish eco-system. 


OpenBMC background

OpenBMC is an open software framework for a Baseboard Management Controller (BMC). A BMC is a specialized controller embedded in servers, often in the form of a system-on-chip (SoC), with its own CPU, memory, and storage and IO. A BMC connects to sensors in a system to read and control environmental conditions (i.e., temperature) and provide other system management functions (i.e., power control, monitoring and logging of CPU and memory). 

RedDrum details

Our open source RedDrum contribution includes two important components:

  • A high-fidelity Redfish Service Simulator for developers
  • Integration with a real OpenBMC platform (Power9 server)

Both the simulator implementation and the platform integration implementation are structured with a “front-end” protocol engine and a “back-end” for data gathering/processing. The front-end protocol engine for both is exactly the same, but the back-end capabilities are what distinguish them.


Simulator details

The “high-fidelity” Redfish Service Simulator back-end simulates integration with a physical server. It is high fidelity because it fully implements the Redfish API and is 100% conformant. The simulator has the following features.

  • Passes all DMTF conformance tests
  • Simulates hardware state changes
  • Supports full session service & account service
  • Supports HTTP and HTTPS, with BasicAuth and Redfish SessionAuth

 

There are currently two current simulation targets; a monolithic utilizing a “Base Server Redfish Profile”, and a proof-of-concept, reduced-configuration Dell EMC DSS 9000 rack-level simulation. The simulator can be run on a low-end Linux notebook, or a virtual machine using a Linux image.

OpenBMC platform implementation details

The OpenBMC platform implementation back-end is based on a Power9 server that uses an Aspeed 2500 OpenBMC board controller. It is important to note that RedDrum can be used with any platform that implements OpenBMC. This implementation was chosen strictly for demonstration purposes, but we have also implemented the RedDrum service on x86 based servers running a Nuvoton BMC running OpenBMC firmware.

The Benefit for Developers

OpenBMC enables developers to leverage any firmware development already done in the OpenBMC framework – and just concentrate on new development. This results in accelerated development cycles.
Developers using RedDrum will be able to:

  • Test their client (system management) software for use on an OpenBMC-based system, by using RedDrum with the 100% conformant simulator. The simulator allows them to efficiently test during development cycles – even before they have access to the targeted hardware.
  • Call OpenBMC functions on any OpenBMC-based system using the open standard Redfish system management APIs. This allows developers to avoid having to re-write and retest essentially redundant code for each different platform using OpenBMC.

Other Redfish Services

Nothing precludes other Redfish services being contributed and used within the community - that is the beauty of open source! We have chosen to base our RedDrum service on Python because it offers an ease of implementation that appeals to many developers who may want to leverage this open source code in some way. Of course, depending on the BMC horsepower, flash size, and other factors, different redfish service implementations may be better suited to particular use cases.


How do I get RedDrum?

RedDrum is available on GitHub at org:
https://github.com/RedDrum-Redfish-Project
The code for the RedDrum Simulator:
https://github.com/RedDrum-Redfish-Project/RedDrum-Simulator
The OpenBMC Backend, yocto recipes, and yocto-patch files needed to build a real OpenBMC image with RedDrum-OpenBMC:
https://github.com/RedDrum-Redfish-Project/RedDrum-OpenBMC
The common RedDrum Frontend package used by the simulator and OpenBMC
https://github.com/RedDrum-Redfish-Project/RedDrum-Frontend
Setup instructions and configuratione4s scripts for the httpd (e.g., Apache) used by the Simulator and OpenBMC:
https://github.com/RedDrum-Redfish-Project/RedDrum-Httpd-Configs