2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-30 22:05:19 +00:00
Commit Graph

14209 Commits

Author SHA1 Message Date
Andy Zhou
31b29c2ed3 ofproto: Meter sample action when configured.
When slowpath meter is configured, add meter action when translate
sample action.

Signed-off-by: Andy Zhou <azhou@ovn.org>
Acked-by: Jarno Rajahalme <jarno@ovn.org>
2017-04-28 14:22:03 -07:00
Andy Zhou
9e638f223f ofproto: Support action upcall meters
Allow action upcall meters, i.e. slowpath and controller meters,
to be added and displayed.

Keep track of datapath meter ID of those action upcall meters in
ofproto to aid action translation. Later patches will make use of them.

Signed-off-by: Andy Zhou <azhou@ovn.org>
Acked-by: Jarno Rajahalme <jarno@ovn.org>
2017-04-28 14:22:03 -07:00
Andy Zhou
333ad77dbd ofproto-dpif: Add 'meter_ids' to backer
Add 'meter_ids', an id-pool object to manage datapath meter id, i.e.
provider_meter_id.

Currently, only userspace datapath supports meter, and it implements
the provider_meter_id management. Moving this function to 'backer'
allows other datapath implementation to share the same logic.

Signed-off-by: Andy Zhou <azhou@ovn.org>
Acked-by: Jarno Rajahalme <jarno@ovn.org>
2017-04-28 14:22:03 -07:00
Andy Zhou
ba8cff36bb ofproto: Store meters using hmap
Currently, meters are stored in a fixed pointer array. It is not
very efficient since the controller, at least in theory, can
pick any meter id (up to the limits to uint32_t), not necessarily
within the lower end of a region, or in close range to each other.
In particular, OFPM_SLOWPATH and OFPM_CONTROLLER meters are specified
at the high region.

Switching to using hmap. Ofproto layer does not restrict
the number of meters that controller can add, nor does it care
about the value of meter_id. Datapth limits the number of meters
ofproto layer can support at run time.

Signed-off-by: Andy Zhou <azhou@ovn.org>
Acked-by: Jarno Rajahalme <jarno@ovn.org>
2017-04-28 14:00:58 -07:00
Jarno Rajahalme
adfe7a0b57 xlate: Use OVS_CT_ATTR_EVENTMASK.
Specify the event mask with CT commit including bits for CT features
exposed at the OVS interface (mark and label changes in addition to
basic creation and destruction of conntrack entries).

Without this any listener of conntrack update events will typically
(depending on system configuration) receive events for each L4 (e.g.,
TCP) state machine change, which can multiply the number of events
received per connection.

By including the new, related, and destroy events any listener of new
conntrack events gets notified of new related and non-related
connections, and any listener of destroy events will get notified of
deleted (typically timed out) conntrack entries.

By including the flags for mark and labels, any listener of conntrack
update events gets notified whenever the connmark or conntrack labels
are changed from the values reported within the new events.

VMware-BZ: #1837218
Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
Acked-by: Joe Stringer <joe@ovn.org>
2017-04-28 12:53:40 -07:00
Lance Richardson
cd6121410b rhel: add python-sphinx as a build dependency
The python-sphinx package is now required in order to build
man pages, add this package as a build requirement.

