Bug 1628905

Summary: systemctl reload openvswitch includes default flow.
Product: Red Hat Enterprise Linux 7 Reporter: Timothy Redaelli <tredaelli>
Component: openvswitch2.10Assignee: Timothy Redaelli <tredaelli>
Status: CLOSED ERRATA QA Contact: Rick Alongi <ralongi>
Severity: high Docs Contact:
Priority: high    
Version: 7.5CC: atragler, ctrautma, fleitner, kfida, ovs-qe, ovs-team, qding, ralongi, rkhan
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: openvswitch2.10-2.10.0-5.el7fdp Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1626096 Environment:
Last Closed: 2018-09-20 20:13:35 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Timothy Redaelli 2018-09-14 10:07:38 UTC
+++ This bug was initially created as a clone of Bug #1626096 +++

Description of problem:
The flows should be restored when issuing a service reload, however the default flow is not removed when it starts and becomes part of the final flow table.

// installed version
# rpm -q openvswitch
openvswitch-2.9.0-56.el7fdp.x86_64

// adding an example of flow table
# ovs-ofctl del-flows ovsbr0 
# ovs-ofctl add-flow ovsbr0 'in_port=10 actions=output:20'
# ovs-ofctl add-flow ovsbr0 'in_port=20 actions=output:10'
# ovs-ofctl add-flow ovsbr0 'actions=drop'

// Dumping the flows
# ovs-ofctl dump-flows ovsbr0 
 cookie=0x0, duration=24.416s, table=0, n_packets=0, n_bytes=0, in_port=veth1 actions=output:veth2
 cookie=0x0, duration=18.466s, table=0, n_packets=0, n_bytes=0, in_port=veth2 actions=output:veth1
 cookie=0x0, duration=7.818s, table=0, n_packets=0, n_bytes=0, actions=drop

// Reload the service
# systemctl reload openvswitch 

// Dump the flow table again to check
[root@localhost ~]# ovs-ofctl dump-flows ovsbr0 
 cookie=0x0, duration=3.136s, table=0, n_packets=0, n_bytes=0, in_port=veth1 actions=output:veth2
 cookie=0x0, duration=3.136s, table=0, n_packets=0, n_bytes=0, in_port=veth2 actions=output:veth1
 cookie=0x0, duration=3.151s, table=0, n_packets=0, n_bytes=0, priority=0 actions=NORMAL
 cookie=0x0, duration=3.136s, table=0, n_packets=0, n_bytes=0, actions=drop


Notice the default 'actions=NORMAL' is added to the flow table.

Expected results:
The flow table is restored as it was before the reloading the service.

--- Additional comment from Timothy Redaelli on 2018-09-10 16:21:12 CEST ---

Patch sent on OVS mailing list: https://mail.openvswitch.org/pipermail/ovs-dev/2018-September/351970.html

Comment 4 Rick Alongi 2018-09-14 17:19:47 UTC
Reproduced issue:

[root@netqe11 yum.repos.d]# rpm -q openvswitch
openvswitch-2.9.0-56.el7fdp.x86_64

systemctl start openvswitch

# add bridge and flows

ovs-vsctl --if-exists del-br obrbr0
ovs-vsctl add-br ovsbr0

ovs-ofctl del-flows ovsbr0 
ovs-ofctl add-flow ovsbr0 'in_port=10 actions=output:20'
ovs-ofctl add-flow ovsbr0 'in_port=20 actions=output:10'
ovs-ofctl add-flow ovsbr0 'actions=drop'

ovs-ofctl dump-flows ovsbr0

[root@netqe11 yum.repos.d]# ovs-ofctl dump-flows ovsbr0
 cookie=0x0, duration=28.241s, table=0, n_packets=0, n_bytes=0, in_port=10 actions=output:20
 cookie=0x0, duration=28.238s, table=0, n_packets=0, n_bytes=0, in_port=20 actions=output:10
 cookie=0x0, duration=28.235s, table=0, n_packets=0, n_bytes=0, actions=drop
 
 systemctl reload openvswitch
 
 # observe issue where NORMAL flow rule is added after systemctl reload openvswitch
 
 [root@netqe11 yum.repos.d]# ovs-ofctl dump-flows ovsbr0
 cookie=0x0, duration=5.715s, table=0, n_packets=0, n_bytes=0, in_port=10 actions=output:20
 cookie=0x0, duration=5.715s, table=0, n_packets=0, n_bytes=0, in_port=20 actions=output:10
 cookie=0x0, duration=5.731s, table=0, n_packets=0, n_bytes=0, priority=0 actions=NORMAL
 cookie=0x0, duration=5.715s, table=0, n_packets=0, n_bytes=0, actions=drop

# Upgrade to OVS 2.10 with fix

[root@netqe11 yum.repos.d]# rpm -q openvswitch2.10
openvswitch2.10-2.10.0-5.el7fdp.x86_64

systemctl start openvswitch

# Add flows

ovs-vsctl --if-exists del-br obrbr0
ovs-vsctl add-br ovsbr0

ovs-ofctl del-flows ovsbr0 
ovs-ofctl add-flow ovsbr0 'in_port=10 actions=output:20'
ovs-ofctl add-flow ovsbr0 'in_port=20 actions=output:10'
ovs-ofctl add-flow ovsbr0 'actions=drop'

[root@netqe11 yum.repos.d]# ovs-ofctl dump-flows ovsbr0
 cookie=0x0, duration=8.554s, table=0, n_packets=0, n_bytes=0, in_port=10 actions=output:20
 cookie=0x0, duration=8.548s, table=0, n_packets=0, n_bytes=0, in_port=20 actions=output:10
 cookie=0x0, duration=8.541s, table=0, n_packets=0, n_bytes=0, actions=drop
 
 [root@netqe11 yum.repos.d]# systemctl reload openvswitch
 
 # NORMAL flow rule is no longer added after systemctl reload openvswitch
 
 [root@netqe11 yum.repos.d]# ovs-ofctl dump-flows ovsbr0
 cookie=0x0, duration=8.366s, table=0, n_packets=0, n_bytes=0, in_port=10 actions=output:20
 cookie=0x0, duration=8.366s, table=0, n_packets=0, n_bytes=0, in_port=20 actions=output:10
 cookie=0x0, duration=8.366s, table=0, n_packets=0, n_bytes=0, actions=drop
 
 Marking as Verified.

Comment 6 errata-xmlrpc 2018-09-20 20:13:35 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2018:2735