Message ID | 1546900184-27403-2-git-send-email-venu.busireddy@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Support for datapath switching during live migration | expand |
I am not familiar with libvirt and I would like to play with this only with qemu. With failover, we need to hotplug the VF on destination server to VM after live migration. However, the VF on destination server would have different mac address. How can we specify the mac for the new VF to hotplug via qemu, as VF is only a vfio pci device? I am trying to play with this with only qemu (w/o libvirt). Thank you very much! Dongli Zhang On 01/08/2019 06:29 AM, Venu Busireddy wrote: > From: Sridhar Samudrala <sridhar.samudrala@intel.com> > > This feature bit can be used by a hypervisor to indicate to the virtio_net > device that it can act as a standby for another device with the same MAC > address. > > Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com> > Signed-off-by: Venu Busireddy <venu.busireddy@oracle.com> > --- > hw/net/virtio-net.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c > index 385b1a0..411f8fb 100644 > --- a/hw/net/virtio-net.c > +++ b/hw/net/virtio-net.c > @@ -2198,6 +2198,8 @@ static Property virtio_net_properties[] = { > true), > DEFINE_PROP_INT32("speed", VirtIONet, net_conf.speed, SPEED_UNKNOWN), > DEFINE_PROP_STRING("duplex", VirtIONet, net_conf.duplex_str), > + DEFINE_PROP_BIT64("standby", VirtIONet, host_features, VIRTIO_NET_F_STANDBY, > + false), > DEFINE_PROP_END_OF_LIST(), > }; > >
On 2019-01-09 00:56:38 +0800, Dongli Zhang wrote: > I am not familiar with libvirt and I would like to play with this only with qemu. > > With failover, we need to hotplug the VF on destination server to VM after live > migration. However, the VF on destination server would have different mac address. > > How can we specify the mac for the new VF to hotplug via qemu, as VF is only a > vfio pci device? How is the VF device on the destination host any different from the VF on the source host? As you do on the source host, you first assign the MAC address of 00:00:00:00:00:00 to the VF. After the migration, you assign the same MAC address as that of the virtio_net device to the VF, and hotadd the VF device to the VM. And then, after you receive the FAILOVER_PRIMARY_CHANGED event, set the macvtap device to down state. Venu > > I am trying to play with this with only qemu (w/o libvirt). > > Thank you very much! > > Dongli Zhang > > On 01/08/2019 06:29 AM, Venu Busireddy wrote: > > From: Sridhar Samudrala <sridhar.samudrala@intel.com> > > > > This feature bit can be used by a hypervisor to indicate to the virtio_net > > device that it can act as a standby for another device with the same MAC > > address. > > > > Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com> > > Signed-off-by: Venu Busireddy <venu.busireddy@oracle.com> > > --- > > hw/net/virtio-net.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c > > index 385b1a0..411f8fb 100644 > > --- a/hw/net/virtio-net.c > > +++ b/hw/net/virtio-net.c > > @@ -2198,6 +2198,8 @@ static Property virtio_net_properties[] = { > > true), > > DEFINE_PROP_INT32("speed", VirtIONet, net_conf.speed, SPEED_UNKNOWN), > > DEFINE_PROP_STRING("duplex", VirtIONet, net_conf.duplex_str), > > + DEFINE_PROP_BIT64("standby", VirtIONet, host_features, VIRTIO_NET_F_STANDBY, > > + false), > > DEFINE_PROP_END_OF_LIST(), > > }; > > > >
Hi Venu, On 2019/1/9 上午1:25, Venu Busireddy wrote: > On 2019-01-09 00:56:38 +0800, Dongli Zhang wrote: >> I am not familiar with libvirt and I would like to play with this only with qemu. >> >> With failover, we need to hotplug the VF on destination server to VM after live >> migration. However, the VF on destination server would have different mac address. >> >> How can we specify the mac for the new VF to hotplug via qemu, as VF is only a >> vfio pci device? > > How is the VF device on the destination host any different from the VF > on the source host? > > As you do on the source host, you first assign the MAC address of > 00:00:00:00:00:00 to the VF. After the migration, you assign the same > MAC address as that of the virtio_net device to the VF, and hotadd the VF This was what I was wondering. How the mac address is configured for VF (or any NIC like PF) after it is assigned to vfio? Thank you very much! Dongli Zhang > device to the VM. And then, after you receive the FAILOVER_PRIMARY_CHANGED > event, set the macvtap device to down state. > > Venu > >> >> I am trying to play with this with only qemu (w/o libvirt). >> >> Thank you very much! >> >> Dongli Zhang >> >> On 01/08/2019 06:29 AM, Venu Busireddy wrote: >>> From: Sridhar Samudrala <sridhar.samudrala@intel.com> >>> >>> This feature bit can be used by a hypervisor to indicate to the virtio_net >>> device that it can act as a standby for another device with the same MAC >>> address. >>> >>> Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com> >>> Signed-off-by: Venu Busireddy <venu.busireddy@oracle.com> >>> --- >>> hw/net/virtio-net.c | 2 ++ >>> 1 file changed, 2 insertions(+) >>> >>> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c >>> index 385b1a0..411f8fb 100644 >>> --- a/hw/net/virtio-net.c >>> +++ b/hw/net/virtio-net.c >>> @@ -2198,6 +2198,8 @@ static Property virtio_net_properties[] = { >>> true), >>> DEFINE_PROP_INT32("speed", VirtIONet, net_conf.speed, SPEED_UNKNOWN), >>> DEFINE_PROP_STRING("duplex", VirtIONet, net_conf.duplex_str), >>> + DEFINE_PROP_BIT64("standby", VirtIONet, host_features, VIRTIO_NET_F_STANDBY, >>> + false), >>> DEFINE_PROP_END_OF_LIST(), >>> }; >>> >>> >
On 1/8/2019 4:14 PM, Dongli Zhang wrote: > Hi Venu, > > On 2019/1/9 上午1:25, Venu Busireddy wrote: >> On 2019-01-09 00:56:38 +0800, Dongli Zhang wrote: >>> I am not familiar with libvirt and I would like to play with this only with qemu. >>> >>> With failover, we need to hotplug the VF on destination server to VM after live >>> migration. However, the VF on destination server would have different mac address. >>> >>> How can we specify the mac for the new VF to hotplug via qemu, as VF is only a >>> vfio pci device? >> How is the VF device on the destination host any different from the VF >> on the source host? >> >> As you do on the source host, you first assign the MAC address of >> 00:00:00:00:00:00 to the VF. After the migration, you assign the same >> MAC address as that of the virtio_net device to the VF, and hotadd the VF > This was what I was wondering. > > How the mac address is configured for VF (or any NIC like PF) after it is > assigned to vfio? ip link set <pf> vf <vf-num> mac <MAC> See https://www.kernel.org/doc/html/latest/networking/net_failover.html for a sample script that shows the steps to initiate live migration with VF and virtio-net in standby mode. > > Thank you very much! > > Dongli Zhang > > >> device to the VM. And then, after you receive the FAILOVER_PRIMARY_CHANGED >> event, set the macvtap device to down state. >> >> Venu >> >>> I am trying to play with this with only qemu (w/o libvirt). >>> >>> Thank you very much! >>> >>> Dongli Zhang >>> >>> On 01/08/2019 06:29 AM, Venu Busireddy wrote: >>>> From: Sridhar Samudrala <sridhar.samudrala@intel.com> >>>> >>>> This feature bit can be used by a hypervisor to indicate to the virtio_net >>>> device that it can act as a standby for another device with the same MAC >>>> address. >>>> >>>> Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com> >>>> Signed-off-by: Venu Busireddy <venu.busireddy@oracle.com> >>>> --- >>>> hw/net/virtio-net.c | 2 ++ >>>> 1 file changed, 2 insertions(+) >>>> >>>> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c >>>> index 385b1a0..411f8fb 100644 >>>> --- a/hw/net/virtio-net.c >>>> +++ b/hw/net/virtio-net.c >>>> @@ -2198,6 +2198,8 @@ static Property virtio_net_properties[] = { >>>> true), >>>> DEFINE_PROP_INT32("speed", VirtIONet, net_conf.speed, SPEED_UNKNOWN), >>>> DEFINE_PROP_STRING("duplex", VirtIONet, net_conf.duplex_str), >>>> + DEFINE_PROP_BIT64("standby", VirtIONet, host_features, VIRTIO_NET_F_STANDBY, >>>> + false), >>>> DEFINE_PROP_END_OF_LIST(), >>>> }; >>>> >>>>
Hi Samudrala, On 2019/1/9 上午8:18, Samudrala, Sridhar wrote: > On 1/8/2019 4:14 PM, Dongli Zhang wrote: >> Hi Venu, >> >> On 2019/1/9 上午1:25, Venu Busireddy wrote: >>> On 2019-01-09 00:56:38 +0800, Dongli Zhang wrote: >>>> I am not familiar with libvirt and I would like to play with this only with qemu. >>>> >>>> With failover, we need to hotplug the VF on destination server to VM after live >>>> migration. However, the VF on destination server would have different mac address. >>>> >>>> How can we specify the mac for the new VF to hotplug via qemu, as VF is only a >>>> vfio pci device? >>> How is the VF device on the destination host any different from the VF >>> on the source host? >>> >>> As you do on the source host, you first assign the MAC address of >>> 00:00:00:00:00:00 to the VF. After the migration, you assign the same >>> MAC address as that of the virtio_net device to the VF, and hotadd the VF >> This was what I was wondering. >> >> How the mac address is configured for VF (or any NIC like PF) after it is >> assigned to vfio? > > ip link set <pf> vf <vf-num> mac <MAC> > > See https://www.kernel.org/doc/html/latest/networking/net_failover.html > for a sample script that shows the steps to initiate live migration with VF > and virtio-net in standby mode. Thank you very much for the help! Sorry that I did not ask the question in the right way. Although I was talking about VF, I would like to passthrough the entire PF (with sriov_numvfs=0) to guest VM. In this situation, I am not able to configure the mac address when the entire PF (or NIC) is assigned to VFIO. <pf> does not exist as it is belong to VFIO. Thank you very much! Dongli Zhang > > >> Thank you very much! >> >> Dongli Zhang >> >> >>> device to the VM. And then, after you receive the FAILOVER_PRIMARY_CHANGED >>> event, set the macvtap device to down state. >>> >>> Venu >>> >>>> I am trying to play with this with only qemu (w/o libvirt). >>>> >>>> Thank you very much! >>>> >>>> Dongli Zhang >>>> >>>> On 01/08/2019 06:29 AM, Venu Busireddy wrote: >>>>> From: Sridhar Samudrala <sridhar.samudrala@intel.com> >>>>> >>>>> This feature bit can be used by a hypervisor to indicate to the virtio_net >>>>> device that it can act as a standby for another device with the same MAC >>>>> address. >>>>> >>>>> Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com> >>>>> Signed-off-by: Venu Busireddy <venu.busireddy@oracle.com> >>>>> --- >>>>> hw/net/virtio-net.c | 2 ++ >>>>> 1 file changed, 2 insertions(+) >>>>> >>>>> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c >>>>> index 385b1a0..411f8fb 100644 >>>>> --- a/hw/net/virtio-net.c >>>>> +++ b/hw/net/virtio-net.c >>>>> @@ -2198,6 +2198,8 @@ static Property virtio_net_properties[] = { >>>>> true), >>>>> DEFINE_PROP_INT32("speed", VirtIONet, net_conf.speed, SPEED_UNKNOWN), >>>>> DEFINE_PROP_STRING("duplex", VirtIONet, net_conf.duplex_str), >>>>> + DEFINE_PROP_BIT64("standby", VirtIONet, host_features, VIRTIO_NET_F_STANDBY, >>>>> + false), >>>>> DEFINE_PROP_END_OF_LIST(), >>>>> }; >>>>> >>>>>
On Wed, Jan 09, 2019 at 08:39:07AM +0800, Dongli Zhang wrote: > Hi Samudrala, > > On 2019/1/9 上午8:18, Samudrala, Sridhar wrote: > > On 1/8/2019 4:14 PM, Dongli Zhang wrote: > >> Hi Venu, > >> > >> On 2019/1/9 上午1:25, Venu Busireddy wrote: > >>> On 2019-01-09 00:56:38 +0800, Dongli Zhang wrote: > >>>> I am not familiar with libvirt and I would like to play with this only with qemu. > >>>> > >>>> With failover, we need to hotplug the VF on destination server to VM after live > >>>> migration. However, the VF on destination server would have different mac address. > >>>> > >>>> How can we specify the mac for the new VF to hotplug via qemu, as VF is only a > >>>> vfio pci device? > >>> How is the VF device on the destination host any different from the VF > >>> on the source host? > >>> > >>> As you do on the source host, you first assign the MAC address of > >>> 00:00:00:00:00:00 to the VF. After the migration, you assign the same > >>> MAC address as that of the virtio_net device to the VF, and hotadd the VF > >> This was what I was wondering. > >> > >> How the mac address is configured for VF (or any NIC like PF) after it is > >> assigned to vfio? > > > > ip link set <pf> vf <vf-num> mac <MAC> > > > > See https://www.kernel.org/doc/html/latest/networking/net_failover.html > > for a sample script that shows the steps to initiate live migration with VF > > and virtio-net in standby mode. > > Thank you very much for the help! > > Sorry that I did not ask the question in the right way. > > Although I was talking about VF, I would like to passthrough the entire PF (with > sriov_numvfs=0) to guest VM. > > In this situation, I am not able to configure the mac address when the entire PF > (or NIC) is assigned to VFIO. <pf> does not exist as it is belong to VFIO. > > Thank you very much! > > Dongli Zhang I think that this mode isn't a good fit for the current (MAC address based) failover. There was talk about supporting other ways to match devices for failover, but no one implemented driver changes required for this yet. > > > > > >> Thank you very much! > >> > >> Dongli Zhang > >> > >> > >>> device to the VM. And then, after you receive the FAILOVER_PRIMARY_CHANGED > >>> event, set the macvtap device to down state. > >>> > >>> Venu > >>> > >>>> I am trying to play with this with only qemu (w/o libvirt). > >>>> > >>>> Thank you very much! > >>>> > >>>> Dongli Zhang > >>>> > >>>> On 01/08/2019 06:29 AM, Venu Busireddy wrote: > >>>>> From: Sridhar Samudrala <sridhar.samudrala@intel.com> > >>>>> > >>>>> This feature bit can be used by a hypervisor to indicate to the virtio_net > >>>>> device that it can act as a standby for another device with the same MAC > >>>>> address. > >>>>> > >>>>> Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com> > >>>>> Signed-off-by: Venu Busireddy <venu.busireddy@oracle.com> > >>>>> --- > >>>>> hw/net/virtio-net.c | 2 ++ > >>>>> 1 file changed, 2 insertions(+) > >>>>> > >>>>> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c > >>>>> index 385b1a0..411f8fb 100644 > >>>>> --- a/hw/net/virtio-net.c > >>>>> +++ b/hw/net/virtio-net.c > >>>>> @@ -2198,6 +2198,8 @@ static Property virtio_net_properties[] = { > >>>>> true), > >>>>> DEFINE_PROP_INT32("speed", VirtIONet, net_conf.speed, SPEED_UNKNOWN), > >>>>> DEFINE_PROP_STRING("duplex", VirtIONet, net_conf.duplex_str), > >>>>> + DEFINE_PROP_BIT64("standby", VirtIONet, host_features, VIRTIO_NET_F_STANDBY, > >>>>> + false), > >>>>> DEFINE_PROP_END_OF_LIST(), > >>>>> }; > >>>>> > >>>>>
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 385b1a0..411f8fb 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -2198,6 +2198,8 @@ static Property virtio_net_properties[] = { true), DEFINE_PROP_INT32("speed", VirtIONet, net_conf.speed, SPEED_UNKNOWN), DEFINE_PROP_STRING("duplex", VirtIONet, net_conf.duplex_str), + DEFINE_PROP_BIT64("standby", VirtIONet, host_features, VIRTIO_NET_F_STANDBY, + false), DEFINE_PROP_END_OF_LIST(), };