secchan: Better tolerate failing controller admission control in fail-open.
authorBen Pfaff <blp@nicira.com>
Wed, 16 Sep 2009 22:12:19 +0000 (15:12 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 16 Sep 2009 22:12:27 +0000 (15:12 -0700)
commit7778bd15dacc1e410b60ff6ec2996c475a875e6e
tree49eaedf3e0c1c5017e7eb1f4c2fed0312d5397ca
parent372179d4f4a1dc6113bc4ea60cee76cb354e22f4
secchan: Better tolerate failing controller admission control in fail-open.

When the switch is configured to connect to a controller that accepts
connections, waits a few seconds, and then disconnects without setting up
flows, currently this causes "fail-open" to flush the flow table and
stop setting up new flows during the connection duration.  This is OK if
it happens once, but it can easily happen every 8 seconds with typical
backoff settings, and that isn't so great.

This commit changes fail-open to only flush the flow table once the switch
appears to have been admitted by the controller, which prevents these
frequent network interruptions.

Thanks to Jesse Gross for especially valuable feedback.

QA notes: Behavior in fail-open and especially behavior with a controller
that rejects the switch after it connects needs to be re-tested.  The
ovs-controller --mute switch added by this commit is one simple way to
create such a controller.

CC: Peter Balland <peter@nicira.com>
Bug #1695.  Bug #2055.
lib/rconn.c
lib/rconn.h
secchan/fail-open.c
secchan/fail-open.h
secchan/ofproto.c
secchan/pktbuf.c
secchan/pktbuf.h
utilities/ovs-controller.8.in
utilities/ovs-controller.c