Comment 9 for bug 2069543

Revision history for this message
Bence Romsics (bence-romsics) wrote :

I think I understand the root cause now, which is twofold:

* The first part is what I already mentioned in comment #8. We have changed how we make a port dead in neutron, but forgot to do the same in os-vif. Instead of tag=4095 the port should have all these set:

tag : 4095
trunks : [4095]
vlan_mode : trunk

* The second part is, that for trunk ports we have the following datapath wiring:

|I|tpi--tpt|T|
|N|spi--spt|B|tap
|T|spi--spt|R|

os-vif puts the tap in the dead vlan, however ovs-agent assigns the vlan overriding the dead vlan on the tpi/spi ports. os-vif does not and should not know about anything but the tap and the tbr. ovs-agent wants to handle the tpi/spi ports as any other non-trunk vif. The non-trunk-specific code inside ovs-agent will never touch the tap. Something similar to the workaround in comment #3 could be the proper solution to this part.

With isolate_vif=False we did not notice that we do not remove the tap from the dead vlan, because we never put it in the dead vlan in the first place.

Hope to propose a fix tomorrow.