1802ab0f0SJoseph Reynolds# OpenBMC interfaces 2802ab0f0SJoseph Reynolds 3f4febd00SPatrick WilliamsPurpose: This introduces a simplified view of the BMC's primary interfaces. It 4f4febd00SPatrick Williamsis intended to provide a reference suitable for a wide audience: 5f4febd00SPatrick Williams 6f4febd00SPatrick Williams- Engineers provide domain expertise in specific areas and learn about use cases 7f4febd00SPatrick Williams and threats their interfaces poses. 8f4febd00SPatrick Williams- Give BMC administrators and system integrators a simplified view of the BMC's 9f4febd00SPatrick Williams system interfaces. For example, to understand which interfaces can be 10f4febd00SPatrick Williams disabled. 11802ab0f0SJoseph Reynolds- Management and security folks need everything to work and play together 12802ab0f0SJoseph Reynolds nicely. For example, to understand the BMC's attack surfaces. 13802ab0f0SJoseph Reynolds 14802ab0f0SJoseph Reynolds## Introduction to the interfaces and services 15802ab0f0SJoseph Reynolds 16802ab0f0SJoseph ReynoldsThis section shows the BMC's primary interfaces and how they are related. It 17f4febd00SPatrick Williamsbegins with the BMC's physical interfaces and moves toward abstractions such as 18f4febd00SPatrick Williamsnetwork services. The intent is to show the interfaces essential to the OpenBMC 19f4febd00SPatrick Williamsproject in a framework to reason about which interfaces are present, how they 20f4febd00SPatrick Williamsare related. This provides a foundation to reason about which can be disabled, 21f4febd00SPatrick Williamshow they are secured, etc. The appendix provides details about each interface 22f4febd00SPatrick Williamsand service shown. 23802ab0f0SJoseph Reynolds 24f4febd00SPatrick WilliamsOpenBMC's services and the interfaces they provide are controlled by `systemd`. 25f4febd00SPatrick WilliamsThis document references OpenBMC `systemd` unit names to help link concepts to 26*85706020SAndrew Geisslerthe source code. The reader is assumed to be familiar with [systemd 27*85706020SAndrew Geisslerconcepts][]. The templated units ("unit@.service") may be omitted for clarity. Relevant 28*85706020SAndrew Geisslerdetails from the unit file may be shown, such as the program which implements a service. 29802ab0f0SJoseph Reynolds 30f4febd00SPatrick WilliamsThe OpenBMC [Service Management][] interface can control `systemd` services. For 31*85706020SAndrew Geisslerexample, disabling a BMC service will disable the corresponding external interface. 32802ab0f0SJoseph Reynolds 33f4febd00SPatrick Williams[systemd concepts]: 34f4febd00SPatrick Williams https://www.freedesktop.org/software/systemd/man/systemd.html#Concepts 35f4febd00SPatrick Williams[service management]: 36f4febd00SPatrick Williams https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Control/Service/README.md 37802ab0f0SJoseph Reynolds 38802ab0f0SJoseph ReynoldsDiagrams are included to help visualize relationships. The diagrams show 39f4febd00SPatrick Williamsmanagement agents on the left side, the BMC in the center, and host elements on 40f4febd00SPatrick Williamsthe right side. The diagrams are simplified and are not intended to be complete. 41802ab0f0SJoseph Reynolds 42802ab0f0SJoseph Reynolds### Physical interfaces 43802ab0f0SJoseph Reynolds 44802ab0f0SJoseph ReynoldsThis shows the BMC's physical connections including network, USB, UART serial, 45802ab0f0SJoseph Reynoldsand connections to its host platform. This uses a simplified view of the host 46f4febd00SPatrick Williamswhich shows only the host interfaces that connect directly to the BMC. A typical 47f4febd00SPatrick Williamshost would have additional connections for console, network, etc. 48802ab0f0SJoseph Reynolds 49f4febd00SPatrick WilliamsInterfaces between the BMC and its host platform vary considerably based on BMC 50f4febd00SPatrick Williamsand host platform implementation. The information presented in this section and 51f4febd00SPatrick Williamsits subsections is intended to illustrate common elements, not to represent any 52f4febd00SPatrick Williamsparticular system. This section is intended to be referenced by additional 53f4febd00SPatrick Williamsdocumentation which gives details for specific BMC and host implementations. 54802ab0f0SJoseph Reynolds 55802ab0f0SJoseph Reynolds``` 56802ab0f0SJoseph Reynolds +----------------+ +----------------+ 57802ab0f0SJoseph Reynolds | BMC | | Host | 58802ab0f0SJoseph Reynolds | | | | 59802ab0f0SJoseph Reynolds | Network -+- LPC ---+- | 60802ab0f0SJoseph Reynolds -+- eth0 -+--PCIe --+- | 61802ab0f0SJoseph Reynolds -+- eth1 -+--UART --+- | 62802ab0f0SJoseph Reynolds | lo -+- I2C ---+- | 63802ab0f0SJoseph Reynolds | -+--I3C ---+- | 64802ab0f0SJoseph Reynolds | USB -+- SPI ---+- | 65802ab0f0SJoseph Reynolds -+- usb0 -+- PECI --+- | 66802ab0f0SJoseph Reynolds | -+- GPIOs -+- | 67802ab0f0SJoseph Reynolds | Serial -+- UTMI --+- | 68802ab0f0SJoseph Reynolds -+- tty0 | | | 69802ab0f0SJoseph Reynolds | | | | 70802ab0f0SJoseph Reynolds +----------------+ +----------------+ 71802ab0f0SJoseph Reynolds``` 72802ab0f0SJoseph Reynolds 73802ab0f0SJoseph Reynolds#### Host-BMC physical interface transport protocols 74802ab0f0SJoseph Reynolds 75802ab0f0SJoseph ReynoldsThis lists protocols that operate over the BMC-host physical interfaces: 76f4febd00SPatrick Williams 77802ab0f0SJoseph Reynolds- Host IPMI. 78802ab0f0SJoseph Reynolds- [MCTP][]. OpenBMC offers MCTP over LPC, PCIe, UART. 79802ab0f0SJoseph Reynolds- Custom OEM solution. 8036643e62SJoseph Reynolds- SMBus. 81802ab0f0SJoseph Reynolds 82f4febd00SPatrick Williams[mctp]: 83f4febd00SPatrick Williams https://www.dmtf.org/sites/default/files/standards/documents/DSP0236_1.3.0.pdf 84802ab0f0SJoseph Reynolds 85802ab0f0SJoseph Reynolds#### Host-BMC data models 86802ab0f0SJoseph Reynolds 87802ab0f0SJoseph ReynoldsThis lists specifications for the data which flows over the BMC-host transport 88802ab0f0SJoseph Reynoldsprotocols: 89f4febd00SPatrick Williams 90802ab0f0SJoseph Reynolds- Host IPMI. 91802ab0f0SJoseph Reynolds- PLDM (DMTF document DSP0240). 92802ab0f0SJoseph Reynolds- Custom OEM solution. 93802ab0f0SJoseph Reynolds 94802ab0f0SJoseph Reynolds### Network services provided 95802ab0f0SJoseph Reynolds 96f4febd00SPatrick WilliamsOpenBMC provides services via its management network. The default services are 97f4febd00SPatrick Williamslisted here by port number. More information about each service is given in 98f4febd00SPatrick Williamssections below or in the appendix. 99802ab0f0SJoseph Reynolds 100802ab0f0SJoseph Reynolds``` 101802ab0f0SJoseph Reynolds +----------------------------------+ 102802ab0f0SJoseph Reynolds | BMC | 103802ab0f0SJoseph Reynolds | | 104802ab0f0SJoseph Reynolds -+-+ Network services | 105802ab0f0SJoseph Reynolds | | | 106802ab0f0SJoseph Reynolds | +-+ TCP ports | 107802ab0f0SJoseph Reynolds | | +- 22 ssh - shell | 108802ab0f0SJoseph Reynolds | | +- 80 HTTP (no connection) | 109802ab0f0SJoseph Reynolds | | +- 443 HTTPS | 110802ab0f0SJoseph Reynolds | | +- 2200 ssh - host console | 111802ab0f0SJoseph Reynolds | | +- 5355 mDNS service discovery | 112802ab0f0SJoseph Reynolds | | | 113802ab0f0SJoseph Reynolds | +-+ UDP ports | 114802ab0f0SJoseph Reynolds | +- 427 SLP | 11536643e62SJoseph Reynolds | +- 623 RMCP+ IPMI | 116802ab0f0SJoseph Reynolds | +- 5355 mDNS service discovery | 117802ab0f0SJoseph Reynolds | | 118802ab0f0SJoseph Reynolds +----------------------------------+ 119802ab0f0SJoseph Reynolds``` 120802ab0f0SJoseph Reynolds 121802ab0f0SJoseph ReynoldsServices provided to connected clients may use ports for: 122f4febd00SPatrick Williams 123802ab0f0SJoseph Reynolds- Active SSH sessions. 124802ab0f0SJoseph Reynolds- Active KVM-IP sessions. 125802ab0f0SJoseph Reynolds- Active virtual media sessions. 126802ab0f0SJoseph Reynolds 127802ab0f0SJoseph Reynolds### Network services consumed 128802ab0f0SJoseph Reynolds 129802ab0f0SJoseph ReynoldsThis section lists network services used by OpenBMC systems. OpenBMC uses the 130802ab0f0SJoseph Reynoldstypical services in the usual way, such as NTP, DNS, and DHCP. In addition, 131802ab0f0SJoseph ReynoldsOpenBMC uses: 132f4febd00SPatrick Williams 133f4febd00SPatrick Williams- TFTP (disabled by default, when invoked by BMC operator) - Trivial FTP client 134f4febd00SPatrick Williams to fetch firmware images for [code update][]. 135802ab0f0SJoseph Reynolds- SNMP manager to catch [SNMP traps][] (when enabled). 136802ab0f0SJoseph Reynolds 137f4febd00SPatrick Williams[code update]: 138f4febd00SPatrick Williams https://github.com/openbmc/docs/blob/master/code-update/code-update.md 139f4febd00SPatrick Williams[snmp traps]: 140f4febd00SPatrick Williams https://github.com/openbmc/phosphor-snmp/blob/master/docs/snmp-configuration.md 141802ab0f0SJoseph Reynolds 142802ab0f0SJoseph Reynolds### Host console 143802ab0f0SJoseph Reynolds 144802ab0f0SJoseph ReynoldsOpenBMC provides access to its host's serial console in various ways: 145f4febd00SPatrick Williams 146802ab0f0SJoseph Reynolds- Client access via network IPMI. 147802ab0f0SJoseph Reynolds- Client access via ssh port 2200. 148802ab0f0SJoseph Reynolds- The hostlogger facility. 149802ab0f0SJoseph Reynolds 150802ab0f0SJoseph Reynolds``` 151802ab0f0SJoseph Reynolds +---------------------------+ +-----------------+ 152802ab0f0SJoseph Reynolds | BMC | | Host | 153802ab0f0SJoseph Reynolds ipmitool sol | | | | 154802ab0f0SJoseph Reynolds activate | | | | 155802ab0f0SJoseph Reynolds UDP port 623 .... netipmid ------------} | | | 156802ab0f0SJoseph Reynolds | } | | | 157802ab0f0SJoseph Reynolds ssh -p 2200 ... obmc-console-client -}---+----+- serial UART | 158802ab0f0SJoseph Reynolds TCP port 2200 | } | | console | 159802ab0f0SJoseph Reynolds | hostlogger ----------} | | | 160802ab0f0SJoseph Reynolds | | | | 161802ab0f0SJoseph Reynolds +---------------------------+ +-----------------+ 162802ab0f0SJoseph Reynolds``` 163802ab0f0SJoseph Reynolds 164802ab0f0SJoseph ReynoldsThe [obmc-console][] details how the host UART connection is abstracted within 165802ab0f0SJoseph Reynoldsthe BMC as a Unix domain socket. 166802ab0f0SJoseph Reynolds 167802ab0f0SJoseph Reynolds[obmc-console]: https://github.com/openbmc/obmc-console/blob/master/README.md 168802ab0f0SJoseph Reynolds 169802ab0f0SJoseph Reynolds### Web services 170802ab0f0SJoseph Reynolds 171802ab0f0SJoseph ReynoldsOpenBMC provides a custom HTTP/Web server called BMCWeb. 172802ab0f0SJoseph Reynolds 173802ab0f0SJoseph Reynolds``` 174802ab0f0SJoseph Reynolds +--------------------------------------------------+ 175802ab0f0SJoseph Reynolds | BMC | 176802ab0f0SJoseph Reynolds | | 177802ab0f0SJoseph Reynolds -+-+ Network services | 178802ab0f0SJoseph Reynolds | ++ TCP | 179802ab0f0SJoseph Reynolds | +- 443 HTTPS - BMCWeb -> { static content | 180802ab0f0SJoseph Reynolds | | { Web app (webui) | 181802ab0f0SJoseph Reynolds | +- (other ports) <---+ { Redfish schema | 182802ab0f0SJoseph Reynolds | | | { /login | 183802ab0f0SJoseph Reynolds | V | { Redfish REST APIs | 184802ab0f0SJoseph Reynolds -+- Websockets -+ | { Phosphor REST APIs | 185802ab0f0SJoseph Reynolds | | +<--{-- can set up: | 186802ab0f0SJoseph Reynolds | | { KVM-IP, USB-IP, | 187802ab0f0SJoseph Reynolds | various { Virtual Media | 188802ab0f0SJoseph Reynolds | | 189802ab0f0SJoseph Reynolds +--------------------------------------------------+ 190802ab0f0SJoseph Reynolds``` 191802ab0f0SJoseph Reynolds 192802ab0f0SJoseph ReynoldsIn the diagram, the arrowheads represent the flow of control from web agents to 193f4febd00SPatrick WilliamsBMCWeb APIs, some of which set up Websockets which give the network agent direct 194f4febd00SPatrick Williamscommunication with the desired interface (not via BMCWeb). 195802ab0f0SJoseph Reynolds 196f4febd00SPatrick WilliamsNote that [BMCWeb is configurable][] at compile time. This section describes the 197f4febd00SPatrick Williamsdefault configuration (which serves the HTTP application protocol over the HTTPS 198f4febd00SPatrick Williamstransport protocol on TCP port 443). 199802ab0f0SJoseph Reynolds 200f4febd00SPatrick Williams[bmcweb is configurable]: https://github.com/openbmc/bmcweb#configuration 201802ab0f0SJoseph Reynolds 202802ab0f0SJoseph ReynoldsServices provided: 203f4febd00SPatrick Williams 20461475153SGunnar Mills- Web application (webui-vue) and other static content 205802ab0f0SJoseph Reynolds- REST APIs including custom phosphor-rest and Redfish APIs 206802ab0f0SJoseph Reynolds- KVM-IP (Keyboard, Video, Mouse over IP) 207802ab0f0SJoseph Reynolds- Virtual media via USB-IP (Universal Serial Bus over IP) 208802ab0f0SJoseph Reynolds- others 209802ab0f0SJoseph Reynolds 210802ab0f0SJoseph Reynolds### Host IPMI services 211802ab0f0SJoseph Reynolds 212802ab0f0SJoseph ReynoldsOpenBMC provides a host IPMI service. 213802ab0f0SJoseph Reynolds 214802ab0f0SJoseph Reynolds``` 215802ab0f0SJoseph Reynolds +---------------+ +-----------------+ 216802ab0f0SJoseph Reynolds | BMC | | Host | 217802ab0f0SJoseph Reynolds | | | | 218802ab0f0SJoseph Reynolds | ipmid -+----+- | 219802ab0f0SJoseph Reynolds | | | | 220802ab0f0SJoseph Reynolds +---------------+ +-----------------+ 221802ab0f0SJoseph Reynolds``` 222802ab0f0SJoseph Reynolds 223802ab0f0SJoseph ReynoldsThe IPMI firmware firewall (which aims to control which host commands and 224802ab0f0SJoseph Reynoldschannels can be used) is not implemented in OpenBMC. There is support for a 225802ab0f0SJoseph Reynolds[Phosphor host IPMI whitelist][] scheme. 226802ab0f0SJoseph Reynolds 227f4febd00SPatrick Williams[phosphor host ipmi whitelist]: 228f4febd00SPatrick Williams https://github.com/openbmc/openbmc/blob/master/meta-phosphor/classes/phosphor-ipmi-host-whitelist.bbclass 229802ab0f0SJoseph Reynolds 230802ab0f0SJoseph Reynolds### D-Bus interfaces 231802ab0f0SJoseph Reynolds 232802ab0f0SJoseph ReynoldsOpenBMC uses D-Bus interfaces as the primary way to communicate (inter-process 233f4febd00SPatrick Williamscommunication) between OpenBMC applications. Note that other methods are used, 234f4febd00SPatrick Williamsfor example Unix domain sockets. 235802ab0f0SJoseph Reynolds 236802ab0f0SJoseph Reynolds``` 237802ab0f0SJoseph Reynolds +--------------------------------------------------+ 238802ab0f0SJoseph Reynolds | BMC | 239802ab0f0SJoseph Reynolds | | 240802ab0f0SJoseph Reynolds | +-------+ | 241802ab0f0SJoseph Reynolds | | D-Bus | | 242802ab0f0SJoseph Reynolds | | -+- bmcweb | 243802ab0f0SJoseph Reynolds | | -+- ipmid | 244802ab0f0SJoseph Reynolds | | -+- ... | 245802ab0f0SJoseph Reynolds | | -+- many more (not shown here) | 246802ab0f0SJoseph Reynolds | | -+- ... | 247802ab0f0SJoseph Reynolds | | | | 248802ab0f0SJoseph Reynolds | +-------+ | 249802ab0f0SJoseph Reynolds | | 250802ab0f0SJoseph Reynolds +--------------------------------------------------+ 251802ab0f0SJoseph Reynolds``` 252802ab0f0SJoseph Reynolds 253*85706020SAndrew GeisslerTo learn more, read the [Phosphor D-Bus interface docs][] and search for README files 254*85706020SAndrew Geisslerin various subdirectories under the xyz/openbmc_project path. 255802ab0f0SJoseph Reynolds 256f4febd00SPatrick Williams[phosphor d-bus interface docs]: 257f4febd00SPatrick Williams https://github.com/openbmc/phosphor-dbus-interfaces 258802ab0f0SJoseph Reynolds 259802ab0f0SJoseph Reynolds## Interfaces and services 260802ab0f0SJoseph Reynolds 261f4febd00SPatrick WilliamsThis section lists each interface and service shown in this document. The intent 262f4febd00SPatrick Williamsis to give the relevance of each item and how to locate details in the source 263f4febd00SPatrick Williamscode. 264802ab0f0SJoseph Reynolds 265802ab0f0SJoseph Reynolds### BMC network 266802ab0f0SJoseph Reynolds 267802ab0f0SJoseph ReynoldsThis sections shows variations in the operational environment of the BMC's 268802ab0f0SJoseph Reynoldsmanagement network. 269802ab0f0SJoseph Reynolds 270f4febd00SPatrick WilliamsThe BMC may be connected to a network used to manage the BMC. This is dubbed the 271f4febd00SPatrick Williams"management network" to distinguish it from the payload network the host system 272f4febd00SPatrick Williamsis connected to. These are typically separate networks. 273f4febd00SPatrick Williams 274802ab0f0SJoseph Reynolds``` 275802ab0f0SJoseph Reynolds +-----------+ +----------------+ 276802ab0f0SJoseph Reynolds | BMC | | Host | 277802ab0f0SJoseph Reynoldsmanagement | | | | 278802ab0f0SJoseph Reynoldsnetwork ---+- Network | | Network -+- payload 279802ab0f0SJoseph Reynolds | | | | network 280802ab0f0SJoseph Reynolds +-----------+ +----------------+ 281802ab0f0SJoseph Reynolds``` 282802ab0f0SJoseph Reynolds 283802ab0f0SJoseph ReynoldsThe BMC may be served by a Network Controller Sideband Interface (NC-SI) which 284802ab0f0SJoseph Reynoldsmaintains a logically separate network from the host, as shown in this diagram: 285f4febd00SPatrick Williams 286802ab0f0SJoseph Reynolds``` 287802ab0f0SJoseph Reynolds +-----------+ +----------------+ 288802ab0f0SJoseph Reynolds | BMC | | Host | 289802ab0f0SJoseph Reynoldsmanagement | | | | 290802ab0f0SJoseph Reynoldsnetwork +-+- Network | | Network -+-+ 291802ab0f0SJoseph Reynolds | | | | | | 292802ab0f0SJoseph Reynolds | +-----------+ +----------------+ | 293802ab0f0SJoseph Reynolds | | 294802ab0f0SJoseph Reynolds | +------------------+ | 295802ab0f0SJoseph Reynolds | | NIC | | 296802ab0f0SJoseph Reynolds | |.........+ -+-------------+ 297802ab0f0SJoseph Reynolds +------+- side- : | 298802ab0f0SJoseph Reynoldsmanagement -------+- band : -+- payload 299802ab0f0SJoseph Reynoldsnetwork |.........+ | network 300802ab0f0SJoseph Reynolds +------------------+ 301802ab0f0SJoseph Reynolds``` 302802ab0f0SJoseph Reynolds 303802ab0f0SJoseph ReynoldsThe BMC's management network may be provided by its host system and have no 304802ab0f0SJoseph Reynoldsdirect connection external to the host, as shown in this diagram: 305f4febd00SPatrick Williams 306802ab0f0SJoseph Reynolds``` 307802ab0f0SJoseph Reynolds +-----------+ +----------------+ 308802ab0f0SJoseph Reynolds | BMC | | Host | 309802ab0f0SJoseph Reynolds | | | | 310802ab0f0SJoseph Reynolds +--+- Network | | Network -+- payload 311802ab0f0SJoseph Reynolds | | | | | network 312802ab0f0SJoseph Reynolds | | | +--+- management | 313802ab0f0SJoseph Reynolds | | | | | network | 314802ab0f0SJoseph Reynolds | +-----------+ | +----------------+ 315802ab0f0SJoseph Reynolds | | 316802ab0f0SJoseph Reynolds +------------------+ 317802ab0f0SJoseph Reynolds``` 318802ab0f0SJoseph Reynolds 319802ab0f0SJoseph ReynoldsThe BMC's management network may be connected to USB (LAN over USB): 320f4febd00SPatrick Williams 321802ab0f0SJoseph Reynolds``` 322802ab0f0SJoseph Reynolds +-----------+ +----------------+ 323802ab0f0SJoseph Reynolds | BMC | | Host | 324802ab0f0SJoseph Reynolds +-+ | | | | 325802ab0f0SJoseph Reynolds USB --+---+- Network | | Network -+- payload 326802ab0f0SJoseph Reynolds +-+ | | | | network 327802ab0f0SJoseph Reynolds | | | | 328802ab0f0SJoseph Reynolds +-----------+ +----------------+ 329802ab0f0SJoseph Reynolds``` 330802ab0f0SJoseph Reynolds 331802ab0f0SJoseph Reynolds### BMC serial 332802ab0f0SJoseph Reynolds 333802ab0f0SJoseph ReynoldsThis gives access to the BMC's console which provides such function as 334802ab0f0SJoseph Reynoldscontrolling the BMC's U-Boot and then providing access to the BMC's shell. 335802ab0f0SJoseph ReynoldsContrast with the host serial console access. 336802ab0f0SJoseph Reynolds 337802ab0f0SJoseph Reynolds### Network interfaces 338802ab0f0SJoseph Reynolds 339802ab0f0SJoseph ReynoldsThis refers to the standard NIC and Linux network services on the BMC. 340802ab0f0SJoseph Reynolds 341802ab0f0SJoseph Reynolds### Secure Shell (SSH) 342802ab0f0SJoseph Reynolds 343802ab0f0SJoseph ReynoldsThis refers to the SSH protocol which provides both secure shell (ssh) and 344802ab0f0SJoseph Reynoldssecure copy (scp) access to the BMC. OpenBMC uses the Dropbear SSH 345802ab0f0SJoseph Reynoldsimplementation. Note that port 22 connects to the BMC's shell, while port 2200 346802ab0f0SJoseph Reynoldsconnects to the host console. 347802ab0f0SJoseph Reynolds 348802ab0f0SJoseph Reynolds### HTTP and HTTPS 349802ab0f0SJoseph Reynolds 350802ab0f0SJoseph ReynoldsOpenBMC supports the HTTP application protocol over HTTPS, both handled by the 351f4febd00SPatrick WilliamsBMCWeb server. The "http" URI scheme is disabled by default but can be enabled 352f4febd00SPatrick Williamsat compile time by BMCWeb configuration options. 353802ab0f0SJoseph Reynolds 354802ab0f0SJoseph Reynolds### Host serial console 355802ab0f0SJoseph Reynolds 356802ab0f0SJoseph ReynoldsRefers to the BMC's access to its host's serial connection which typically 357802ab0f0SJoseph Reynoldsaccesses the host system's console. See also `obmc-console-server` which 358802ab0f0SJoseph Reynoldsprovides host serial access to various internal BMC services. Contrast with 359802ab0f0SJoseph Reynoldsaccess to the BMC's serial connection which provides access to the BMC's 360802ab0f0SJoseph Reynoldsconsole. 361802ab0f0SJoseph Reynolds 362802ab0f0SJoseph Reynolds### Service discovery 363802ab0f0SJoseph Reynolds 364f4febd00SPatrick WilliamsRefers to the multicast discovery service (mDNS). For example, you can find the 365f4febd00SPatrick WilliamsBMC via the `avahi-browse -rt _obmc_rest._tcp` command. 366802ab0f0SJoseph Reynolds 367802ab0f0SJoseph Reynolds### Service Location Protocol (SLP) 368802ab0f0SJoseph Reynolds 369802ab0f0SJoseph ReynoldsRefers to the unicast service discovery protocol provided by `slpd`. For 370f4febd00SPatrick Williamsexample, you can find the BMC via the 371f4febd00SPatrick Williams`slptool -u ${ip} findsrvtypes or findsrvs` command. 372802ab0f0SJoseph Reynolds 37336643e62SJoseph Reynolds### RMCP+, IPMI, and ipmitool 374802ab0f0SJoseph Reynolds 375f4febd00SPatrick WilliamsRefers to the RMCP+ protocol and IPMI implementation provided by `netipmid` with 376f4febd00SPatrick Williamssource here: `https://github.com/openbmc/phosphor-net-ipmid` and some details 377f4febd00SPatrick Williamsprovided by [IPMI Session management][]. Network IPMI provides access to many 378f4febd00SPatrick Williamsresources including host IPMI access, SOL (access to the host console), and 379f4febd00SPatrick Williamsmore. Also known as out of band IPMI. Contrast with host-IPMI which interacts 380f4febd00SPatrick Williamswith the host and with Redfish which provides alternate function. 381802ab0f0SJoseph Reynolds 382f4febd00SPatrick WilliamsThe BMC's RMCP+ IPMI interface is designed to be operated by the `[ipmitool][]` 383f4febd00SPatrick Williamsexternal command. 384802ab0f0SJoseph Reynolds 385f4febd00SPatrick Williams[ipmi session management]: 386f4febd00SPatrick Williams https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Ipmi/SESSION_README.md 387802ab0f0SJoseph Reynolds[ipmitool]: https://github.com/ipmitool/ipmitool 388802ab0f0SJoseph Reynolds 389802ab0f0SJoseph Reynolds### Host IPMI 390802ab0f0SJoseph Reynolds 391802ab0f0SJoseph ReynoldsRefers to the host-facing IPMI service provided by the `ipmid` program with 392802ab0f0SJoseph Reynoldssource here: `https://github.com/openbmc/phosphor-host-ipmid`. The systemd 393f4febd00SPatrick Williamsservice is `phosphor-ipmi-host` implemented by the `ipmid` program. Also known 394f4febd00SPatrick Williamsas in-band IPMI. Contrast with RMCP+ which faces the network and with PLDM which 395f4febd00SPatrick Williamsprovides alternate function. 396802ab0f0SJoseph Reynolds 397802ab0f0SJoseph Reynolds### BMC shell 398802ab0f0SJoseph Reynolds 399802ab0f0SJoseph ReynoldsThis refers to the BMC's command line interface which defaults to the `bash` 400f4febd00SPatrick Williamsprogram provided via the `/bin/sh` path on the BMC's file system. Note that the 401f4febd00SPatrick Williamsshell (together with its utility programs) provides access to many of the BMC's 402f4febd00SPatrick Williamsinternal and external interfaces. 403802ab0f0SJoseph Reynolds 404802ab0f0SJoseph Reynolds### obmc-console 405802ab0f0SJoseph Reynolds 406802ab0f0SJoseph ReynoldsThis refers to support for multiple independent consoles in 407802ab0f0SJoseph Reynoldshttps://github.com/openbmc/obmc-console and two applications: 408f4febd00SPatrick Williams 409802ab0f0SJoseph Reynolds- The `obmc-console-server` abstracts the host console (UART) connection as a 410802ab0f0SJoseph Reynolds Unix domain socket. 411802ab0f0SJoseph Reynolds- The `obmc-console-client` can connect a console to an SSH session. 412802ab0f0SJoseph Reynolds 413802ab0f0SJoseph ReynoldsOther applications use the console server. 414802ab0f0SJoseph Reynolds 415802ab0f0SJoseph Reynolds### hostlogger 416802ab0f0SJoseph Reynolds 417802ab0f0SJoseph ReynoldsRefers to the BMC service provided by the `hostlogger` program here: 418802ab0f0SJoseph Reynoldshttps://github.com/openbmc/phosphor-hostlogger which listens to the 419f4febd00SPatrick Williams`obmc-console-server` and logs host console messages into the BMC's file system. 420802ab0f0SJoseph Reynolds 421802ab0f0SJoseph Reynolds### BMCWeb web server 422802ab0f0SJoseph Reynolds 423802ab0f0SJoseph ReynoldsRefers to the custom HTTP/Web server with source here: 424802ab0f0SJoseph Reynoldshttps://github.com/openbmc/bmcweb Note that BMCWeb is configurable per 425f4febd00SPatrick Williamshttps://github.com/openbmc/bmcweb#configuration with build-time options to 426f4febd00SPatrick Williamscontrol which interfaces it provides. For example, there are configurations 427f4febd00SPatrick Williamsoptions to: 428f4febd00SPatrick Williams 429802ab0f0SJoseph Reynolds- enable downloading firmware images from a TFTP server 430802ab0f0SJoseph Reynolds- enable the "http" URI scheme 431802ab0f0SJoseph Reynolds- others 432802ab0f0SJoseph Reynolds 433802ab0f0SJoseph ReynoldsThe webserver also sets up Secure Websockets for services such as KVM-IP, 434802ab0f0SJoseph ReynoldsVirtual-USB, and more. 435802ab0f0SJoseph Reynolds 436802ab0f0SJoseph Reynolds### Redfish 437802ab0f0SJoseph Reynolds 438802ab0f0SJoseph ReynoldsRefers to the set of Redfish REST APIs served by the BMCWeb web server. See 439f4febd00SPatrick Williamsdetails here: https://github.com/openbmc/bmcweb/blob/master/Redfish.md with docs 440f4febd00SPatrick Williamshere: https://github.com/openbmc/docs/blob/master/REDFISH-cheatsheet.md 441802ab0f0SJoseph Reynolds 442802ab0f0SJoseph Reynolds### phosphor-dbus-rest 443802ab0f0SJoseph Reynolds 444f4febd00SPatrick WilliamsRefers to the legacy REST APIs optionally served by the BMCWeb server. Docs: 445f4febd00SPatrick Williamshttps://github.com/openbmc/docs/blob/master/REST-cheatsheet.md 446802ab0f0SJoseph Reynolds 447802ab0f0SJoseph Reynolds### KVM-IP 448802ab0f0SJoseph Reynolds 449802ab0f0SJoseph ReynoldsRefers to the OpenBMC implementation of the Remote Frame Buffer (RFB, aka VNC) 450802ab0f0SJoseph Reynoldsprotocol which lets you operate the host system's keyboard, video, and mouse 451802ab0f0SJoseph Reynolds(KVM) remotely. See https://github.com/openbmc/obmc-ikvm/blob/master/README.md 452f4febd00SPatrick WilliamsAlso known as IPKvm. Do not confuse with Kernel Virtual Machine (the other KVM). 453802ab0f0SJoseph Reynolds 454802ab0f0SJoseph Reynolds### Virtual media 455802ab0f0SJoseph Reynolds 456802ab0f0SJoseph ReynoldsAlso known as: remote media and USB-over-IP. Design: 457f4febd00SPatrick Williamshttps://github.com/openbmc/docs/blob/master/designs/VirtualMedia.md Contrast 458f4febd00SPatrick Williamswith LAN-over-USB. 459802ab0f0SJoseph Reynolds 460802ab0f0SJoseph Reynolds### Virtual USB 461802ab0f0SJoseph Reynolds 462f4febd00SPatrick WilliamsAlso known as USB-over-IP, and helps implement virtual media. Contrast with the 463f4febd00SPatrick WilliamsBMC and host physical USB ports. 464