Phase 03 — Management Protocols: Redfish, IPMI, SNMP

Difficulty: ⭐⭐⭐☆☆ | Estimated Time: 2 weeks Roles supported: Rack Management SWE (Senior/Staff), Firmware/Platform SWE, DCIM Engineer Hardware needed: none — labs run a Redfish mock and protocol simulators in-process


Why This Phase Exists

This is the phase the JD is most explicit about. It names the protocols directly: "Interface with rack hardware (BMC, PDU, CDU, PCIe switches) using Redfish, SNMP, and IPMI protocols" and requires "Experience with Redfish APIs and DCIM tools." These three protocols are the language your software speaks to every managed device on the out-of-band network (Phase 01, Ch. 3/6). Without them, you cannot read a temperature, power-cycle a node, or learn that a PSU failed.

You must know all three, and — critically — when each applies and why the industry is migrating from IPMI/SNMP to Redfish. Redfish is the modern, structured, secure standard (RESTful, JSON, schema-defined, HTTPS); IPMI is the legacy binary out-of-band standard (deprecated by Intel in 2019 but everywhere in deployed fleets); SNMP is the venerable polling/trap protocol still ubiquitous on PDUs, switches, and older gear. A senior rack engineer writes a Redfish-first abstraction that also speaks IPMI and SNMP for the hardware that needs them.

By the end you will have written a real Redfish client that navigates the data model, performs actions, and subscribes to events against a live (mock) Redfish service, plus an IPMI sensor/SEL reader and an SNMP poller/trap receiver — the exact toolkit a rack manager is built from.


Concepts

Redfish (the modern standard — the one to know cold)

  • The DMTF Redfish model: RESTful, JSON, HTTPS, schema-defined, HATEOAS (hypermedia/links)
  • The resource tree: ServiceRoot (/redfish/v1) → Systems, Chassis, Managers, UpdateService, EventService, SessionService, TaskService
  • ComputerSystem (the host), Chassis (the physical box + Power/Thermal sub-resources), Manager (the BMC itself)
  • Actions (@Redfish.Actions): ComputerSystem.Reset, power control, etc. (POST)
  • Collections, @odata annotations, Members, navigation links, $expand
  • Authentication: HTTP Basic vs Session (X-Auth-Token) vs the SessionService
  • Events: subscriptions (push, EventDestination) vs SSE (Server-Sent Events) vs polling
  • Tasks: long-running operations (TaskService, Task monitors) — firmware updates return a Task
  • Telemetry model: MetricReport, MetricDefinition (the structured-telemetry future)
  • Redfish for PDUs/CDUs: the DMTF Power/Thermal equipment schemas; OutletGroup, Outlet, CoolingLoop

IPMI (the legacy out-of-band standard — still everywhere)

  • The architecture: BMC, IPMB, ipmitool, IPMI-over-LAN (RMCP+), the LAN session
  • Sensors and the SDR (Sensor Data Repository); sensor types, thresholds, readings
  • The SEL (System Event Log); decoding event records
  • Chassis control (power on/off/cycle), boot device selection, SoL (Serial-over-LAN)
  • Why IPMI is deprecated (security history, cleartext, complexity) and why it persists

SNMP (polling + traps — PDUs, switches, environmental gear)

  • The model: manager/agent, MIB, OID tree, GET/GETNEXT/GETBULK/WALK, traps/informs
  • MIBs and OIDs: the dotted-number namespace, enterprise OIDs, standard MIBs (ENTITY, ENTITY-SENSOR, host-resources)
  • SNMP versions: v1/v2c (community strings, cleartext) vs v3 (auth/priv — the secure one)
  • Traps vs polling; the trap receiver; why you need both
  • Mapping SNMP/IPMI/Redfish into one unified model (foreshadows the Phase 07 exporter)

Cross-cutting (the senior framing)

  • Redfish-first with IPMI/SNMP fallback; the driver-abstraction pattern (a Transport/Driver seam)
  • Protocol security: HTTPS/cert validation, SNMPv3, never IPMI/SNMPv2 on an untrusted net
  • Idempotency, retries, and rate-limiting against fragile BMCs (Phase 02 patterns applied)
  • Vendor variance: OEM extensions, schema gaps, the "every BMC is subtly different" reality

Labs

Lab 01 — Redfish Client Against a Live Mock

