[GENIUS-112] egress lport dispatcher table (220) flow entries are not created in OVS after its upgrade Created: 08/Feb/18  Updated: 01/Mar/18  Resolved: 01/Mar/18

Status: Resolved
Project: genius
Component/s: General
Affects Version/s: None
Fix Version/s: Oxygen

Type: Bug Priority: Medium
Reporter: Periyasamy Palanisamy Assignee: Faseela K
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: Text File flow-group-dumps.txt     Text File inventory-dumps.txt    
Priority: High

 Description   

I have OVS installed with version 2.8.0 and configured it with ODL for establishing BGVPN with DC-GW.

Later I have upgraded OVS to 2.8.2 (installed from source i.e. branch-2.8) for one of the L3 packet re-circulation issue.

The upgrade is done on the OVS after deleting VMs attached to the compute, VxLAN and GRE interfaces, openvswitch-switch stop, dpkg -r openvswitch-switch and dpkg --purge openvswitch-switch.

After the upgrade I could establish the tenant network with VMs attached to the compute. But ODL doesn't program egress lport dispatcher table flow (220) entries for GRE tunnel interface. 

This causes traffic between tenant VM and DC-GW fails.

interface ds dumps and snippet of karaf log: https://hastebin.com/zuyepiwuya.bash

inventory, flow/group, ovs-vsctl show dumps attached.

 



 Comments   
Comment by Faseela K [ 09/Feb/18 ]

Peri, from the given DS dumps perspective, could you please tell us, how many computes do you have? You have only one OVS with 2.8.2 installed?

Comment by Periyasamy Palanisamy [ 09/Feb/18 ]

Faseela, Its a single compute upgraded to 2.8.2 and another OVS is for neutron agent node which is still with 2.8.0.

Comment by Nobin Mathew [ 09/Feb/18 ]

Peri, Can you provide, DS output and karaf logs. Current DS output has only inventory.

 

 

Comment by Periyasamy Palanisamy [ 09/Feb/18 ]

cloudy, you can find the interface ds dumps and snippet of karaf logs at https://hastebin.com/zuyepiwuya.bash

 

Comment by Nobin Mathew [ 14/Feb/18 ]

Peri, which version of ODL you are using, is it nitrogen or nitrogen-sr1?

Comment by Periyasamy Palanisamy [ 14/Feb/18 ]

its with nitrogen-sr1 build and used ODL deb package built from https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/karaf/0.7.1/

 

Comment by Nobin Mathew [ 16/Feb/18 ]

Peri, we are able to reproduce the issue locally, we are looking into the logs.

But why you are deleting the mpls tunnel interface before upgrade? this upgrade should work properly if you are not deleting the interface.

 

Comment by Periyasamy Palanisamy [ 19/Feb/18 ]

This issue is even reproducible when we upgrade OVS without having tunnels interfaces. Later when GRE and VxLAN interfaces are created on the compute, egress dispatcher table flow is missing for GRE tunnel interface.

Comment by Nobin Mathew [ 20/Feb/18 ]

After going through the logs, it seems there is race condition between InterfaceInventoryStateListener add and update.

Working on the fix.

Comment by Nobin Mathew [ 21/Feb/18 ]

This is a race condition proplem. Both add and update came very close, but in order.

Add Goes through BatchingManager and not update, batching manager is not able process all the add's transactions before update's transaction. This results in updating an non-existing interface state, which results in a empty interface state with just interface op status. Now service binding from add kicks in and it tries to access partial interface state and this results in NullPointerException, and hence no table 220.

Comment by Nobin Mathew [ 21/Feb/18 ]

https://git.opendaylight.org/gerrit/#/c/68480/

Generated at Wed Feb 07 19:59:56 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.