Skip to content

Commit

Permalink
ovn-controller: Disable probes by default for unix sockets.
Browse files Browse the repository at this point in the history
Normally the OVS JSON-RPC library does not probe idle connections across
Unix domain sockets, since the kernel can tell OVS whether the connections
are truly connected without probes, but ovn-controller carelessly
overrode that.

(This should not be an issue in typical OVN deployments, because the OVN SB
database is normally accessed via TCP or SSL.)

CC: Nirapada Ghosh <[email protected]>
Fixes: 715038b ("ovn-controller: reload configured SB probe timer")
Signed-off-by: Han Zhou <[email protected]>
Co-authored-by: Ben Pfaff <[email protected]>
Signed-off-by: Ben Pfaff <[email protected]>
  • Loading branch information
hzhou8 and blp committed May 3, 2017
1 parent 3f374f7 commit c1d6d3d
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions ovn/controller/ovn-controller.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ static unixctl_cb_func inject_pkt;
#define DEFAULT_BRIDGE_NAME "br-int"
#define DEFAULT_PROBE_INTERVAL_MSEC 5000

static void update_probe_interval(struct controller_ctx *);
static void update_probe_interval(struct controller_ctx *,
const char *ovnsb_remote);
static void parse_options(int argc, char *argv[]);
OVS_NO_RETURN static void usage(void);

Expand Down Expand Up @@ -599,7 +600,7 @@ main(int argc, char *argv[])
.ovnsb_idl_txn = ovsdb_idl_loop_run(&ovnsb_idl_loop),
};

update_probe_interval(&ctx);
update_probe_interval(&ctx, ovnsb_remote);

update_ssl_config(ctx.ovs_idl);

Expand Down Expand Up @@ -930,14 +931,21 @@ inject_pkt(struct unixctl_conn *conn, int argc OVS_UNUSED,
/* Get the desired SB probe timer from the OVS database and configure it into
* the SB database. */
static void
update_probe_interval(struct controller_ctx *ctx)
update_probe_interval(struct controller_ctx *ctx, const char *ovnsb_remote)
{
const struct ovsrec_open_vswitch *cfg
= ovsrec_open_vswitch_first(ctx->ovs_idl);
int interval = (cfg
? smap_get_int(&cfg->external_ids,
"ovn-remote-probe-interval",
DEFAULT_PROBE_INTERVAL_MSEC)
: DEFAULT_PROBE_INTERVAL_MSEC);
int interval = -1;
if (cfg) {
interval = smap_get_int(&cfg->external_ids,
"ovn-remote-probe-interval",
-1);
}
if (interval == -1) {
interval = stream_or_pstream_needs_probes(ovnsb_remote)
? DEFAULT_PROBE_INTERVAL_MSEC
: 0;
}

ovsdb_idl_set_probe_interval(ctx->ovnsb_idl, interval);
}

0 comments on commit c1d6d3d

Please sign in to comment.