Redfish on OpenBMC
yupalani at microsoft.com
Wed Feb 7 14:48:41 AEDT 2018
Here are some more requirements based on our experience with Redfish:
Web Server and Framework should be able to serve multiple GET requests at a time.
POST/PATCH/PUT/DELETE requests can be sequential.
Service should be time deterministic, both boot time and run time.
Concurrency shall not impact deterministic property of the service.
All requests shall be responded (success/failure) within acceptable time limits.
Where some requests cannot be completed within time limits,
service shall respond with status and expected time to complete.
3. Cached Data
Data shall be cached by Redfish service and updated on dbus signals.
Collecting required information on demand adversely impacts performance.
Redfish should rather cache the information and keep updating its cache
on notification from dbus that the property(ies) of interest has been modified.
4. Platform dependent/independent layer
Shall provide a clear isolation between core vs platform properties.
Can consider object oriented approach for platform & oem layer
to override core methods and objects. Customized hooks and handlers
can be provided by platform layer while the data model
between layers is maintained consistent across platforms.
5. DMTF Support
Redfish have quite a lot of gaps in some of the basic requirements of a BMC.
a) FRU & FRU Collection Schema
b) Sensor & Sensor Collection Schema
c) Component Firmware Update (PSU, BIOS, CPLD, etc)
d) Master Write-Read
e) Clear PSU Faults
We need DMTF to actively add/update Redfish schemas that are fundamental to any BMC.
7. Error Codes
Redfish LogEntry schema doesn’t offer a placeholder for error codes
that automation tools can read to categorize the events and trigger actuators.
One option is to repurpose OEM field.
Event logs can get too big and paginated view is helpful
Query parameter to filter the response limited to certain criteria
Schemas like Chassis and Manager have a bunch of properties
that not all requests might be interested in.
It is better to be able to request just a fragment of a resource using ‘#’.
11. Rate Limiting
Server shall return HTTP 429 when number of requests cross max limit permissible from a client.
We need some protection against Denial of Service.
More information about the openbmc