May 08, 2021

gVNIC

A couple of months ago, Google Cloud launched gvnic, a new paravirtual network interface for virtual machines in Google Compute Engine. gvnic offers higher performance than and new features over the prior paravirtual network interface in GCE, virtio-net.

Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-1036-gcp x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sat Feb 20 03:49:30 UTC 2021

  System load:  0.08              Processes:             103
  Usage of /:   14.9% of 9.52GB   Users logged in:       0
  Memory usage: 5%                IPv4 address for ens4: 10.240.0.29
  Swap usage:   0%


1 update can be installed immediately.
0 of these updates are security updates.
To see these additional updates run: apt list --upgradable


The list of available updates is more than a week old.
To check for new updates run: sudo apt update

Last login: Sat Feb 20 03:42:19 2021 from 173.194.90.36
extrudedaluminiu@instance-2:~$ lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation 440FX - 82441FX PMC [Natoma] [8086:1237] (rev 02)
00:01.0 ISA bridge [0601]: Intel Corporation 82371AB/EB/MB PIIX4 ISA [8086:7110] (rev 03)
00:01.3 Bridge [0680]: Intel Corporation 82371AB/EB/MB PIIX4 ACPI [8086:7113] (rev 03)
00:03.0 Non-VGA unclassified device [0000]: Red Hat, Inc. Virtio SCSI [1af4:1004]
00:04.0 Ethernet controller [0200]: Google, Inc. Compute Engine Virtual Ethernet [gVNIC] [1ae0:0042]
00:05.0 Unclassified device [00ff]: Red Hat, Inc. Virtio RNG [1af4:1005]
gvnic on GCE: PCI Device ID 0x42, of course

I worked on gvnic for nearly three years (though it was some time ago); It is exciting to see a new paravirtual device of this scope reach General Availability!

A new paravirtual device represents a VM guest/hypervisor ABI and requires careful attention to detail - we needed to ensure that the ABI is a good match to VM guest requirements, to a hypervisor and underlying network infrastructure properties, and is designed with forward-evolution and versioning in mind. There are tradeoffs at multiple levels - for example, VM guests and hypervisors may have different preferences for where in memory transmit or receive frames live and how they're scattered/gathered; whether receive frame headers are more efficient in-line or out-of-line; and hundreds of other decisions that impact system performance and maintainability.

Building anything is kind of like this

Congratulations to everyone involved in the design and launch of the system; and to everyone who uses it, I hope it works well for you!

main

Posted by vsrinivas at 01:00 PM