rconn: Speed up in-band control connections, by caching the remote address.
authorBen Pfaff <blp@nicira.com>
Wed, 2 Sep 2009 19:52:50 +0000 (12:52 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 2 Sep 2009 19:52:50 +0000 (12:52 -0700)
commit19d1ab55ae8d2762e04df72f69c17667ef649d0a
tree57e606630dbc0ac09c90b459c2ed7a923e8ed8ce
parent0ad9b732910b8f1aa7fc47ea57ff79e7618a4e6d
rconn: Speed up in-band control connections, by caching the remote address.

In-band control needs to know the IP and port of the controller, so that
it can set up the correct flows to talk to that controller.  Until now,
the rconn code has only made this available when a connection was actually
in progress.  This means that, say, ARP packets will not be allowed through
when the rconn backs off.  The same is true of packets sent by switches
that access the controller through this one.

This commit makes the rconn cache the remote IP and port and local IP
across connection attempts, improving the situation.  In particular, it
reduces the overall amount of time that it takes to connect in my own
simple test case from over 10 seconds to about 2 seconds.
lib/rconn.c