MAAS UI: SmartNIC and LXD tenants

SmartNICs

This iteration, MAAS has been working on the conceptual level of smartNICs in the UI. A smartNIC is an intelligent network interface card that is a data processing unit in itself. It operates like a computer inside a computer, where the NIC can communicate directly with the VM without having to do interruption handling in the kernel layer. When a packet is sent to a conventional NIC, there is an abstraction layer in the kernel where it performs interruption handling and reverse context switching to pull the packet from the ring buffer to the NIC then sends it over to VMs.

The normal behaviour for when you have several hundred VMs running in a server, each VM will need to emulate the NIC from the host machine and perform interruption handling on the kernel. For this reason it is a very expensive operation, which utilises huge amounts of resources in the CPU. We can always improve the network throughput by increasing the NIC speed, but we’re not improving the CPU power.

A smartNIC can split itself into multiple physical functions which communicate directly with a collection of VMs through virtual functions, because the NIC is the processing unit. There are also several different modes of configuration that you can do with a smartNIC depending on how you would like it to optimise your virtual environment. As well as setting up security rules on the smartNIC to be handled by the NIC.

We’ve been through 2 design iterations on the conceptual level so far, and we are expecting a lot more iterations to come. Simpler problems that we can tackle right away are discoverability and setting up forms. Other than that we are still exploring different ways to represent hardware data from the smartNIC in ways that are useful for our users. So when a user owns a server with a smartNIC, they will be able to discover which mode it is configured on, deploy the OS, and view hardware information from the VM and physical machine.

LXD as tenants

Another exciting feature that we are currently working on in the UI is to re-associate LXD containers as tenants in MAAS. When a user creates a LXD server through LXD CLI, there is a concept of projects where a user may create multiple projects in a LXD server.

In this feature a user can sync a project that they created in a LXD server with MAAS and utilise MAAS UI for composing/deleting VMs, creating another project, and other functionalities. Our current scope is to allow our users to connect one project at a time and MAAS would see LXD as a tenant and not the other way around.