Facebook has enhanced its open source software that handles certain hardware management functions so that it can support one of numerous Facebook server designs. Until recently, the company was only using the software to manage its own switch hardware.
The software is called OpenBMC, which is Facebook’s open source version of Baseboard Management Controller software used for managing hardware temperature, energy usage and other functions. Facebook engineers found BMC software that came with hardware its vendors supplied to be “too closed” for its purposes, so they developed their own.
Originally developed for Facebook’s data center switches, OpenBMC now also supports the company’s modular System-on-Chip-based server system called Yosemite, which it announced in March and proposed as a contribution to its open source hardware design community called the Open Compute Project. Yosemite is a chassis that accepts four Intel SoCs and allows Facebook to pack up to 192 server nodes into a single rack.
The company’s engineers have added numerous features to OpenBMC in addition to support for Yosemite, Facebook software engineer Sai Dasari wrote in a blog post. But porting it to support the multi-node server took making some major design choices to improve usability and security and to add support for REST APIs and JSON objects instead of using raw bytes to exchange information.
Here's a diagram of OpenBMC and Yosemite in context, courtesy of Facebook:
A BMC is actually a piece of hardware, also an SoC, with its own CPU, memory, storage, and IO. It takes temperature and adjusts server fan speed accordingly, does remote power control, and error logging for the main server CPU and memory, among other things.
The software that runs the BMC SoC is made by hardware vendors and usually closed, as another Facebook engineer wrote in an earlier blog post. The life of each release of the software would be as long as the life of the hardware. In other words, once a vendor moved on to the next generation of hardware, they also stopped development work on the current version of BMC software.
“When hardware development ended, the BMC software development stopped as well,” Tian Fang, a Facebook software engineer, wrote. “Further bug fixes or new features had to wait for the hardware manufacturer.”
As many things at Facebook do, its own BMC born out of necessity. The company wanted its own top-of-rack switch, and the development process involved lots of specific BMC requirements. This slowed down the development process because its hardware partners couldn’t be responsive enough in changing their BMC software.
After eight months of development, OpenBMC was born and deployed in production with Facebook’s Wedge switches. Facebook open sourced the software in March and said its Six Pack switches would soon be using it too. Its capabilities have now been extended to Facebook server management too.