FieldValue
GoalBuild a Redfish client that navigates the resource tree, reads Power/Thermal, performs a ComputerSystem.Reset action, and creates an event subscription — against a real in-process Redfish HTTP mock.
ConceptsServiceRoot navigation, collections/Members, @odata links, Power/Thermal sub-resources, Actions (POST), Session auth, EventService subscriptions, Tasks.
Steps1) python3 solution.py — it starts a Redfish mock and walks it. 2) Read the client: how it follows links from /redfish/v1 to a System's Power/Thermal. 3) See the Reset action change power state. 4) Extensions below.
StackPython 3 stdlib (http.server, urllib) — no network, no deps
OutputA working Redfish client + a printed walk of Systems/Chassis/Power/Thermal and a successful Reset.
How to TestBuilt-in asserts verify navigation, the action's effect on power state, and subscription creation.
Talking PointsWhy Redfish beats IPMI; HATEOAS/link-following vs hardcoded URLs; Session vs Basic auth; why firmware updates return a Task.
Resume Bullet"Built a Redfish client that navigates the DMTF resource model (Systems/Chassis/Power/Thermal), executes Reset actions, and manages EventService subscriptions; tested against an in-process Redfish mock."
ExtensionsAdd $expand handling; poll a Task to completion; add Session-token auth + cert validation; run it against the real DMTF Redfish-Mockup-Server or OpenBMC sushy-emulator.

Lab 02 — SNMP Poller/Trap Receiver + IPMI Sensors

FieldValue
GoalModel and parse the two legacy protocols: walk an SNMP OID tree and decode sensor values, receive/decode a trap, and read IPMI SDR sensors + SEL events — then map all three into one unified reading.
ConceptsOID tree & WALK, MIB semantics, SNMP versions, traps vs polling, IPMI SDR/sensor thresholds, SEL decoding, unifying heterogeneous telemetry.
Steps1) python3 solution.py. 2) Read the SNMP OID-tree walk and the IPMI SDR/SEL decode. 3) See all three protocols normalized into one Reading model. 4) Extensions below.
StackPython 3 stdlib (simulated agents; the README shows real snmpwalk/ipmitool equivalents)
OutputA unified telemetry view derived from simulated SNMP + IPMI sources, with threshold/health classification.
How to TestAsserts verify OID-tree WALK ordering, threshold-crossing detection, SEL decode, and the unified mapping.
Talking PointsSNMPv2c vs v3 security; GETNEXT/WALK lexicographic ordering; IPMI sensor thresholds (lnc/lc/lnr); why you normalize to one model; trap vs poll tradeoffs.
Resume Bullet"Built an SNMP poller/trap decoder and IPMI SDR/SEL reader, normalizing heterogeneous device telemetry into a unified model with threshold-based health classification."
ExtensionsPoint the SNMP code at real snmpsim; wrap real ipmitool sdr/sel output parsing; add SNMPv3 USM concepts; emit the unified readings in Prometheus format (foreshadows Phase 07).

Deliverables Checklist

  • Redfish client navigates ServiceRoot → Systems → Chassis → Power/Thermal by following links
  • Client performs a ComputerSystem.Reset action and observes the state change
  • Client creates an EventService subscription (and you can explain push vs SSE vs poll)
  • You can explain why a firmware update returns a Task and how you'd monitor it
  • You can decode an IPMI sensor threshold reading and a SEL event
  • You can perform an SNMP WALK conceptually and explain GETNEXT lexicographic ordering
  • You can state SNMPv2c vs v3 and IPMI security caveats and the Redfish-first rationale
  • You normalized all three protocols into one unified reading model

Interview Relevance

  • "What is Redfish and why is the industry moving to it from IPMI?"
  • "Walk me through how you'd discover a server's power state and CPU temperature with Redfish."
  • "How does Redfish authentication work? Basic vs Session tokens?"
  • "A firmware update is a long operation — how does Redfish model that?" (Tasks)
  • "How do you get an event when a PSU fails — poll or push?" (EventService/SSE vs polling)
  • "What's an OID? Walk me through an SNMP GETNEXT/WALK."
  • "Your fleet has new Redfish servers and old IPMI/SNMP gear. How do you build one tool?" (driver abstraction)
  • "Why should you never run SNMPv2c or IPMI on the tenant network?"