Upgrade Research - Ordering Issues
Introduction
Single node w/ external net and floating ip
Default NAT Flow for External Network
This flow is not present on OVS after “upgrade”:
table=21, priority=10,ip,metadata=0x30d42/0xfffffe actions=group:225000 (checks the VRF id and forwards to a group that outputs to the external interface)
The flow is in fact written by ODL but rejected by OVS because group:225000 is not present at the time the flow is written.
Group:225000 is not written because at the time that is triggered (twice, actually) there is no /elan-interfaces/elan-interface for the external network (trunk) port because OVS has not yet connected.
FloatingIpListener.createNatFlowEntries
This method depends on information from SouthBound that is not present before OVS connects.
Zero returned here due to lack of /interfaces-state/interface
FloatingIpListener.createNatFlowEntries II
Later in that method a call is made to VpnFloatingIpHandler.onAddFloatingIp where we find:
A few frames up-stack from here (NatEvpnUtil. addRoutesForVxLanProvType) the flow is aborted due to this null value
nextHopIp is null because DPN-TEPs-info not created yet
VpnManagerImpl.setupArpResponderFlowsToExternalNetworkIps
Null because /elan-dpn-interfaces/etc. Does not exist yet. It’s only created once OVS connects.
Issue with order of net-odl sync
Dual-node w/ auto-created vxlan tunnels
VxLan tunnel flows not present after upgrade (genius)
Proposed Infrastructure for fixes
Global “upgrading” flag
Generic “wait for X and execute this lambda”
Changes - also see COMMENTS on previous slides...