Reported-by: Leif Madsen <lmadsen@redhat.com>
Signed-off-by: Lance Richardson <lrichard@redhat.com>
Acked-By: Leif Madsen <lmadsen@redhat.com>
Tested-By: Leif Madsen <lmadsen@redhat.com>
Signed-off-by: Russell Bryant <rbryant@redhat.com>
2017-04-28 12:06:05 -04:00
Jarno Rajahalme
d0e4206230 tests: ICMP related to original direction test.
Normally ICMP responses are in the reply direction of a conntrack
entry.  This test exercises an ICMP response to the original direction
of the conntrack entry.

Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
Acked-by: Joe Stringer <joe@ovn.org>
2017-04-27 17:31:00 -07:00
Jarno Rajahalme
35ed87230d datapath-windows: Add missing IPCT_LABEL.
Add the missing enum definition for IPCT_LABEL.

Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
Acked-by: Sairam Venugopal <vsairam@vmware.com>
2017-04-27 11:32:35 -07:00
Jarno Rajahalme
3618f466d6 datapath: Delete conntrack entry clashing with an expectation.
Upstream commit:

    commit cf5d70918877c6a6655dc1e92e2ebb661ce904fd
    Author: Jarno Rajahalme <jarno@ovn.org>
    Date:   Fri Apr 14 14:26:38 2017 -0700

    openvswitch: Delete conntrack entry clashing with an expectation.

    Conntrack helpers do not check for a potentially clashing conntrack
    entry when creating a new expectation.  Also, nf_conntrack_in() will
    check expectations (via init_conntrack()) only if a conntrack entry
    can not be found.  The expectation for a packet which also matches an
    existing conntrack entry will not be removed by conntrack, and is
    currently handled inconsistently by OVS, as OVS expects the
    expectation to be removed when the connection tracking entry matching
    that expectation is confirmed.

    It should be noted that normally an IP stack would not allow reuse of
    a 5-tuple of an old (possibly lingering) connection for a new data
    connection, so this is somewhat unlikely corner case.  However, it is
    possible that a misbehaving source could cause conntrack entries be
    created that could then interfere with new related connections.

    Fix this in the OVS module by deleting the clashing conntrack entry
    after an expectation has been matched.  This causes the following
    nf_conntrack_in() call also find the expectation and remove it when
    creating the new conntrack entry, as well as the forthcoming reply
    direction packets to match the new related connection instead of the
    old clashing conntrack entry.

    Fixes: 7f8a436eaa2c ("openvswitch: Add conntrack action")
    Reported-by: Yang Song <yangsong@vmware.com>
    Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
    Acked-by: Joe Stringer <joe@ovn.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>

Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
Acked-by: Joe Stringer <joe@ovn.org>
2017-04-27 10:46:25 -07:00
Jarno Rajahalme
9facffe87c datapath: nf_connlabels_replace() backport.
Upstream commit 5a8145f7b222 ("netfilter: labels: don't emit ct event
if labels were not changed"), released in Linux 4.7, changed
nf_connlabels_replace() to trigger conntrack event for a label change
only when the labels actually changed.  Without this change an update
event is triggered even if the labels already have the values they are
being set to.

There is no way we can detect this functional change from Linux
headers, so provide replacements that work the same for older Linux
releases regardless if a distribution provides backports or not.

VMware-BZ: #1837218
Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
Acked-by: Joe Stringer <joe@ovn.org>
2017-04-27 10:43:18 -07:00
Jarno Rajahalme
8e83854cf2 datapath: Add eventmask support to CT action.
Upstream commit:

    commit 120645513f55a4ac5543120d9e79925d30a0156f
    Author: Jarno Rajahalme <jarno@ovn.org>
    Date:   Fri Apr 21 16:48:06 2017 -0700

    openvswitch: Add eventmask support to CT action.

    Add a new optional conntrack action attribute OVS_CT_ATTR_EVENTMASK,
    which can be used in conjunction with the commit flag
    (OVS_CT_ATTR_COMMIT) to set the mask of bits specifying which
    conntrack events (IPCT_*) should be delivered via the Netfilter
    netlink multicast groups.  Default behavior depends on the system
    configuration, but typically a lot of events are delivered.  This can be
    very chatty for the NFNLGRP_CONNTRACK_UPDATE group, even if only some
    types of events are of interest.

    Netfilter core init_conntrack() adds the event cache extension, so we
    only need to set the ctmask value.  However, if the system is
    configured without support for events, the setting will be skipped due
    to extension not being found.

    Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
    Reviewed-by: Greg Rose <gvrose8192@gmail.com>
    Acked-by: Joe Stringer <joe@ovn.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
Acked-by: Joe Stringer <joe@ovn.org>
2017-04-27 10:34:42 -07:00
Jarno Rajahalme
100f4e1451 datapath: Typo fix.
Upstream commit:

    commit abd0a4f2b41812e9ba334945e256909e3d28da57
    Author: Jarno Rajahalme <jarno@ovn.org>
    Date:   Fri Apr 21 16:48:05 2017 -0700

    openvswitch: Typo fix.

    Fix typo in a comment.

    Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
    Acked-by: Greg Rose <gvrose8192@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
Acked-by: Joe Stringer <joe@ovn.org>
2017-04-27 10:34:42 -07:00
Joe Stringer
b5a7587811 revalidator: Improve logging for transition_ukey().
There are a few cases where more introspection into ukey transitions
would be relevant for logging or assertion. Track the SOURCE_LOCATOR and
thread id when states are transitioned and use these for logging.

Suggested-by: Jarno Rajahalme <jarno@ovn.org>
Signed-off-by: Joe Stringer <joe@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2017-04-27 09:44:22 -07:00
Joe Stringer
6997d54e1c revalidator: Avoid assert in transition_ukey().
There is a case where a flow is dumped from the kernel after the ukey is
already transitioned into an EVICTING/EVICTED/DELETED state, and the
revalidator thread attempts to shift that into UKEY_OPERATIONAL because
it was able to dump the flow from the datapath. This resulted in
triggering the assert in transition_ukey(). Detect this condition and
skip handling the flow (as it's already on its way out).

Users report:
> Program terminated with signal SIGABRT, Aborted.
> raise () from /lib/x86_64-linux-gnu/libc.so.6
> raise () from /lib/x86_64-linux-gnu/libc.so.6
> abort () from /lib/x86_64-linux-gnu/libc.so.6
> ovs_abort_valist
> vlog_abort_valist
> vlog_abort
> ovs_assert_failure
> transition_ukey (ukey=<optimized out>, dst=<optimized out>)
>     at ofproto/ofproto-dpif-upcall.c:1674
> revalidate (revalidator=0x1cb36c8) at ofproto/ofproto-dpif-upcall.c:2324
> udpif_revalidator (arg=0x1cb36c8) at ofproto/ofproto-dpif-upcall.c:901
> ovsthread_wrapper (aux_=<optimized out>) at lib/ovs-thread.c:348
> start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
> clone () from /lib/x86_64-linux-gnu/libc.so.6

VMware-BZ: #1857694
Signed-off-by: Joe Stringer <joe@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2017-04-27 09:20:43 -07:00
Russell Bryant
2881fe463b ovn: Bump ovn-nb schema version.
Commit b89d25e569 made the "router" DHCPv4 option optional instead of
mandatory.  This did not actually change the schema, but there's no good
way for a client of the northbound database to know if this change is
present without bumping the schema version.  This is needed for a client to
work with versions before and after this change.

Reported-at: https://bugs.launchpad.net/networking-ovn/+bug/1670666
Fixes: b89d25e569 ("ovn: Modify the DHCPv4 router option to optional")
Signed-off-by: Russell Bryant <russell@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2017-04-27 08:21:42 -04:00
Joe Stringer
4decc1bf43 MAINTAINERS: Update committer documentation refs.
These references have moved since the MAINTAINERS file was introduced.
Update them.

Signed-off-by: Joe Stringer <joe@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2017-04-25 13:52:16 -07:00
Ben Pfaff
9a84f468df ovs-ofctl: Document group selection algorithm.
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Jarno Rajahalme <jarno@ovn.org>
2017-04-24 12:58:25 -07:00
Ben Pfaff
fefb757ce4 debian, xenserver: Update logrotate config to match RHEL.
Commit 618a5b45ae ("rhel: Avoid logrotate error if /var/run/openvswitch
does not exist") updated the RHEL logrotate configuration.  This commit
makes similar changes for Debian, by synchronizing with the RHEL version.

In particular:

    - Indent to match logrotate.conf(5) examples.

    - Use "sharedscripts" flag, because the postrotate script only needs to
      run once regardless of the number of rotations.

    - Drop "delaycompress", because the postrotate script does make daemons
      reopen their log files.

    - Ignore errors calling vlog/reopen.

Also make similar changes to the xenserver logrotate script.  I confirmed
via Twitter that the xenserver packaging still has users.

CC: Timothy Redaelli <tredaelli@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Gurucharan Shetty <guru@ovn.org>
2017-04-24 12:51:25 -07:00
Sha Zhang
3570f7e437 ofproto-dpif-xlate: Fix the memory leak in netflow.
The memory leak was triggered each time on
creating a netflow and subsequently deleting it.

Signed-off-by: Sha Zhang <zhangsha.zhang@huawei.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-24 12:17:17 -07:00
Yi-Hung Wei
f2cd113eb8 pinctrl: Fix memory leak in consider_nat_address()
In testcase "ovn -- send gratuitous arp for NAT rules on distributed router",
valgrind reports memory leaks as following.
    xrealloc (util.c:123)
    add_ipv4_netaddr.isra.0 (ovn-util.c:28)
    extract_addresses (ovn-util.c:128)
    extract_addresses_with_port.constprop.17 (pinctrl.c:1257)
    consider_nat_address.isra.15 (pinctrl.c:1318)
    get_nat_addresses_and_keys (pinctrl.c:1361)
    send_garp_run (pinctrl.c:1402)
    pinctrl_run (pinctrl.c:796)
    main (ovn-controller.c:619)

Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-24 11:54:58 -07:00
Kevin Traynor
cd6c5bc8f4 docs: Add some detail about dpdk-socket-mem.
Using dpdk-socket-mem to allocate memory for some NUMA nodes
but leaving blank for subsequent ones is equivalent of assigning
0 MB memory to those subsequent nodes. Document this behavior.

Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-24 11:50:21 -07:00
Yi-Hung Wei
331c07ac34 ofproto: Add support of OFPR_PACKET_OUT as packet-in reason
This patch adds support of OFPR_PACKET_OUT as the packet-in reason.
This packet-in reason is a required feature for OF1.4+, and it indicates
that the associated packet-in message to the controller is triggered when
the switch is processing a packet-out message. This reason code is enabled
by default when OF1.4+ is used.

Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-24 09:54:22 -07:00
Yi-Hung Wei
e19a67692d connmgr: Fix internal packet-in reason code mask.
Starting from OpenFlow 1.4+, OFPR_ACTION is split into four more descriptive
reasons, OFPR_APPLY_ACTION, OFPR_ACTION_SET, OFPR_GROUP, and OFPR_PACKET_OUT.
OVS maintains the new reason code internally, and it currently supports the
first three reason code. If the version of an established OpenFlow connection
is less than 1.4, OVS converts the internal reason code back to OFPR_ACTION to
be backward compatible. However, the internal packet-in reason code mask is
not properly maintained for the older OpenFlow version that may emit the
packet-in messages wth the new reason code. It is because OVS does not enable
the new reason code internally in the reason code mask for older OpenFlow
version. This commit tries to address the aforementioned issue.

Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-24 09:53:59 -07:00
Yi-Hung Wei
391097b610 ofproto-dpif: Fix memory leak in disable_datapath_clone()
In testcase "ofproto-dpif - clone action", valgrind reports a memory leak
with the following call stack.
    xrealloc (util.c:123)
    ds_reserve (dynamic-string.c:63)
    ds_put_format_valist (dynamic-string.c:161)
    ds_put_format (dynamic-string.c:142)
    disable_datapath_clone (ofproto-dpif.c:5206)
    process_command (unixctl.c:313)
    run_connection (unixctl.c:347)
    unixctl_server_run (unixctl.c:400)
    main (ovs-vswitchd.c:112)

Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-24 09:46:50 -07:00
Yi-Hung Wei
91e4f4dcbd ovn-nbctl: Fix memory leak in nbctl_lr_nat_list()
In testcase "2319: ovn-nbctl - NATs", valgrind reports a memory leak with
the following code stack.
    xmalloc (util.c:112)
    xvasprintf (util.c:176)
    xasprintf (util.c:272)
    nbctl_lr_nat_list (ovn-nbctl.c:2400)
    do_nbctl (ovn-nbctl.c:3121)
    main (ovn-nbctl.c:142)

Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-24 09:45:15 -07:00
Yi-Hung Wei
98a1a320f2 tests-ovsdb: Fix memory leak
Fix memory leaks reported by valgrind.

Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-24 09:32:29 -07:00
Guoshuai Li
3547a8c128 ovn-detrace: Add ovn-detrace to fedora rpm package.
Otherwise, through the "make rpm-fedora" build fedora package will be error:
error: Installed (but unpackaged) file(s) found:
   /usr/bin/ovn-detrace
   /usr/share/man/man1/ovn-detrace.1.gz

Signed-off-by: Guoshuai Li <ligs@dtdream.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-24 09:31:15 -07:00
Yi-Hung Wei
d927cd6e73 ovsdb-idl: Fix memory leak
In testcase "simple idl, conditional, multiple clauses in condition - C",
valgrind reports a memory leak with the following call stack.
    xmalloc (util.c:112)
    resize (hmap.c:100)
    ovsdb_idl_condition_clone (ovsdb-idl.c:1075)
    ovsdb_idl_set_condition (ovsdb-idl.c:1095)
    update_conditions (test-ovsdb.c:2299)
    do_idl (test-ovsdb.c:2388)
    ovs_cmdl_run_command__ (command-line.c:115)
    main (test-ovsdb.c:73)

Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-24 09:27:47 -07:00
Yi-Hung Wei
c71caf1b28 bridge: Fix memory leak in port_configure()
In testcase "ofproto-dpif - VLAN handling", valgrind reports a memory
leak with the following call stack.
    xcalloc (util.c:95)
    bitmap_allocate (bitmap.h:51)
    vlan_bitmap_from_array (vlan-bitmap.c:32)
    port_configure (bridge.c:983)
    bridge_reconfigure (bridge.c:682)
    bridge_run (bridge.c:2993)
    main (ovs-vswitchd.c:111)

Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-24 09:25:56 -07:00
Yi-Hung Wei
ffa4d73b19 learn: Fix memory leak in learn_parse_sepc()
In testcase "ofproto-dpif - fragment handling - actions", valgrind reports
memeory leaks with the following call stack.
    xmalloc (util.c:112)
    xvasprintf (util.c:176)
    xasprintf (util.c:272)
    mf_parse_subfield__ (nx-match.c:1939)
    mf_parse_subfield (nx-match.c:1991)
    learn_parse_spec (learn.c:242)
    learn_parse__ (learn.c:436)
    learn_parse (learn.c:464)
    parse_LEARN (ofp-actions.c:4670)
    ofpact_parse (ofp-actions.c:8231)
    ofpacts_parse__ (ofp-actions.c:8278)
    ofpacts_parse (ofp-actions.c:8350)
    ofpacts_parse_copy (ofp-actions.c:8368)
    parse_ofp_str__ (ofp-parse.c:543)
    parse_ofp_str (ofp-parse.c:596)
    parse_ofp_flow_mod_str (ofp-parse.c:1024)
    ofctl_flow_mod (ovs-ofctl.c:1496)
    ovs_cmdl_run_command__ (command-line.c:115)
    main (ovs-ofctl.c:147)

Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-24 09:09:04 -07:00
Timothy Redaelli
de78c161a6 ovn-detrace: add generated files to .gitignore.
Signed-off-by: Timothy Redaelli <tredaelli@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-24 08:18:02 -07:00
Timothy Redaelli
d6990a72c8 gitignore: Ignore /docs-check instead of /htmldocs-check
Fixes: fd0837a76f ("doc: Convert ovs-vlan-test to rST")
CC: Stephen Finucane <stephen@that.guru>
Signed-off-by: Timothy Redaelli <tredaelli@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Stephen Finucane <stephen@that.guru>
2017-04-24 08:17:15 -07:00
Yi-Hung Wei
bc36c3a8b0 ofproto: Fix memory leak in handle_tlv_table_mod()
In testcase "tunnel - Geneve metadata", valgrind reports a memory leak with
the following call stack.
    xcalloc (util.c:95)
    tun_metadata_alloc (tun-metadata.c:89)
    tun_metadata_table_mod (tun-metadata.c:175)
    handle_tlv_table_mod (ofproto.c:7856)
    handle_openflow__ (ofproto.c:8036)
    handle_openflow (ofproto.c:8098)
    ofconn_run (connmgr.c:1427)
    connmgr_run (connmgr.c:363)
    ofproto_run (ofproto.c:1815)
    bridge_run__ (bridge.c:2915)
    bridge_run (bridge.c:2972)
    main (ovs-vswitchd.c:111)

Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-22 10:24:33 -07:00
nickcooper-zhangtonghao
7b91e3c85b rstp/stp: Unref the rstp/stp when bridges destroyed.
When bridges destroyed, which stp enabled, you can
still get stp info via the command 'ovs-appctl stp/show'.
And the rstp is also in the same case. We should unref
them. The rstp/stp ports have been unregistered via
'ofproto_port_unregister' function when ports destroyed.
We will unref rstp/stp struct in the 'destruct' of
ofproto-dpif provider.

Signed-off-by: nickcooper-zhangtonghao <nic@opencloud.tech>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Jarno Rajahalme <jarno@ovn.org>
2017-04-21 18:11:53 -07:00
Han Zhou
8b8d09dc1b ovn-sbctl: fix lflow-list when uuid has leading 0s.
When uuid starts with 0s, lflow-list will fail if leading 0s are
not included in command argument. This leads to unexpected results
considering that leading 0s are usually not shown up in cookies
of OpenFlow outputs of tools such as ovs-ofctl dump-flows
and ovs-appctl ofproto/trace. E.g.

lflow uuid: 0c16ceb4-0409-484b-8297-a6e7f264ac2d
$ ovn-nbctl lflow-list 0c16ceb4 # works fine
$ ovn-nbctl lflow-list c16ceb4 # doesn't work

This patch fixes the problem.

Signed-off-by: Han Zhou <zhouhan@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-21 16:05:17 -07:00
Sugesh Chandran
f1dac5128c tunneling: Avoid recirculation on datapath.
Open vSwitch datapath recirculates packets for tunneling, i.e. the
incoming packets are encapsulated at first pass.  Further actions are
applied on encapsulated packets on the second pass after
recirculating.  The proposed patch compute and append the post tunnel
actions at the time of translation itself instead of recirculating at
datapath. These actions are solely depends on tunnel attributes so
there is no need of datapath recirculation.  By avoiding the
recirculation at datapath, the patch offers up to 30% performance
improvement for VXLAN tunneling in our testing.  The action execution
logic is using the new CLONE action to define the packet cloning when
the actions are combined.  The length in the CLONE action specifies
the size of nested action set.

It also fixing the testsuite failures that are introduced by nested
CLONE action in tunneling.

Signed-off-by: Sugesh Chandran <sugesh.chandran@intel.com>
Signed-off-by: Zoltán Balogh <zoltan.balogh@ericsson.com>
Co-authored-by: Zoltán Balogh <zoltan.balogh@ericsson.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-21 15:57:38 -07:00
Ben Pfaff
68c744fd30 flow: Further refinements to flow_pop_vlan().
This may help to suppress warnings from know-it-all compilers, and it helps
to make the code clearer too.

Reported-by: Darrell Ball <dlu998@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Eric Garver <e@erig.me>
2017-04-21 15:44:43 -07:00
Han Zhou
bc3436de9a ovn-detrace: A tool decoding ofproto/trace output for ovn debugging.
A python script to decode ofproto/trace output to add ovn lflow
information inline. It expands lflow further to ACLs when relevant.

$ ovs-appctl ofproto/trace ... | ovn-decode

Signed-off-by: Han Zhou <zhouhan@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-21 15:40:53 -07:00
Han Zhou
17bfa2aa9d ovn-northd: Add hint in lflow to link back to acl
It will be helpful for trouble-shooting if we can link a logical flow
back to the ACL that generated it. This patch is to add a stage-hint as
an external-id in lflow. The hint contains stage specific information.
Now only lflows in ACL stages have hint, which is the ACL uuid, though
the same mechanism can be used to add hint for other stages later.

Signed-off-by: Han Zhou <zhouhan@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-21 15:40:50 -07:00
Stephen Finucane
f631f6e959 doc: Don't override default theme
Sphinx 1.3 renamed the 'default' theme to 'classic' and configured the
'alabaster' theme as the new default. To prevent breaking existing
builds, the 'default' name was reserved as an alias for 'classic' [1].
However, initially this raised a warning [1] with a message to use
'classic' instead. This warning was removed in 1.3.2 [2], but it will
result in errors (due to the use of the '-W' flag) for Sphinx 1.3.0 and
1.3.1 users.

Mitigate the issue by not setting a theme if the 'ovs_sphinx_theme'
package is absent. This will result in Sphinx using its default theme,
be that 'classic' (Sphinx < 1.3) or 'alabaster'.

[1] https://github.com/sphinx-doc/sphinx/commit/68021b0bd
[2] https://github.com/sphinx-doc/sphinx/commit/034c4e942

Signed-off-by: Stephen Finucane <stephen@that.guru>
Cc: Matthew Thode <mthode@mthode.org>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-21 14:30:43 -07:00
Stephen Finucane
47f1bb1566 doc: Remove cruft from conf.py
This file has enough going on as-is without keeping all this commented
out noise around.

Signed-off-by: Stephen Finucane <stephen@that.guru>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-21 14:29:04 -07:00
Stephen Finucane
70cb24de87 doc: Remove latex output configuration
We don't care about building LaTeX documentation, so there's no need to
keep this build cruft around.

Signed-off-by: Stephen Finucane <stephen@that.guru>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-21 14:15:13 -07:00
Stephen Finucane
3591d8c7bb doc: Convert ovs-test to rST
Signed-off-by: Stephen Finucane <stephen@that.guru>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-21 14:15:13 -07:00
Stephen Finucane
fd0837a76f doc: Convert ovs-vlan-test to rST
Let's start with a simple one that lets us focus on setting up most of
the required "infrastructure" for building man pages using Sphinx.

This changes the 'check-htmldocs' target to 'check-docs' as its now
responsible for building man page docs too.

Other than that, hurrah for (mostly) legible syntaxes.

[1] http://www.tldp.org/HOWTO/Man-Page/q2.html

Signed-off-by: Stephen Finucane <stephen@that.guru>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-21 14:15:13 -07:00
Stephen Finucane
717dbe617e doc: Add man page section to documentation guide
We also replace 'reST' with the far more common 'rST'.

Signed-off-by: Stephen Finucane <stephen@that.guru>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-21 14:15:13 -07:00
Ben Pfaff
3a46eaafe6 ofproto: Report only un-deleted groups in group stats replies.
Deleted groups hang around in the group table until the next grace period,
so it's important for the group stats code to pretend that they're gone
until they really get deleted.

Reported-by: "Timothy M. Redaelli" <tredaelli@redhat.com>
Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2017-April/331117.html
Signed-off-by: Ben Pfaff <blp@ovn.org>
Tested-by: Timothy Redaelli <tredaelli@redhat.com>
Acked-by: Greg Rose <gvrose8192@gmail.com>
Acked-by: Jarno Rajahalme <jarno@ovn.org>
2017-04-21 14:09:26 -07:00
Andy Zhou
f3eba0d2ca bridge: Log interface deletion
Currently interface additions are logged but not deletions. This
makes system debugging, such as confirming OVSDB transaction are
timely replicated harder than necessary.

Signed-off-by: Andy Zhou <azhou@ovn.org>
Acked-by: Jarno Rajahalme <jarno@ovn.org>
2017-04-21 12:02:35 -07:00
Guru Shetty
6b785fd8fe ovn-util: Allow /32 IP addresses for router ports.
On Google cloud, a VM gets a /32 IP address. When OVN
is deployed on such VMs, the OVN gateway router's IP
address becomes a /32 IP address. This commit allows
such a configuration.

Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2017-04-21 10:51:17 -07:00
Guru Shetty
8dd5b5123f ovn-northd: Allow static routes with nexthop in different subnet.
There are cases where the default gateway of a interface is in
a different subnet than its IP address. Linux allows such
configuration. For e.g, one could set the IP address of
a Linux interface as 172.16.1.2/32 and then give it a default
gateway of 172.16.1.1.  This can be done for e.g. by running the
following commands.

ifconfig eth0 172.16.1.2 netmask 255.255.255.255 broadcast 172.16.1.2
route add 172.16.1.1 dev eth0
route add default gw 172.16.1.1

The above configuration is what google cloud uses for its VMs.

In OVN static routes, we currently have the ability to specify the
router port via which the packet needs to be pushed out to reach a
next hop.  But when support for IPv6 was added, we only allowed
nexthops to be in the same subnet as one of the router's IP addresses.

This commit relaxes that restriction. When a outport is specified in
static routes and when a nexthop is in a different subnet than any
of the router IP addresses, we will assume that it is reachable from
the first IP address of the router.  Since this is a corner case,
we just go with the first IP address.  If it turns out that there
are more cases, we can let users choose the IP address via which
the destination is reachable.

Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2017-04-21 10:50:55 -07:00
László Sürü
f73b83fd97 ofproto-dpif: Propagate may_enable flag as link aliveness.
The idea is to use OFPPS_LIVE bit to propagate link aliveness state
towards the controller also when sending port status.  The
ofport->may_enable flag could be used for this purpose, thus any
change in LIVE bit is propagated towards conrtoller in
OFPT_PORT_STATUS message.  OFPPS_LIVE bit is set only when links is
not down not administratively, neither operationally as recommended
in OF papers.  I added 9 new unit tests to verify link state changes
when monitored with cfm, bfd or lacp for OF 1.3, OF 1.4 and OF 1.5.
I updated related unit tests according to the changes of
ofproto-dpif.

Signed-off-by: László Sürü <laszlo.suru at ericsson.com>
Co-authored-by: Zoltán Balogh <zoltan.balogh at ericsson.com>
Signed-off-by: Zoltán Balogh <zoltan.balogh at ericsson.com>
Co-authored-by: Jan Scheurich <jan.scheurich at ericsson.com>
Signed-off-by: Jan Scheurich <jan.scheurich at ericsson.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2017-04-21 10:37:53 -07:00