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-boun...@openvswitch.org] On Behalf Of Fischetti, > Antonio > Sent: Tuesday, January 26, 2016 5:31 PM > To: Daniele Di Proietto; dev@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-boun...@openvswitch.org] On Behalf Of Fischetti, > > Antonio > > Sent: Monday, January 25, 2016 4:25 PM > > To: Daniele Di Proietto; dev@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-boun...@openvswitch.org] On Behalf Of Daniele > Di > > > Proietto > > > Sent: Monday, November 16, 2015 6:21 AM > > > To: dev@openvswitch.org > > > Subject: [ovs-dev] [PATCH 08/12] dpif-netdev: Execute conntrack action. > > > > > > Signed-off-by: Daniele Di Proietto <diproiet...@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@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@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@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@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@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@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@openvswitch.org > > > http://openvswitch.org/mailman/listinfo/dev > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev