From: Jesse Brandeburg <jesse.brandeburg@intel.com>
To: virtualization@lists.linux-foundation.org
Cc: Jakub Kicinski <jakub.kicinski@netronome.com>,
mst@redhat.com, Sridhar Samudrala <sridhar.samudrala@intel.com>,
Achiad <achiad@mellanox.com>,
Peter Waskiewicz Jr <peter.waskiewicz.jr@intel.com>,
"Singhai, Anjali" <anjali.singhai@intel.com>,
Andy Gospodarek <gospo@broadcom.com>,
Or Gerlitz <gerlitz.or@gmail.com>
Subject: [RFC] virtio-net: help live migrate SR-IOV devices
Date: Tue, 28 Nov 2017 11:27:22 -0800 [thread overview]
Message-ID: <20171128112722.00003716@intel.com> (raw)
Hi, I'd like to get some feedback on a proposal to enhance virtio-net
to ease configuration of a VM and that would enable live migration of
passthrough network SR-IOV devices.
Today we have SR-IOV network devices (VFs) that can be passed into a VM
in order to enable high performance networking direct within the VM.
The problem I am trying to address is that this configuration is
generally difficult to live-migrate. There is documentation [1]
indicating that some OS/Hypervisor vendors will support live migration
of a system with a direct assigned networking device. The problem I
see with these implementations is that the network configuration
requirements that are passed on to the owner of the VM are quite
complicated. You have to set up bonding, you have to configure it to
enslave two interfaces, those interfaces (one is virtio-net, the other
is SR-IOV device/driver like ixgbevf) must support MAC address changes
requested in the VM, and on and on...
So, on to the proposal:
Modify virtio-net driver to be a single VM network device that
enslaves an SR-IOV network device (inside the VM) with the same MAC
address. This would cause the virtio-net driver to appear and work like
a simplified bonding/team driver. The live migration problem would be
solved just like today's bonding solution, but the VM user's networking
config would be greatly simplified.
At it's simplest, it would appear something like this in the VM.
==========
= vnet0 =
=============
(virtio- = |
net) = |
= ==========
= = ixgbef =
========== ==========
(forgive the ASCII art)
The fast path traffic would prefer the ixgbevf or other SR-IOV device
path, and fall back to virtio's transmit/receive when migrating.
Compared to today's options this proposal would
1) make virtio-net more sticky, allow fast path traffic at SR-IOV
speeds
2) simplify end user configuration in the VM (most if not all of the
set up to enable migration would be done in the hypervisor)
3) allow live migration via a simple link down and maybe a PCI
hot-unplug of the SR-IOV device, with failover to the virtio-net
driver core
4) allow vendor agnostic hardware acceleration, and live migration
between vendors if the VM os has driver support for all the required
SR-IOV devices.
Runtime operation proposed:
- <in either order> virtio-net driver loads, SR-IOV driver loads
- virtio-net finds other NICs that match it's MAC address by
both examining existing interfaces, and sets up a new device notifier
- virtio-net enslaves the first NIC with the same MAC address
- virtio-net brings up the slave, and makes it the "preferred" path
- virtio-net follows the behavior of an active backup bond/team
- virtio-net acts as the interface to the VM
- live migration initiates
- link goes down on SR-IOV, or SR-IOV device is removed
- failover to virtio-net as primary path
- migration continues to new host
- new host is started with virio-net as primary
- if no SR-IOV, virtio-net stays primary
- hypervisor can hot-add SR-IOV NIC, with same MAC addr as virtio
- virtio-net notices new NIC and starts over at enslave step above
Future ideas (brainstorming):
- Optimize Fast east-west by having special rules to direct east-west
traffic through virtio-net traffic path
Thanks for reading!
Jesse
[1]
https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.1/html/virtual_machine_management_guide/sect-migrating_virtual_machines_between_hosts
next reply other threads:[~2017-11-28 19:27 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-28 19:27 Jesse Brandeburg [this message]
2017-11-29 13:39 ` [RFC] virtio-net: help live migrate SR-IOV devices Michael S. Tsirkin
2017-11-30 3:29 ` Jason Wang
[not found] ` <0fb552d4-1bfc-e130-4fc1-87b83873916d@redhat.com>
2017-11-30 3:51 ` Jakub Kicinski
2017-11-30 8:08 ` achiad shochat
[not found] ` <20171129195138.63512ead@cakuba.netronome.com>
2017-11-30 4:10 ` Stephen Hemminger
[not found] ` <20171129201009.4d48dc6d@xeon-e3>
2017-11-30 4:21 ` Jakub Kicinski
2017-11-30 13:54 ` Michael S. Tsirkin
[not found] ` <20171130153522-mutt-send-email-mst@kernel.org>
2017-11-30 20:48 ` Jakub Kicinski
[not found] ` <20171130124816.7d534cf3@cakuba.netronome.com>
2017-12-01 5:13 ` Michael S. Tsirkin
[not found] ` <CAEHy93LneRXNWo64uyN2dfyDX6t18WN+YwVF2RXXLRnr0=Jhww@mail.gmail.com>
2017-11-30 14:11 ` Michael S. Tsirkin
[not found] ` <20171130155612-mutt-send-email-mst@kernel.org>
2017-12-01 20:08 ` Shannon Nelson
[not found] ` <780cf854-83e1-b2a4-0f07-74372a972ca6@oracle.com>
2017-12-03 5:05 ` Michael S. Tsirkin
2017-12-03 9:14 ` achiad shochat
2017-12-03 17:35 ` Stephen Hemminger
[not found] ` <20171203093524.26491cd0@xeon-e3>
2017-12-04 9:51 ` achiad shochat
[not found] ` <CAEHy93LEr5h81KGfJBr5Z4ZKaeWEWwQL1LYfZNXoVF_HB6TQGw@mail.gmail.com>
2017-12-04 16:30 ` Alexander Duyck
[not found] ` <CAKgT0Uf5gta+CNM3ReybV3qNMJXqoT9BHvMjKRbd=PYOPQrQaA@mail.gmail.com>
2017-12-05 9:59 ` achiad shochat
[not found] ` <CAEHy93Kw-GePsraaAkVZNbOwt=rDPMVjmwuU22004LHCAoSSFA@mail.gmail.com>
2017-12-05 19:20 ` Michael S. Tsirkin
[not found] ` <20171205211603-mutt-send-email-mst@kernel.org>
2017-12-05 21:52 ` Jesse Brandeburg
[not found] ` <20171205135226.00002b68@intel.com>
2017-12-05 22:05 ` Michael S. Tsirkin
2017-12-07 7:28 ` achiad shochat
[not found] ` <CAEHy93JG-X-5qtrU2wUmxfMzKc9G3GDNL_H-FXsmAmfwvoO+vg@mail.gmail.com>
2017-12-07 16:45 ` Alexander Duyck
[not found] ` <CAKgT0UfC2o4P8DeRHnnPV9fvUzJYbkCKVHr=zHOfbEQdLn=3nA@mail.gmail.com>
2017-12-07 16:53 ` Michael S. Tsirkin
2017-12-05 22:29 ` Jakub Kicinski
[not found] ` <20171205142928.00f5a51a@cakuba.netronome.com>
2017-12-05 22:41 ` Stephen Hemminger
2017-11-30 14:14 ` Michael S. Tsirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171128112722.00003716@intel.com \
--to=jesse.brandeburg@intel.com \
--cc=achiad@mellanox.com \
--cc=anjali.singhai@intel.com \
--cc=gerlitz.or@gmail.com \
--cc=gospo@broadcom.com \
--cc=jakub.kicinski@netronome.com \
--cc=mst@redhat.com \
--cc=peter.waskiewicz.jr@intel.com \
--cc=sridhar.samudrala@intel.com \
--cc=virtualization@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).