| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-10-08 | |||
| 16:07:03 | fungi | in particular if the vulnerability in the service has to be fixed by updating a dependent library, this is going to be complicated to communicate and may also make backporting harder | |
| 16:07:12 | sean-k-mooney | fungi: effectivly nova will wait for a notification form nuetron to know the port has been wired up on migration. | |
| 16:07:32 | sean-k-mooney | but in this edgecase os-vif is not used to plug the port libvirt is | |
| 16:07:51 | sean-k-mooney | as such we fallback to a time out and migrate without first having neutron wire up the port | |
| 16:08:23 | sean-k-mooney | neutron then wires up the port when the vm starts but that takes a little tiem to happen | |
| 16:08:47 | sean-k-mooney | the fix is to delegate to the os-vif lib to plug the interface in this edgecase also | |
| 16:09:17 | sean-k-mooney | that way the port will be wired up by neutron before we migrate | |
| 16:09:36 | fungi | and this is effectively a design flaw in nova because it assumes the call won't time out? or a bug in neutron for not treating it consistently using os-vif? | |
| 16:10:14 | sean-k-mooney | fungi: its legacy behavior form when nova woululd do firewalling for the port instead of neutron | |
| 16:10:54 | fungi | okay, so this will also eventually be solved when nova removes that deprecated behavior? | |
| 16:10:58 | sean-k-mooney | that said yes its partly a design flaw in nova. | |
| 16:11:29 | sean-k-mooney | yes if nova always used os-vif to plug the interface it would not happen | |
| 16:12:16 | fungi | and so https://review.openstack.org/602384 is basically a workaround to avoid having to switch nova to calling into os-vif for these? | |
| 16:12:33 | mriedem | umm...we use os-vif with nova-net too, so "yes if nova always used os-vif to plug the interface it would not happen" is kind of confusing | |
| 16:13:19 | sean-k-mooney | mriedem: the ovs plugin in os-vif was designed not to plug the interface in this case because libvirt does that | |
| 16:14:04 | sean-k-mooney | so we expressly do not create the ovs port and allow libvirt to do that currently. the change makes os-vif create the port which allows neutron to wire it up before we migrate the vm | |
| 16:15:16 | sean-k-mooney | mriedem: fungi so its not that nova does not call os-vif in this case. it does but os-vif was designed not to plug the interface in this case to maintain parity with how nova plugged interface before os-vif was split out | |
| 16:15:32 | sean-k-mooney | does that make sense? | |
| 16:16:00 | mriedem | shrug | |
| 16:16:03 | fungi | so the bug is in nova making assumptions about os-vif's behavior in this circumstance, or that os-vif doesn't fully implement the behavior nova expects? | |
| 16:16:20 | mriedem | sean-k-mooney: is this going to be a weird one off for ovs in os-vif only? | |
| 16:16:34 | mriedem | like will the behavior be different for all other vif types? | |
| 16:17:03 | mriedem | and when you say libvirt, do you mean the nova libvirt driver or libvirt the service? | |
| 16:17:11 | sean-k-mooney | that is a good question. i think there are a class of bugs related to this. | |
| 16:17:21 | sean-k-mooney | this bug predate os-vif | |
| 16:17:40 | sean-k-mooney | the original behavoir was incorrect | |
| 16:18:01 | sean-k-mooney | i say that becase anytime libvirt plugs the vif this can happen | |
| 16:18:48 | sean-k-mooney | this will not happen for vhost-user port as libvirt does not hanel plugin in that case. simplarly for siov libvirt set the vlan tag not neutron so that is safe | |
| 16:19:52 | sean-k-mooney | for now this is a one off but i need to look at other backends such as linux bridge to confirm this is a one off | |
| 16:19:56 | fungi | is this going to be backportable at least as far as stable/pike of os-vif? since we'll want a 1.7.1 tagged there for nova stable/pike to consume i guess | |
| 16:20:09 | sean-k-mooney | fungi: yes it should be | |
| 16:20:57 | sean-k-mooney | fungi: it requires not code change out side of os-vif and has no dependceis that i can tell to backport the change. | |
| 16:21:56 | fungi | i'm still a little iffy on how to go about describing this situation if we decide to publish an official advisory, particularly in that we consider it a nova bug but didn't patch nova to fix it. does the bug remain in nova even with newer os-vif? or is it simpler to explain it as a shortcoming of os-vif that we fixed to eliminate this behavior? | |
| 16:23:14 | jaypipes | mriedem: did the vmware live migration patch. | |
| 16:23:20 | sean-k-mooney | fungi: a newer os-vif will resolve the issue. my concern with calling this an os-vif only bug is if we go back to before we split out os-vif the bug i belive would still exist in the nova tree | |
| 16:24:24 | fungi | well, the advisory will only concern itself with the state of these repositories as of pike or later since we don't claim to provide security support to eol or em branches/releases | |
| 16:25:16 | sean-k-mooney | fungi: in that case its likely eaiser to discribe it as a os-vif bug given that pike uses os-vif | |
| 16:27:51 | fungi | and when you say "a class of bugs related to this" have any more been reported yet? | |
| 16:28:10 | sean-k-mooney | fungi: given the above if i add a release not to the os-vif change and propose backports. would it be inline with stable/vulnerablity policy to cut a release and bump the upper consttaint in the stable release | |
| 16:29:04 | fungi | mriedem would likely be able to better advise you on whether that particular change is suitable from a stable backport pilicy perspective | |
| 16:29:08 | sean-k-mooney | fungi: no but its posibly that thrid party plugins that manage ovs interfaces will need the same fix | |
| 16:30:02 | fungi | okay, so similar fixes may need to be applied to third-party ovs interface management plugins but not to any others officially managed by openstack as far as you're aware? | |
| 16:31:04 | sean-k-mooney | i just checked the linux bridge plugin and it does not need a similar fix as far as i can tell. so no none that i am aware of | |
| 16:31:41 | fungi | and what's the situation with https://review.openstack.org/602432 ? is that going to be abandoned as unneeded? | |
| 16:31:42 | sean-k-mooney | there are two out of tree plugins that i need to follow up on but i will check them and contact there maintianer if they need the same fix | |
| 16:32:24 | sean-k-mooney | fungi: yes i was going to that said i had planned on following up with the libvirt folks to see why it times out sometimes | |
| 16:34:05 | sean-k-mooney | we have had the issues using the ethernet iterface type in the past and i would like them to confirm why it does not work correctly in this case. that said its not relevent in to the bug disucssion | |
| 16:35:01 | fungi | okay, once you get a summary of the present state added to the bug and we get some confirmation that https://review.openstack.org/602384 is in line with stable policy, the vmt can write up an impact description, request a cve assignment and get the ball rolling on issuing an advisory | |
| 16:35:57 | fungi | and thanks for taking the time to explain this to me in such detail! | |
| 16:36:26 | mriedem | we'll want a release note on the os-vif change, we'll bump upper-constraints on stable but not lower-constraints, | |
| 16:36:31 | sean-k-mooney | fungi: no worries. i probably went into too much detail :) | |
| 16:36:43 | mriedem | it's unclear to me what, if any, side effects we could have on stable with different versions of ovs/libvirt being used | |
| 16:37:04 | mriedem | e.g. will libvirt complain if the port already exists because os-vif created it? | |
| 16:37:17 | fungi | yeah, some input on whether this is deemed safe enough to backport would also be most welcome | |
| 16:37:19 | mriedem | would libvirt create a duplicate? | |
| 16:37:20 | sean-k-mooney | this wont be effected by ovs. it may or may not be effected by libvirt version | |
| 16:37:55 | sean-k-mooney | mriedem: that is a good question and why i create https://review.openstack.org/#/c/602432/2 in the first place | |
| 16:38:18 | sean-k-mooney | i was expecting libvirt to be unhappy but the os-vif change passed tempest | |
| 16:39:33 | sean-k-mooney | mriedem: i think libivrt is doing th right thing here and recognising the port exits but it would be good to validate this espcially when backporting | |
| 16:40:56 | mriedem | you might want to start getting the backports lined up before we merge anything on master | |
| 16:41:29 | mriedem | i know we at least test different versions of libvirt in the gate between pike/queens and rocky/stein | |
| 16:42:23 | sean-k-mooney | mriedem: right ill -w the patch for now and respin with the release note then backport | |
| 16:43:41 | sean-k-mooney | i would be less comfrotable about backporting the nova change then the os-vif change to be hoenst as i dont really trust the libvirt ethernet type | |
| 16:57:34 | sean-k-mooney | moshele: you mentioned that macvtap livemigration was broken after the multiple port binings change. | |
| 16:58:41 | sean-k-mooney | moshele: i have fixed part of the issue locally but looking at https://github.com/openstack/nova/blame/fc58addab06134d7e6274a94d1ce456b0328723f/nova/network/neutronv2/api.py#L3054-L3062 live migration should have always been broken as the pci_mappings are only populated on cold migrate | |
| 16:58:48 | moshele | sean-k-mooney: broken if you don't need to update the pci address | |
| 16:59:52 | moshele | sean-k-mooney: it always broken if we need to change the pci_adress but if it the same on src and dest it should work (I think) | |
| 17:00:21 | sean-k-mooney | so i was able to migate the vm but nothing actully claimed the pci device on the new node | |
| 17:00:43 | sean-k-mooney | as a result we hit the exception in the else clause in post live migrate dest | |
| 17:00:45 | openstackgerrit | Jan Gutter proposed openstack/os-vif master: Add support for generic representors https://review.openstack.org/608693 | |
| 17:01:22 | sean-k-mooney | moshele: cold migrate was definetly broken but i dont think upstream nova ever wroked with livemigation due to that check | |
| 17:02:32 | sean-k-mooney | i.e. cold migrate used to work before multilple port binidngs | |
| 17:05:03 | moshele | sean-k-mooney: so live migration with macvtap never worked, but the multiple port binding a new bug to it | |
| 17:06:22 | sean-k-mooney | moshele: basically yes. so when i apply https://review.openstack.org/#/c/607365/ locally it correct the multiple port binding issue and live migrtion only fails because we dont claim the device on teh destination node | |
| 17:07:01 | sean-k-mooney | assumeing the pci address does not change. i.e. we also are missing the xml update code. | |
| 17:07:47 | sean-k-mooney | in anycase im going to lookin to how we do the claim in the cold migrate case and see if i can reuse that for live migration. | |
| 17:08:23 | moshele | sean-k-mooney: we can't be cause it use the migration context (move_claim) | |
| 17:09:18 | moshele | sean-k-mooney: we need just to call the pci resource tracker to claim it (and not call the move_claim) | |
| 17:09:53 | sean-k-mooney | ya i have scked that out also but i want to get migration without the claim working first then ill add the claim | |
| 17:11:04 | moshele | this is the cold migration and resize claim https://github.com/openstack/nova/blob/b4a3cdbe6e6a139dc11730c3046b728fb13d52e9/nova/compute/resource_tracker.py#L310-L354 | |
| 17:11:18 | sean-k-mooney | im just going to comment out the exception in the else block for now and add a todo/log then once i have migration back and fort working reliable with a singel vm ill add the claim logic and xml update code | |
| 17:11:24 | moshele | we should sub set of this just for pci | |
| 17:12:29 | sean-k-mooney | cool thanks yes what i really just wanted to grab out of that was how it was calling the resouce tracker to do the claim fo the devices as i was going to do it simlarly | |
| 17:13:13 | sean-k-mooney | anyway im going to go grab dinner but just wanted to checkin with you on the migration work. | |
| 17:15:01 | moshele | sean-k-mooney: let do a meeting about this thursday when adrianc will be back to sync on everything | |
| 18:06:08 | mriedem | guh, instance.launched_on, why | |
| 18:14:17 | mriedem | dansmith: true story, resize_claim doesn't handle volume-backed instance disk usage reporting properly yet... | |
| 18:20:21 | mdbooth | mriedem: Do we have an etherpad for BFV gaps? | |
| 18:20:33 | mriedem | not that i know of | |
| 18:21:22 | openstack | Launchpad bug 1796737 in OpenStack Compute (nova) "resize: hypervisor local_gb_used still reports usage even with volume-backed instances after fix for bug 1469179" [Undecided,New] | |
| 18:21:22 | mriedem | https://bugs.launchpad.net/nova/+bug/1796737 | |
| 18:21:43 | mriedem | i only hit this b/c of some functional tests in my cross-cell resize bafoonery | |
| 18:22:21 | mdbooth | You going to see how deep the rabbit hole goes? | |
| 18:22:25 | mdbooth | Or move on... | |
| 18:22:41 | mriedem | it's a relatively easy fix, | |
| 18:22:57 | mriedem | but i'll be commenting this out in my cross-cell resize test until fixed | |
| 18:24:16 | openstack | bug 1469179 in OpenStack Compute (nova) "instance.root_gb should be 0 for volume-backed instances" [Medium,Fix released] https://launchpad.net/bugs/1469179 - Assigned to Dan Smith (danms) | |
| 18:24:16 | melwitt | I wonder if the old func test from my NAKed bug 1469179 interim fix would be helpful. it did things like verify local_gb not reported after resize, shelve etc | |
| 18:25:09 | mriedem | it's a very easy recreate | |
| 18:25:14 | mriedem | resize a volume-backed instance and check disk usage | |