Make the secure channel and controller send out keepalives.
authorBen Pfaff <blp@nicira.com>
Tue, 1 Jul 2008 18:14:45 +0000 (11:14 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 1 Jul 2008 18:14:45 +0000 (11:14 -0700)
commitbebf175930564a8eafdb63a0ad69df17d70ada18
treef2b8462e280979504afbf3a5791d902b47b15086
parent88df6edbfaa4d4943e9f74f79973225c1c53297f
Make the secure channel and controller send out keepalives.

It can happen that the secure channel thinks that it is connected
to the controller, but in fact the connection has dropped.  For
example, a switch intermediate between the secure channel and the
controller could have a flow inserted, due to a malfunction, that
causes packets in one direction or the other to be dropped.  When
this happens, the Linux kernel's TCP implementation will continue
retransmitting packets for somewhere between 13 and 30 minutes,
depending on the connection's retransmission timeout (according
to linux/Documentation/networking/ip-sysctl.txt) with the default
Linux settings.

We want to detect the lost connection and re-connect much faster
than that.  We use OpenFlow echo request and reply messages: if
no message is received from the controller for N seconds, we
send out an echo request.  If no reply (actually, any message at
all) is received for an additional N seconds, then we assume
that the connection has been lost, and reconnect.
include/rconn.h
include/vconn.h
lib/rconn.c
lib/vconn.c
secchan/secchan.8.in
secchan/secchan.c
switch/switch.c