firecracker-microvm / firecracker

Secure and fast microVMs for serverless computing.
http://firecracker-microvm.io
Apache License 2.0
26.13k stars 1.81k forks source link

Device-API functionality matrix #1866

Closed bbros-dev closed 4 years ago

bbros-dev commented 4 years ago

Thanks for the effort everyone has put into making Firecracker available.

Context: We are building some firecracker-kernel infrastructure. We (eventually) aim to support any LTS kernel and allow for arbitrary (kernel) variants - currently default and ignite (k8s?), soon to land are tiny and otu (one trusted user), etc.. We have chosen to use [Yocto]() to manage the 'machine'/'board'/'hardware' and kernel configuration, and will work on a firecracker BSP layer. This allows us to layer the "hardware" and kernel configuration use cases in a way that should be reusable. Ideally we'd like to use some artifact name suffix to indicate Firecracker device support ( *-bcknv, *-cnv, etc.) for the devices (b=virtio-block device, etc.).

With that context in mind: It would help us and, we think, others too, if the project could add to the documentation a Device-API functionality matrix showing which devices are required for which API calls. Specifically we find ambiguity around which devices are required - even if not used - for what firecracker functionality.

Examples:

  1. Guest reboot is a graceful way to shutdown. Does this mean we can build the kernel using a BSP configuration layer without any keyboard - and then "only" loose the SendCtlAltDel API?
  2. We can build a static nginx (busyboc, etc. etc.) into the initrd, and not use the rootfs. Does this mean we can build a BSP kernel without a block device and still expect firecracker to run? What API calls do we loose?

What we had in mind:

O (Optional): Device (column) not required for Firecracker functionality, other than the API action (row). If the device (column) is omitted from a kernel build the API action (row) is not available (returns 404?). R (Required): Device (column) required for Firecracker functionality, including the API action (row).

API virtio-net virtio-block virtio-vsock serial console keyboard
SendCtlAltDel O

etc

Appreciate any feedback.

andreeaflorescu commented 4 years ago

It would help us and, we think, others too, if the project could add to the documentation a Device-API functionality matrix showing which devices are required for which API calls. Specifically we find ambiguity around which devices are required - even if not used - for what firecracker functionality.

This is a really cool idea! We would like to include this in the Firecracker documentation.

Would you like to get an RFC going with your proposal? We can also offer support in creating that list. We can discuss about the actual layout in a PR if you're also on board with that.

andreeaflorescu commented 4 years ago

Reopening this issue so we can keep it in sight.

@bbros-dev let us know if you need help with anything.

bbros-dev commented 4 years ago

OKay, closed because I was going to open the RFC - only can get to this next week. Unfortunately.