On Tue, Aug 6, 2024 at 11:44 AM <brendan.do...@oracle.com> wrote: > > > On 06/08/2024 16:22, Ihar Hrachyshka wrote: > > On Tue, Aug 6, 2024 at 6:09 AM <brendan.do...@oracle.com> wrote: > >> >> >> On 05/08/2024 19:16, Ihar Hrachyshka wrote: >> >> Hi, >> >> I don't know what libvirt OVN hook is though. Do you have a link? >> >> >> https://docs.openvswitch.org/en/latest/howto/libvirt/ >> <https://urldefense.com/v3/__https://docs.openvswitch.org/en/latest/howto/libvirt/__;!!ACWV5N9M2RV99hQ!PrRc5pn2H7XKwNz56Fx02hMzSYd38g07Xp0SnqTKS5G5LGElU0mSBKchpfNeA_Dt3aboh03f9XaEQl2jDBMh$> >> https://www.redhat.com/sysadmin/libvirt-open-vswitch >> <https://urldefense.com/v3/__https://www.redhat.com/sysadmin/libvirt-open-vswitch__;!!ACWV5N9M2RV99hQ!PrRc5pn2H7XKwNz56Fx02hMzSYd38g07Xp0SnqTKS5G5LGElU0mSBKchpfNeA_Dt3aboh03f9XaEQmapFFpt$> >> >> > This *seems* Open vSwitch specific?.. Is there some additional integration > for OVN that is not covered in the links above? I imagine, at the very > least, you'd have to set iface-id on OVS interfaces to establish a mapping > between OVN LSPs and OVS interfaces. > > > > Yes the libvert OVN hook creates the interface IDs. >
It looks like the OVS (note: OVS, not OVN) hook fills in iface-ids for VM OVS interfaces. It looks like the rest of the integration - OVN LSP management - is done outside of the hook (by your automation?) > > I assume this is done, somehow. Wonder if you have a link to this code so > we can check what it does to attach LSPs. > > > I'm not sure I'd imagine it is in the base libvert code. The way we use: > > Create a libvert "ovn-network" type : > > cat ovn-network.xml > <network> > <name>ovn-network</name> > <forward mode='bridge'/> > <bridge name='br-int'/> > <virtualport type='openvswitch'/> > </network> > > virsh net-create ovn-network.xml > > Then when creating a VM add NIC Choose "ovn-network" as Network source and > under Virtual port put type as "openvswitch" > > > ovs-vsctl get interface vnetX external_ids:iface-id > ovs-vsctl get interface vnetX external_ids:attached-mac > > > ovn-nbctl lsp-add <switch name> iface-id > > Ah I see, thanks for this clarification. So you create LSPs yourself? You will have to manage the requested-chassis setting on the LSP to reflect the "current" host for the port (=the host that actively runs the live migrated VM). This is what CMS like OpenStack does. It may be tricky to quickly (as in: sub-second range) detect the switch from source to destination host, but since you have ~50 seconds of port flapping, it may be the least of your problems. > > >> >> This suggests that `requested-chassis` for the OVN port is, at least for >> a moment, set to `null`, while both hosts have the interface with >> `iface-id` set to the port ID. Your hook should avoid it. (Always have >> requested-chassis pointing to one host or another, but never clear it up >> completely.) (Alternatively, create the destination OVS interface only when >> migration is complete.) >> >> BTW the 100 flapping in 50s is actually not too bad, it was a lot worse >> before: >> https://github.com/ovn-org/ovn/commit/4dc4bc7fdb848bcc626becbd2c80ffef8a39ff9a >> <https://urldefense.com/v3/__https://github.com/ovn-org/ovn/commit/4dc4bc7fdb848bcc626becbd2c80ffef8a39ff9a__;!!ACWV5N9M2RV99hQ!P4Dli8ff2rtH8mzHvmTlVoIBEEp7UX4RSsBiUC1QJGdVGJAM_7AqU1UUF-6MPdDTom7oupIAo5eS5zua_o4K$> >> >> --- >> >> A while ago, I wrote a blog walking through the binding process for OVN, >> (it covers live migration and port binding flapping; it also covers the >> additional-requested-chassis feature that is helpful for live migration, >> but I suspect you don't use it). I hope it may be of help: >> https://ihar.dev/posts/ovn-chassis-binding-walkthru >> <https://urldefense.com/v3/__https://ihar.dev/posts/ovn-chassis-binding-walkthru__;!!ACWV5N9M2RV99hQ!P4Dli8ff2rtH8mzHvmTlVoIBEEp7UX4RSsBiUC1QJGdVGJAM_7AqU1UUF-6MPdDTom7oupIAo5eS51JVTxAa$> >> >> >> Thanks, that is interesting, but. I guess this would require hooks >> between libvert's live migration >> and the CMS, so that the CMs can adjust options:requested-chassis. >> >> > Yes. But I think as long as you have multiple OVS interfaces with the same > iface-id on different hosts, you have to use requested-chassis to identify > which host is "current" at any particular moment. > > >> >> Brendan >> >> >> On Fri, Jul 26, 2024 at 9:41 AM Brendan Doyle via discuss < >> ovs-discuss@openvswitch.org> wrote: >> >>> Hi Folks, >>> >>> >>> We have a pair of VM's with their network interfaces connected into OVN >>> via the libvert >>> OVN hook. When doing live migration of these I see intense port >>> flapping, with each >>> chassis repeatably claiming the interfaces and and configuring them into >>> the southbound >>> DB/OVS, bringing the ports up/down constantly. I see the sequence of >>> events below >>> repeated up to a 100 times in a 50s period as the interfaces are >>> migrated from one chassis >>> to another. >>> >>> Is this expected behavior, and what is the expected interface outage to >>> be during this >>> period? We have a heartbeat running with a 30s timeout, and that >>> intermittently >>> fails during these migrations. >>> >>> On each chassis I see these sequence of events repeated 90 to 100 times: >>> >>> >>> in pcacn001, we see: >>> 2024-07-21T09:36:35.262Z|304798|binding|INFO|Changing chassis for lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 from pcacn004 to pcacn001 >>> 2024-07-21T09:36:35.262Z|304799|binding|INFO|c7e2c10e-43f1-11ef-b3c5-a8698c171668: >>> Claiming 00:13:97:f3:ea:30 11.11.1.2 >>> 2024-07-21T09:36:35.265Z|304800|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 up in Southbound >>> 2024-07-21T09:36:35.583Z|304806|binding|INFO|Removing lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 ovn-installed in OVS >>> 2024-07-21T09:36:35.584Z|304809|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 ovn-installed in OVS >>> 2024-07-21T09:36:35.746Z|304810|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 up in Southbound >>> 2024-07-21T09:36:35.891Z|304811|binding|INFO|Changing chassis for lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 from pcacn004 to pcacn001 >>> 2024-07-21T09:36:35.891Z|304812|binding|INFO|c7e2c10e-43f1-11ef-b3c5-a8698c171668: >>> Claiming 00:13:97:f3:ea:30 11.11.1.2 >>> 2024-07-21T09:36:35.967Z|304813|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 up in Southbound >>> 2024-07-21T09:36:36.189Z|304817|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 up in Southbound >>> 2024-07-21T09:36:36.338Z|304818|binding|INFO|Removing lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 ovn-installed in OVS >>> 2024-07-21T09:36:36.338Z|304818|binding|INFO|Removing lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 ovn-installed in OVS >>> 2024-07-21T09:36:36.339Z|304819|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 down in Southbound >>> 2024-07-21T09:36:36.422Z|304821|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 ovn-installed in OVS >>> 2024-07-21T09:36:36.422Z|304822|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 up in Southbound And this moving the >>> port from pcacn004 to pcacn001 and setting the port down/up repeats for >>> 90-100 times until: 2024-07-21T09:37:23.945Z|306386|binding|INFO|Releasing >>> lport c7e2c10e-43f1-11ef-b3c5-a8698c171668 from this chassis. 49 seconds of >>> this. But also in pcacn004, we see it doing the same: >>> 2024-07-21T09:36:35.253Z|301841|binding|INFO|Changing chassis for lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 from pcacn001 to pcacn004. >>> 2024-07-21T09:36:35.253Z|301842|binding|INFO|c7e2c10e-43f1-11ef-b3c5-a8698c171668: >>> Claiming 00:13:97:f3:ea:30 11.11.1.2 >>> 2024-07-21T09:36:35.259Z|301843|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 down in Southbound >>> 2024-07-21T09:36:35.452Z|301846|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 ovn-installed in OVS >>> 2024-07-21T09:36:35.483Z|301850|binding|INFO|Removing lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 ovn-installed in OVS >>> 2024-07-21T09:36:35.483Z|301851|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 down in Southbound >>> 2024-07-21T09:36:35.562Z|301852|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 ovn-installed in OVS >>> 2024-07-21T09:36:35.562Z|301853|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 up in Southbound >>> 2024-07-21T09:36:35.743Z|301855|binding|INFO|Removing lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 ovn-installed in OVS >>> 2024-07-21T09:36:35.743Z|301856|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 down in Southbound >>> 2024-07-21T09:36:35.817Z|301857|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 ovn-installed in OVS >>> 2024-07-21T09:36:35.817Z|301858|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 up in Southbound which continues until >>> it finally gets the port at: >>> 2024-07-21T09:37:23.793Z|303182|binding|INFO|Changing chassis for lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 from pcacn001 to pcacn004. >>> 2024-07-21T09:37:23.793Z|303183|binding|INFO|c7e2c10e-43f1-11ef-b3c5-a8698c171668: >>> Claiming 00:13:97:f3:ea:30 11.11.1.2 >>> 2024-07-21T09:37:23.857Z|303184|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 up in Southbound >>> 2024-07-21T09:37:23.949Z|303185|binding|INFO|Claiming lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 for this chassis. >>> 2024-07-21T09:37:23.949Z|303186|binding|INFO|c7e2c10e-43f1-11ef-b3c5-a8698c171668: >>> Claiming 00:13:97:f3:ea:30 11.11.1.2 >>> 2024-07-21T09:37:23.951Z|303187|binding|INFO|Setting lport >>> c7e2c10e-43f1-11ef-b3c5-a8698c171668 up in Southbound >>> _______________________________________________ >>> discuss mailing list >>> disc...@openvswitch.org >>> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss >>> <https://urldefense.com/v3/__https://mail.openvswitch.org/mailman/listinfo/ovs-discuss__;!!ACWV5N9M2RV99hQ!P4Dli8ff2rtH8mzHvmTlVoIBEEp7UX4RSsBiUC1QJGdVGJAM_7AqU1UUF-6MPdDTom7oupIAo5eS50Dbbh3u$> >>> >> >> >
_______________________________________________ discuss mailing list disc...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-discuss