Redfish on OpenBMC

Yugi Mani yupalani at microsoft.com
Wed Feb 7 14:48:41 AEDT 2018


Here are some more requirements based on our experience with Redfish:
1. Concurrency
Web Server and Framework should be able to serve multiple GET requests at a time. 
POST/PATCH/PUT/DELETE requests can be sequential. 

2. Deterministic
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. 

8. Pagination
Event logs can get too big and paginated view is helpful

9. Filtering
Query parameter to filter the response limited to certain criteria

10. Anchors
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.

-Yugi


More information about the openbmc mailing list