[ovs-dev] [PATCH 08/12] dpif-netdev: Execute conntrack action.

Fischetti, Antonio antonio.fischetti at intel.com
Mon Feb 1 11:08:50 UTC 2016


As this Regression Test issue is specific for Patch #3/12
I'll continue this topic on the post for [Patch 03/12] at
http://openvswitch.org/pipermail/dev/2015-November/062230.html


> -----Original Message-----
> From: dev [mailto:dev-bounces at openvswitch.org] On Behalf Of Fischetti,
> Antonio
> Sent: Tuesday, January 26, 2016 5:31 PM
> To: Daniele Di Proietto; dev at openvswitch.org
> Subject: Re: [ovs-dev] [PATCH 08/12] dpif-netdev: Execute conntrack action.
> 
> Hi, an update to my previous post.
> 
> I found out that after applying patches #1 and then #2 the performance is
> still ok.
> Instead, after I apply the patch #3 the throughput goes from 12.1 down to
> 11.6 Mpps.
> 
> It seems to be due to the function ' parse_dl_type()' which calls 2 inline
> functions.
> It's strange because with these 3 patches none is calling 'parse_dl_type()'.
> 
> If I comment that function, performance goes up again to 12.1Mpps.
> 
> Antonio
> 
> > -----Original Message-----
> > From: dev [mailto:dev-bounces at openvswitch.org] On Behalf Of Fischetti,
> > Antonio
> > Sent: Monday, January 25, 2016 4:25 PM
> > To: Daniele Di Proietto; dev at openvswitch.org
> > Subject: Re: [ovs-dev] [PATCH 08/12] dpif-netdev: Execute conntrack
> action.
> >
> > Hi Daniele,
> > I reviewed your patches and they look ok.
> >
> > I also made some regression tests on performance with an IXIA generator.
> I
> > would like
> > to share these results.
> > I did the following. I applied the patches and ran a couple of tests without
> > using the
> > new 'ct' action, so the ConnTracker feature was never enabled.
> > I then compared my results with ovs-dpdk without the patches.
> >
> > I found the performance with the patches was about a 5% lower.
> >
> > Below some details on the 2 tests I did and then a table with the
> > performance figures.
> >
> > Test #1: 'Phy-to-Phy'
> > =================
> >
> >                        +-----+
> > -->[ Port 1 (dpdk) ]---|     |
> >                        | OVS |
> > <--[ Port 2 (dpdk) ]---|     |
> >                        +-----+
> >
> > ovs-ofctl add-flow br0 in_port=1,action=output:2
> >
> >
> > Test #2: Phy-VM-Phy with vHost-User
> > ==============================
> >
> >                        +-----+                                +--------------+
> > -->[ Port 1 (dpdk) ]---|     |---[ Port 4 (dpdkvhostuser) ]---|              |
> >                        | OVS |                                | Testpmd @ VM |
> > <--[ Port 3 (dpdk) ]---|     |---[ Port 2 (dpdkvhostuser) ]---|              |
> >                        +-----+                                +--------------+
> >
> > ovs-ofctl add-flow br0 idle_timeout=0,in_port=1,action=output:4
> > ovs-ofctl add-flow br0 idle_timeout=0,in_port=2,action=output:3
> >
> > Performance figures are
> >
> >                    +----------------+-------------------------------+
> >                    | OVS Master 2.5 | OVS Master 2.5 + C.T. Patches |
> > +------------------+----------------+-------------------------------+
> > | Phy-to-Phy       | 12.1 Mpps      | 11.6 Mpps                     |
> > | PVP (vHost-User) |  7.0 Mpps      | 6.6 Mpps                      |
> > +------------------+----------------+-------------------------------+
> >
> > I got these numbers by sending mono-directional data at line rate on one
> ixia
> > port (Tx) and observing the receiving rate on the other ixia port (Rx).
> >
> > I'm trying to figure out where could be the over-head.
> > I guess with my test settings
> > 1. conntrack_execute() is never called
> > 2. The only functions that can give an overhead could be: conntrack_run(),
> > conntrack_init().
> >
> > Does it make sense? Let me know if I missed some detail.
> >
> > Thanks,
> > Antonio
> >
> > > -----Original Message-----
> > > From: dev [mailto:dev-bounces at openvswitch.org] On Behalf Of Daniele
> Di
> > > Proietto
> > > Sent: Monday, November 16, 2015 6:21 AM
> > > To: dev at openvswitch.org
> > > Subject: [ovs-dev] [PATCH 08/12] dpif-netdev: Execute conntrack action.
> > >
> > > Signed-off-by: Daniele Di Proietto <diproiettod at vmware.com>
> > > ---
> > >  lib/dpif-netdev.c     | 65
> > ++++++++++++++++++++++++++++++++++++++++++-
> > > --------
> > >  tests/dpif-netdev.at  | 14 +++++------
> > >  tests/ofproto-dpif.at | 20 ++++++++--------
> > >  3 files changed, 71 insertions(+), 28 deletions(-)
> > >
> > > diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
> > > index 3440755..1061ee4 100644
> > > --- a/lib/dpif-netdev.c
> > > +++ b/lib/dpif-netdev.c
> > > @@ -33,6 +33,7 @@
> > >
> > >  #include "bitmap.h"
> > >  #include "cmap.h"
> > > +#include "conntrack.h"
> > >  #include "csum.h"
> > >  #include "dp-packet.h"
> > >  #include "dpif.h"
> > > @@ -92,6 +93,10 @@ static struct vlog_rate_limit upcall_rl =
> > > VLOG_RATE_LIMIT_INIT(600, 600);
> > >  static struct odp_support dp_netdev_support = {
> > >      .max_mpls_depth = SIZE_MAX,
> > >      .recirc = true,
> > > +    .ct_state = true,
> > > +    .ct_zone = true,
> > > +    .ct_mark = true,
> > > +    .ct_label = true,
> > >  };
> > >
> > >  /* Stores a miniflow with inline values */
> > > @@ -226,6 +231,8 @@ struct dp_netdev {
> > >      size_t n_dpdk_rxqs;
> > >      char *pmd_cmask;
> > >      uint64_t last_tnl_conf_seq;
> > > +
> > > +    struct conntrack conntrack;
> > >  };
> > >
> > >  static struct dp_netdev_port *dp_netdev_lookup_port(const struct
> > > dp_netdev *dp,
> > > @@ -842,6 +849,8 @@ create_dp_netdev(const char *name, const
> struct
> > > dpif_class *class,
> > >      dp->upcall_aux = NULL;
> > >      dp->upcall_cb = NULL;
> > >
> > > +    conntrack_init(&dp->conntrack);
> > > +
> > >      cmap_init(&dp->poll_threads);
> > >      ovs_mutex_init_recursive(&dp->non_pmd_mutex);
> > >      ovsthread_key_create(&dp->per_pmd_key, NULL);
> > > @@ -914,6 +923,8 @@ dp_netdev_free(struct dp_netdev *dp)
> > >      ovs_mutex_destroy(&dp->non_pmd_mutex);
> > >      ovsthread_key_delete(dp->per_pmd_key);
> > >
> > > +    conntrack_destroy(&dp->conntrack);
> > > +
> > >      ovs_mutex_lock(&dp->port_mutex);
> > >      CMAP_FOR_EACH (port, node, &dp->ports) {
> > >          do_del_port(dp, port);
> > > @@ -1920,12 +1931,6 @@ dpif_netdev_flow_from_nlattrs(const struct
> > > nlattr *key, uint32_t key_len,
> > >          return EINVAL;
> > >      }
> > >
> > > -    /* Userspace datapath doesn't support conntrack. */
> > > -    if (flow->ct_state || flow->ct_zone || flow->ct_mark
> > > -        || !ovs_u128_is_zero(&flow->ct_label)) {
> > > -        return EINVAL;
> > > -    }
> > > -
> > >      return 0;
> > >  }
> > >
> > > @@ -2555,6 +2560,9 @@ dpif_netdev_run(struct dpif *dpif)
> > >      ovs_mutex_unlock(&dp->non_pmd_mutex);
> > >      dp_netdev_pmd_unref(non_pmd);
> > >
> > > +    /* XXX: If workload is too heavy we could add a separate thread. */
> > > +    conntrack_run(&dp->conntrack);
> > > +
> > >      tnl_arp_cache_run();
> > >      tnl_port_map_run();
> > >      new_tnl_seq = seq_read(tnl_conf_seq);
> > > @@ -3612,12 +3620,47 @@ dp_execute_cb(void *aux_, struct
> dp_packet
> > > **packets, int cnt,
> > >          VLOG_WARN("Packet dropped. Max recirculation depth
> exceeded.");
> > >          break;
> > >
> > > -    case OVS_ACTION_ATTR_CT:
> > > -        /* If a flow with this action is slow-pathed, datapath assistance is
> > > -         * required to implement it. However, we don't support this action
> > > -         * in the userspace datapath. */
> > > -        VLOG_WARN("Cannot execute conntrack action in userspace.");
> > > +    case OVS_ACTION_ATTR_CT: {
> > > +        const struct nlattr *b;
> > > +        bool commit = false;
> > > +        unsigned int left;
> > > +        uint16_t zone = 0;
> > > +        const char *helper = NULL;
> > > +        const uint32_t *setmark = NULL;
> > > +        const struct ovs_key_ct_labels *setlabel = NULL;
> > > +
> > > +
> > > +        /* XXX parsing this everytime is expensive.  We should do like kernel
> > > +         * does and create a structure. */
> > > +        NL_ATTR_FOR_EACH_UNSAFE (b, left, nl_attr_get(a),
> > > nl_attr_get_size(a)) {
> > > +            enum ovs_ct_attr sub_type = nl_attr_type(b);
> > > +
> > > +            switch(sub_type) {
> > > +            case OVS_CT_ATTR_COMMIT:
> > > +                commit = true;
> > > +                break;
> > > +            case OVS_CT_ATTR_ZONE:
> > > +                zone = nl_attr_get_u16(b);
> > > +                break;
> > > +            case OVS_CT_ATTR_HELPER:
> > > +                helper = nl_attr_get_string(b);
> > > +                break;
> > > +            case OVS_CT_ATTR_MARK:
> > > +                setmark = nl_attr_get(b);
> > > +                break;
> > > +            case OVS_CT_ATTR_LABELS:
> > > +                setlabel = nl_attr_get(b);
> > > +                break;
> > > +            case OVS_CT_ATTR_UNSPEC:
> > > +            case __OVS_CT_ATTR_MAX:
> > > +                OVS_NOT_REACHED();
> > > +            }
> > > +        }
> > > +
> > > +        conntrack_execute(&dp->conntrack, packets, cnt, commit, zone,
> > > +                          setmark, setlabel, helper);
> > >          break;
> > > +    }
> > >
> > >      case OVS_ACTION_ATTR_PUSH_VLAN:
> > >      case OVS_ACTION_ATTR_POP_VLAN:
> > > diff --git a/tests/dpif-netdev.at b/tests/dpif-netdev.at
> > > index 103f87c..324faba 100644
> > > --- a/tests/dpif-netdev.at
> > > +++ b/tests/dpif-netdev.at
> > > @@ -66,7 +66,7 @@ AT_CHECK([ovs-appctl netdev-dummy/receive p1
> > > 'in_port(1),eth(src=50:54:00:00:00:
> > >  sleep 1
> > >
> > >  AT_CHECK([cat ovs-vswitchd.log | grep -A 1 'miss upcall' | tail -n 1], [0],
> > [dnl
> > > -
> > >
> >
> skb_priority(0),skb_mark(0),recirc_id(0),dp_hash(0),in_port(1),eth(src=50:54:
> > >
> >
> 00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=
> > > 10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)
> > >
> >
> +skb_priority(0),skb_mark(0),ct_state(0),ct_zone(0),ct_mark(0),ct_label(0),re
> > >
> >
> circ_id(0),dp_hash(0),in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:0
> > >
> >
> 0:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,
> > > frag=no),icmp(type=8,code=0)
> > >  ])
> > >  AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL |
> STRIP_XOUT],
> > > [0], [dnl
> > >
> > >
> >
> recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:09,dl
> > > _dst=50:54:00:00:00:0a,nw_frag=no, actions: <del>
> > > @@ -79,7 +79,7 @@ AT_CHECK([ovs-appctl netdev-dummy/receive p1
> > > 'in_port(1),eth(src=50:54:00:00:00:
> > >  sleep 1
> > >
> > >  AT_CHECK([cat ovs-vswitchd.log | grep -A 1 'miss upcall' | tail -n 1], [0],
> > [dnl
> > > -
> > >
> >
> skb_priority(0),skb_mark(0),recirc_id(0),dp_hash(0),in_port(1),eth(src=50:54:
> > >
> >
> 00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=
> > > 10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)
> > >
> >
> +skb_priority(0),skb_mark(0),ct_state(0),ct_zone(0),ct_mark(0),ct_label(0),re
> > >
> >
> circ_id(0),dp_hash(0),in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:0
> > >
> >
> 0:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,
> > > frag=no),icmp(type=8,code=0)
> > >  ])
> > >  AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL |
> STRIP_XOUT],
> > > [0], [dnl
> > >
> > >
> >
> pkt_mark=0,recirc_id=0,dp_hash=0,skb_priority=0,ct_state=0,ct_zone=0,ct_
> > >
> >
> mark=0,ct_label=0,icmp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:0
> > >
> >
> 9,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw
> > > _ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0, actions: <del>
> > > @@ -103,10 +103,10 @@ AT_CHECK([ovs-appctl netdev-dummy/receive
> > p1
> > > 'in_port(1),eth(src=50:54:00:00:00:
> > >  sleep 1
> > >
> > >  AT_CHECK([cat ovs-vswitchd.log | grep -A 1 'miss upcall' | tail -n 1], [0],
> > [dnl
> > > -
> > >
> >
> skb_priority(0),skb_mark(0),recirc_id(0),dp_hash(0),in_port(1),eth(src=50:54:
> > >
> >
> 00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=
> > > 10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)
> > >
> >
> +skb_priority(0),skb_mark(0),ct_state(0),ct_zone(0),ct_mark(0),ct_label(0),re
> > >
> >
> circ_id(0),dp_hash(0),in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:0
> > >
> >
> 0:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,
> > > frag=no),icmp(type=8,code=0)
> > >  ])
> > >  AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_DUMP | STRIP_XOUT],
> > > [0], [dnl
> > > -
> > >
> >
> skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(1),eth(src=
> > >
> >
> 50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.
> > >
> >
> 2/0.0.0.0,dst=10.0.0.1/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(typ
> > > e=8/0,code=0/0), packets:0, bytes:0, used:never, actions: <del>
> > >
> >
> +skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct
> > >
> >
> _label(0/0),recirc_id(0),dp_hash(0/0),in_port(1),eth(src=50:54:00:00:00:09,ds
> > >
> >
> t=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2/0.0.0.0,dst=10.0.0.
> > > 1/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0),
> > > packets:0, bytes:0, used:never, actions: <del>
> > >  ])
> > >
> > >  # Now, the same again without megaflows.
> > > @@ -118,11 +118,11 @@ AT_CHECK([ovs-appctl netdev-dummy/receive
> > p1
> > > 'in_port(1),eth(src=50:54:00:00:00:
> > >  sleep 1
> > >
> > >  AT_CHECK([cat ovs-vswitchd.log | grep -A 1 'miss upcall' | tail -n 1], [0],
> > [dnl
> > > -
> > >
> >
> skb_priority(0),skb_mark(0),recirc_id(0),dp_hash(0),in_port(1),eth(src=50:54:
> > >
> >
> 00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=
> > > 10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)
> > >
> >
> +skb_priority(0),skb_mark(0),ct_state(0),ct_zone(0),ct_mark(0),ct_label(0),re
> > >
> >
> circ_id(0),dp_hash(0),in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:0
> > >
> >
> 0:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,
> > > frag=no),icmp(type=8,code=0)
> > >  ])
> > >  AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_DUMP | STRIP_XOUT],
> > > [0], [dnl
> > > -
> > >
> >
> skb_priority(0),skb_mark(0),recirc_id(0),dp_hash(0),in_port(1),eth(src=50:54:
> > >
> >
> 00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=
> > > 10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0), packets:0,
> > > bytes:0, used:never, actions: <del>
> > > -
> > >
> >
> skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(1),eth(src=
> > >
> >
> 50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.
> > >
> >
> 2/0.0.0.0,dst=10.0.0.1/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(typ
> > > e=8/0,code=0/0), packets:0, bytes:0, used:never, actions: <del>
> > >
> >
> +skb_priority(0),skb_mark(0),ct_state(0/0x3f),ct_zone(0),ct_mark(0),ct_label
> > >
> >
> (0),recirc_id(0),dp_hash(0),in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:0
> > >
> >
> 0:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,t
> > > tl=64,frag=no),icmp(type=8,code=0), packets:0, bytes:0, used:never,
> > actions:
> > > <del>
> > >
> >
> +skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct
> > >
> >
> _label(0/0),recirc_id(0),dp_hash(0/0),in_port(1),eth(src=50:54:00:00:00:09,ds
> > >
> >
> t=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2/0.0.0.0,dst=10.0.0.
> > > 1/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0),
> > > packets:0, bytes:0, used:never, actions: <del>
> > >  ])
> > >
> > >  OVS_VSWITCHD_STOP
> > > diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at
> > > index f1c7cb6..508bb51 100644
> > > --- a/tests/ofproto-dpif.at
> > > +++ b/tests/ofproto-dpif.at
> > > @@ -5768,12 +5768,12 @@
> > > recirc_id(0),in_port(3),eth_type(0x0800),ipv4(frag=no), packets:0,
> bytes:0,
> > > used
> > >  ])
> > >
> > >  AT_CHECK([ovs-appctl dpif/dump-flows -m br0 | STRIP_UFID |
> > STRIP_USED
> > > | sort], [0], [dnl
> > > -
> > >
> >
> skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(p1),eth(src
> > >
> >
> =50:54:00:00:00:05/00:00:00:00:00:00,dst=50:54:00:00:00:07/00:00:00:00:0
> > >
> >
> 0:00),eth_type(0x0800),ipv4(src=192.168.0.1/0.0.0.0,dst=192.168.0.2/0.0.0.
> > > 0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0),
> > packets:0,
> > > bytes:0, used:never, actions:drop
> > > -
> > >
> >
> skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(p2),eth(src
> > >
> >
> =50:54:00:00:00:07/00:00:00:00:00:00,dst=50:54:00:00:00:05/00:00:00:00:0
> > >
> >
> 0:00),eth_type(0x0800),ipv4(src=192.168.0.2/0.0.0.0,dst=192.168.0.1/0.0.0.
> > > 0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=0/0,code=0/0),
> > packets:0,
> > > bytes:0, used:never, actions:drop
> > >
> >
> +skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct
> > >
> >
> _label(0/0),recirc_id(0),dp_hash(0/0),in_port(p1),eth(src=50:54:00:00:00:05/
> > >
> >
> 00:00:00:00:00:00,dst=50:54:00:00:00:07/00:00:00:00:00:00),eth_type(0x08
> > >
> >
> 00),ipv4(src=192.168.0.1/0.0.0.0,dst=192.168.0.2/0.0.0.0,proto=1/0,tos=0/0
> > > ,ttl=64/0,frag=no),icmp(type=8/0,code=0/0), packets:0, bytes:0,
> > used:never,
> > > actions:drop
> > >
> >
> +skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct
> > >
> >
> _label(0/0),recirc_id(0),dp_hash(0/0),in_port(p2),eth(src=50:54:00:00:00:07/
> > >
> >
> 00:00:00:00:00:00,dst=50:54:00:00:00:05/00:00:00:00:00:00),eth_type(0x08
> > >
> >
> 00),ipv4(src=192.168.0.2/0.0.0.0,dst=192.168.0.1/0.0.0.0,proto=1/0,tos=0/0
> > > ,ttl=64/0,frag=no),icmp(type=0/0,code=0/0), packets:0, bytes:0,
> > used:never,
> > > actions:drop
> > >  ])
> > >
> > >  AT_CHECK([ovs-appctl dpif/dump-flows -m br1 | STRIP_UFID |
> > STRIP_USED
> > > | sort], [0], [dnl
> > > -
> > >
> >
> skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(p3),eth(src
> > >
> >
> =50:54:00:00:00:09/00:00:00:00:00:00,dst=50:54:00:00:00:0a/00:00:00:00:0
> > >
> >
> 0:00),eth_type(0x0800),ipv4(src=10.0.0.2/0.0.0.0,dst=10.0.0.1/0.0.0.0,proto
> > > =1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0), packets:0,
> > > bytes:0, used:never, actions:drop
> > >
> >
> +skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct
> > >
> >
> _label(0/0),recirc_id(0),dp_hash(0/0),in_port(p3),eth(src=50:54:00:00:00:09/
> > >
> >
> 00:00:00:00:00:00,dst=50:54:00:00:00:0a/00:00:00:00:00:00),eth_type(0x08
> > >
> >
> 00),ipv4(src=10.0.0.2/0.0.0.0,dst=10.0.0.1/0.0.0.0,proto=1/0,tos=0/0,ttl=64/
> > > 0,frag=no),icmp(type=8/0,code=0/0), packets:0, bytes:0, used:never,
> > > actions:drop
> > >  ])
> > >
> > >  OVS_VSWITCHD_STOP
> > > @@ -5926,10 +5926,10 @@
> > > recirc_id=0,ip,in_port=101,vlan_tci=0x0000,nw_frag=no, actions:100,2,3
> > >  ])
> > >
> > >  AT_CHECK([cat ovs-vswitchd.log | grep -e 'in_port(100).*packets:9' |
> > > STRIP_UFID | FILTER_FLOW_DUMP], [0], [dnl
> > > -
> > >
> >
> skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(100),eth(sr
> > >
> >
> c=50:54:00:00:00:05/00:00:00:00:00:00,dst=50:54:00:00:00:07/00:00:00:00:
> > >
> >
> 00:00),eth_type(0x0800),ipv4(src=192.168.0.1/0.0.0.0,dst=192.168.0.2/0.0.0
> > > .0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0),
> > packets:9,
> > > bytes:540, used:0.0s, actions:101,3,2
> > >
> >
> +skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct
> > >
> >
> _label(0/0),recirc_id(0),dp_hash(0/0),in_port(100),eth(src=50:54:00:00:00:05
> > >
> >
> /00:00:00:00:00:00,dst=50:54:00:00:00:07/00:00:00:00:00:00),eth_type(0x0
> > >
> >
> 800),ipv4(src=192.168.0.1/0.0.0.0,dst=192.168.0.2/0.0.0.0,proto=1/0,tos=0/
> > > 0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0), packets:9, bytes:540,
> > > used:0.0s, actions:101,3,2
> > >  ])
> > >  AT_CHECK([cat ovs-vswitchd.log | grep -e 'in_port(101).*packets:4' |
> > > STRIP_UFID | FILTER_FLOW_DUMP], [0], [dnl
> > > -
> > >
> >
> skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(101),eth(sr
> > >
> >
> c=50:54:00:00:00:07/00:00:00:00:00:00,dst=50:54:00:00:00:05/00:00:00:00:
> > >
> >
> 00:00),eth_type(0x0800),ipv4(src=192.168.0.2/0.0.0.0,dst=192.168.0.1/0.0.0
> > > .0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0),
> > packets:4,
> > > bytes:240, used:0.0s, actions:100,2,3
> > >
> >
> +skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct
> > >
> >
> _label(0/0),recirc_id(0),dp_hash(0/0),in_port(101),eth(src=50:54:00:00:00:07
> > >
> >
> /00:00:00:00:00:00,dst=50:54:00:00:00:05/00:00:00:00:00:00),eth_type(0x0
> > >
> >
> 800),ipv4(src=192.168.0.2/0.0.0.0,dst=192.168.0.1/0.0.0.0,proto=1/0,tos=0/
> > > 0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0), packets:4, bytes:240,
> > > used:0.0s, actions:100,2,3
> > >  ])
> > >
> > >  AT_CHECK([ovs-ofctl dump-ports br0 pbr0], [0], [dnl
> > > @@ -6526,8 +6526,8 @@
> > >
> >
> pkt_mark=0,recirc_id=0,dp_hash=0,skb_priority=0,ct_state=0,ct_zone=0,ct_
> > > mark=0,c
> > >
> > >
> >
> pkt_mark=0,recirc_id=0,dp_hash=0,skb_priority=0,ct_state=0,ct_zone=0,ct_
> > >
> >
> mark=0,ct_label=0,icmp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:0
> > >
> >
> b,dl_dst=50:54:00:00:00:0c,nw_src=10.0.0.4,nw_dst=10.0.0.3,nw_tos=0,nw
> > > _ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0, actions:drop
> > >  ])
> > >  AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_DUMP |
> > > grep 'packets:3'], [0], [dnl
> > > -
> > >
> >
> skb_priority(0),skb_mark(0),recirc_id(0),dp_hash(0),in_port(1),eth(src=50:54:
> > >
> >
> 00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=
> > > 10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0), packets:3,
> > > bytes:180, used:0.0s, actions:2
> > > -
> > >
> >
> skb_priority(0),skb_mark(0),recirc_id(0),dp_hash(0),in_port(1),eth(src=50:54:
> > >
> >
> 00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=
> > > 10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0), packets:3,
> > > bytes:180, used:0.0s, actions:drop
> > >
> >
> +skb_priority(0),skb_mark(0),ct_state(0/0x3f),ct_zone(0),ct_mark(0),ct_label
> > >
> >
> (0),recirc_id(0),dp_hash(0),in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:0
> > >
> >
> 0:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,t
> > > tl=64,frag=no),icmp(type=8,code=0), packets:3, bytes:180, used:0.0s,
> > > actions:2
> > >
> >
> +skb_priority(0),skb_mark(0),ct_state(0/0x3f),ct_zone(0),ct_mark(0),ct_label
> > >
> >
> (0),recirc_id(0),dp_hash(0),in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:0
> > >
> >
> 0:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,t
> > > tl=64,frag=no),icmp(type=8,code=0), packets:3, bytes:180, used:0.0s,
> > > actions:drop
> > >  ])
> > >  OVS_VSWITCHD_STOP
> > >  AT_CLEANUP
> > > @@ -7054,7 +7054,7 @@ recirc_id(0),in_port(1),eth_type(0x1234),
> > > packets:5, bytes:300, used:0.0s, actio
> > >  ])
> > >
> > >  AT_CHECK([cat ovs-vswitchd.log | grep 'modify' | STRIP_UFID ], [0], [dnl
> > > -dpif|DBG|dummy at ovs-dummy: put[[modify]]
> > >
> >
> skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(1),eth(src=
> > >
> >
> 50:54:00:00:00:09/00:00:00:00:00:00,dst=50:54:00:00:00:0a/00:00:00:00:00
> > > :00),eth_type(0x1234), actions:push_vlan(vid=4,pcp=0),100
> > > +dpif|DBG|dummy at ovs-dummy: put[[modify]]
> > >
> >
> skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_l
> > >
> >
> abel(0/0),recirc_id(0),dp_hash(0/0),in_port(1),eth(src=50:54:00:00:00:09/00:
> > >
> >
> 00:00:00:00:00,dst=50:54:00:00:00:0a/00:00:00:00:00:00),eth_type(0x1234),
> > > actions:push_vlan(vid=4,pcp=0),100
> > >  ])
> > >  OVS_VSWITCHD_STOP
> > >  AT_CLEANUP
> > > @@ -7126,8 +7126,8 @@
> > >
> >
> recirc_id(0),in_port(1),eth_type(0x8100),vlan(vid=99/0x0,pcp=7/0x0),encap(e
> > > th_ty
> > >  # are wildcarded.
> > >  AT_CHECK([cat ovs-vswitchd.log | grep '\(modify\)\|\(flow_add\)' |
> > > STRIP_UFID ], [0], [dnl
> > >  dpif_netdev|DBG|flow_add:
> > > recirc_id=0,in_port=1,vlan_tci=0x0000,dl_type=0x1234, actions:100
> > > -dpif|DBG|dummy at ovs-dummy: put[[modify]]
> > >
> >
> skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(1),eth(src=
> > >
> >
> 50:54:00:00:00:09/00:00:00:00:00:00,dst=50:54:00:00:00:0a/00:00:00:00:00
> > > :00),eth_type(0x1234)
> > > -dpif|DBG|dummy at ovs-dummy: put[[modify]]
> > >
> >
> skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(1),eth(src=
> > >
> >
> 50:54:00:00:00:09/00:00:00:00:00:00,dst=50:54:00:00:00:0a/00:00:00:00:00
> > > :00),eth_type(0x1234), actions:100
> > > +dpif|DBG|dummy at ovs-dummy: put[[modify]]
> > >
> >
> skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_l
> > >
> >
> abel(0/0),recirc_id(0),dp_hash(0/0),in_port(1),eth(src=50:54:00:00:00:09/00:
> > >
> >
> 00:00:00:00:00,dst=50:54:00:00:00:0a/00:00:00:00:00:00),eth_type(0x1234)
> > > +dpif|DBG|dummy at ovs-dummy: put[[modify]]
> > >
> >
> skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_l
> > >
> >
> abel(0/0),recirc_id(0),dp_hash(0/0),in_port(1),eth(src=50:54:00:00:00:09/00:
> > >
> >
> 00:00:00:00:00,dst=50:54:00:00:00:0a/00:00:00:00:00:00),eth_type(0x1234),
> > > actions:100
> > >  dpif_netdev|DBG|flow_add:
> > > recirc_id=0,in_port=1,vlan_tci=0xf063/0x1000,dl_type=0x1234,
> > actions:drop
> > >  ])
> > >  OVS_VSWITCHD_STOP
> > > --
> > > 2.1.4
> > >
> > > _______________________________________________
> > > dev mailing list
> > > dev at openvswitch.org
> > > http://openvswitch.org/mailman/listinfo/dev
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev


More information about the dev mailing list