Skip to content

Commit

Permalink
ofproto: Bridge del causing trafic drop for all VM.
Browse files Browse the repository at this point in the history
RCA: This issue was reported in multi-bridge OVS environment, having
dynamic bridges. Each VM is tied with one bridge via vhu and a VM
add/del causes bridge add/del. We found individual bridge deletion,
while deleting VM was impacting overall OVS traffic, causing temp
traffic outage even for other unrelated VMs. The packets are dropped
with datapath_drop_lock_error coverage counter. We found that when
deleting a bridge, we disable upcall for some time and flush entire
dpctl flows. As we donot have per bridge dpctl flow, so any packets
coming during this period of time will miss dpctl flow and go for
upcall, which being disabled now will be dropped.

Fix is to bypass "ofproto_class->flush(ofproto)", once this callback
holds the lock and dp flows flushed, leads to complete traffic outage.

As per our analysis for userspace datapath, no call to udpif_flush()
is needed to flush all datapath flows. Instead needed flows will be
auto-deleted for required bridge with port deletion or port destroy
APIs which already called further in codeflow during bridge add/del
sequence.

Signed-off-by: Vipul Ashri <vipul.ashri@ericsson.com>
Signed-off-by: 0-day Robot <robot@bytheb.org>
  • Loading branch information
Vipul Ashri authored and ovsrobot committed Feb 7, 2025
1 parent ed13350 commit 7e7be2f
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions ofproto/ofproto.c
Original file line number Diff line number Diff line change
Expand Up @@ -1685,8 +1685,9 @@ ofproto_flush__(struct ofproto *ofproto, bool del)
{
struct oftable *table;

/* This will flush all datapath flows. */
if (del && ofproto->ofproto_class->flush) {
/* This will flush all dp flows, only if datapath is not userspace. */
if (del && ofproto->ofproto_class->flush
&& !strcmp(ofproto->type, "system")) {
ofproto->ofproto_class->flush(ofproto);
}

Expand Down

0 comments on commit 7e7be2f

Please sign in to comment.