Skip to content

Conversation

yuazhe
Copy link

@yuazhe yuazhe commented Aug 18, 2025

No description provided.

@mssonicbld
Copy link
Collaborator

/azp run

Copy link

No pipelines are associated with this pull request.

@mssonicbld
Copy link
Collaborator

/azp run

Copy link

No pipelines are associated with this pull request.

@mssonicbld
Copy link
Collaborator

/azp run

Copy link

No pipelines are associated with this pull request.

@mssonicbld
Copy link
Collaborator

/azp run

Copy link

No pipelines are associated with this pull request.

@mssonicbld
Copy link
Collaborator

/azp run

Copy link

No pipelines are associated with this pull request.

@mssonicbld
Copy link
Collaborator

/azp run

Copy link

No pipelines are associated with this pull request.

@mssonicbld
Copy link
Collaborator

/azp run

Copy link

No pipelines are associated with this pull request.

Board Management Controller (BMC) is a specialized microcontroller embedded on a motherboard. It manages the interface between system management software and hardware. BMC provides out-of-band management capabilities, allowing administrators to monitor and manage hardware remotely.
OpenBMC is an open-source project that provides a Linux-based firmware stack for Board Management Controllers (BMCs). It implements the Redfish standard, allowing for standardized and secure remote management of server hardware. In essence, OpenBMC serves as the software that runs on BMC hardware, utilizing the Redfish API to facilitate efficient hardware management.
Redfish is a standard for managing and interacting with hardware in a datacenter, designed to be simple, secure, and scalable. It works with BMC to provide a RESTful API for remote management of servers. Together, Redfish and BMC enable efficient and standardized hardware management.
In summary, NOS will deal with BMC through the redfish RESTful API.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By "NOS will deal with BMC", did you mean NOS managing the below responsibilities?

  • maintenance via FPD upgrades.
  • debug BMC via showtech.
  • BMC info access via APIs/CLIs.

Mainly asking in the context of ensuring the use cases being addressed in this doc.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for 1, the upgrade of bmc is controlled by nos, but whether it will through FPD is arguable.
for 2,3 yes.

The implementation is straightforward: SONiC will incorporate a Redfish client as the underlying infrastructure to support the BMC action. This Redfish client object is implemented and initialized at runtime by SONiC itself.
![general flow](https://github.com/sonic-net/SONiC/blob/30d7b3524e1e1f25abb4679f7ffa777eabe9f499/images/bmc/bmc_overall_flow.png)

## 3. BMC ip address initialization
Copy link

@gbala88 gbala88 Sep 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume this section is setting an interface on the host (running the NOS) with static information based on configuration in a json file. This interface will then be used to communicate with the BMC.

If above is the case, do we assume the BMC stack provided by the vendor will be responsible for setting the corresponding interface to communicate with the host/NOS?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

correct, and yes the vendor is responsible for setting the interface between bmc/nos


## 3. BMC firmware upgrade flow

It requires a new ComponenetBMC object to be added to the component.py
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • OpenBMC has a Uboot and FIT partition. Do we assume the firmware upgrade workflow for BMC is the entire flash and not individual components?
  • Do we also need to support NOS abstraction (CLI/API) for upgrading the Alternate BMC Flash in case of Dual Flash scenarios?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for 1, yes, I'm talking about an entire flash
for 2, I'm not sure about the question, you mean we have 2 bmc image and want to choose between them?

Copy link

@gbala88 gbala88 Sep 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By (2) I meant, in certain cases, the hardware running OpenBMC comes with support for dual flash (Primary and Golden/Alternate) which are both programmed with OpenBMC images. The image from alternate flash boots when the Primary gets corrupted or unable to boot an image.

Most boards (Including eval boards like ast2600) that run OpenBMC support dual flash configurations as a standard. But this will be BMC hardware/vendor specific.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

at this stage I suggest to not include this functionality to keep the simplicity


## 2. BMC flows in SONiC
The implementation is straightforward: SONiC will incorporate a Redfish client as the underlying infrastructure to support the BMC action. This Redfish client object is implemented and initialized at runtime by SONiC itself.
![general flow](https://github.com/sonic-net/SONiC/blob/30d7b3524e1e1f25abb4679f7ffa777eabe9f499/images/bmc/bmc_overall_flow.png)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a recommendation for the kind of authentication that will be used by the redfish client from the NOS to use the RESTFUL APIs? I'm assuming vendors will move away from default username and passwords for OpenBMC.

Please ignore this comment if its outside the scope of this document.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Redfish provides HTTP basic authentication using the Authorization header in an HTTPS request, in my opinion, the way of generating the password to replace the default one is vendor specific

Signed-off-by: Yuanzhe, Liu <[email protected]>
@mssonicbld
Copy link
Collaborator

/azp run

Copy link

No pipelines are associated with this pull request.

@yuazhe yuazhe requested review from Junchao-Mellanox and gbala88 and removed request for gbala88 September 25, 2025 10:09

After community review, there are two improvements that will be made in the 202605 branch:

1. The Redfish client will be added to the platform common API, providing support for these APIs, and it will be easier to extend for vendor-specific use.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we need to have this as a common library not a vendor specific library.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 🔖 HLD Ready for Review

Development

Successfully merging this pull request may close these issues.

6 participants