On 31/03/2017 01:11, Marcelo Ricardo Leitner wrote:
On Thu, Mar 30, 2017 at 03:43:36PM -0300, Marcelo Ricardo Leitner wrote:
On Wed, Mar 29, 2017 at 03:43:10PM +0300, Roi Dayan wrote:
This patch series introduces rule offload functionality to dpif-netlink
via netdev ports new flow offloading API. The user can specify whether to
enable rule offloading or not via OVS configuration. Netdev providers
are able to implement netdev flow offload API in order to offload rules.

This patch series also implements one offload scheme for netdev-linux,
using TC flower classifier, which was chosen because its sort of natural
to state OVS DP rules for this classifier. However, the code can be
extended to support other classifiers such as U32, eBPF, etc which support
offload as well.

The use-case we are currently addressing is the newly sriov switchdev mode
in the Linux kernel which was introduced in version 4.8 [1][2].
This series was tested against sriov vfs vports representors of the
Mellanox 100G ConnectX-4 series exposed by the mlx5 kernel driver.


V5->V6:
    - Rebase over master branch, fix compilation issue
    - Add Nicira copyright to tc interface

Hi,

I built rpm packages based on OVS upstream commit 36664f336664. Then I

Please s/36664f336664/36664f377d048/g in this email.
This was the commit used as base for the test:
commit 36664f377d04857256c1d8582057e1cf3e0e3923
Author: Ben Pfaff <[email protected]>
Date:   Mon Mar 20 10:56:22 2017 -0700

    ovsdb-server: Drop unnecessary find_db() function.

Thanks

built a new set of packages with this patchset, v6, applied.

When offloading is enabled, the rules are merged in an unexpected way.
See the results below from the two scenarios.

openvswitch-2.7.90-1.fc24.36664f336664.x86_64.rpm
                          ^^^^^^^^^^^^ upstream ovs commit

[root@wsfd-netdev36 ~]# ovs-ofctl dump-flows ovs_pvp_br0
NXST_FLOW reply (xid=0x4):
 cookie=0x0, duration=12.501s, table=0, n_packets=1022759, n_bytes=61365540, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.1,nw_dst=1.0.0.1 actions=output:2
 cookie=0x0, duration=12.501s, table=0, n_packets=1020990, n_bytes=61259400, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.2,nw_dst=1.0.0.2 actions=output:2
 cookie=0x0, duration=12.500s, table=0, n_packets=1023860, n_bytes=61431600, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.3,nw_dst=1.0.0.3 actions=output:2
 cookie=0x0, duration=12.500s, table=0, n_packets=1022554, n_bytes=61353240, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.4,nw_dst=1.0.0.4 actions=output:2
 cookie=0x0, duration=12.500s, table=0, n_packets=1021516, n_bytes=61290960, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.5,nw_dst=1.0.0.5 actions=output:2
 cookie=0x0, duration=12.500s, table=0, n_packets=1020599, n_bytes=61235940, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.6,nw_dst=1.0.0.6 actions=output:2
 cookie=0x0, duration=12.500s, table=0, n_packets=1022285, n_bytes=61337100, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.7,nw_dst=1.0.0.7 actions=output:2
 cookie=0x0, duration=12.500s, table=0, n_packets=1021725, n_bytes=61303500, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.8,nw_dst=1.0.0.8 actions=output:2
 cookie=0x0, duration=12.500s, table=0, n_packets=1022281, n_bytes=61336860, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.9,nw_dst=1.0.0.9 actions=output:2
 cookie=0x0, duration=12.500s, table=0, n_packets=1022449, n_bytes=61346940, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.10,nw_dst=1.0.0.10 actions=output:2
 cookie=0x0, duration=12.208s, table=0, n_packets=2580, n_bytes=154800, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.1,nw_dst=1.0.0.1 actions=output:1
 cookie=0x0, duration=12.208s, table=0, n_packets=2675, n_bytes=160500, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.2,nw_dst=1.0.0.2 actions=output:1
 cookie=0x0, duration=12.208s, table=0, n_packets=2520, n_bytes=151200, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.3,nw_dst=1.0.0.3 actions=output:1
 cookie=0x0, duration=12.208s, table=0, n_packets=2587, n_bytes=155220, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.4,nw_dst=1.0.0.4 actions=output:1
 cookie=0x0, duration=12.208s, table=0, n_packets=2640, n_bytes=158400, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.5,nw_dst=1.0.0.5 actions=output:1
 cookie=0x0, duration=12.208s, table=0, n_packets=2593, n_bytes=155580, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.6,nw_dst=1.0.0.6 actions=output:1
 cookie=0x0, duration=12.208s, table=0, n_packets=2634, n_bytes=158040, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.7,nw_dst=1.0.0.7 actions=output:1
 cookie=0x0, duration=12.208s, table=0, n_packets=2549, n_bytes=152940, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.8,nw_dst=1.0.0.8 actions=output:1
 cookie=0x0, duration=12.207s, table=0, n_packets=2627, n_bytes=157620, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.9,nw_dst=1.0.0.9 actions=output:1
 cookie=0x0, duration=12.207s, table=0, n_packets=2530, n_bytes=151800, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.10,nw_dst=1.0.0.10 actions=output:1

[root@wsfd-netdev36 ~]# ovs-dpctl dump-flows
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.7,dst=1.0.0.7,frag=no),
 packets:1162916, bytes:69774960, used:0.000s, actions:1
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.10,dst=1.0.0.10,frag=no),
 packets:1163402, bytes:69804120, used:0.000s, actions:1
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.6,dst=1.0.0.6,frag=no),
 packets:2969, bytes:178140, used:0.011s, actions:2
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.4,dst=1.0.0.4,frag=no),
 packets:2940, bytes:176400, used:0.011s, actions:2
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.2,dst=1.0.0.2,frag=no),
 packets:3028, bytes:181680, used:0.011s, actions:2
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.9,dst=1.0.0.9,frag=no),
 packets:3025, bytes:181500, used:0.011s, actions:2
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.5,dst=1.0.0.5,frag=no),
 packets:3008, bytes:180480, used:0.011s, actions:2
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.3,dst=1.0.0.3,frag=no),
 packets:1164847, bytes:69890820, used:0.000s, actions:1
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.4,dst=1.0.0.4,frag=no),
 packets:1162983, bytes:69778980, used:0.000s, actions:1
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.6,dst=1.0.0.6,frag=no),
 packets:1161018, bytes:69661080, used:0.000s, actions:1
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.8,dst=1.0.0.8,frag=no),
 packets:2876, bytes:172560, used:0.011s, actions:2
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.1,dst=1.0.0.1,frag=no),
 packets:2968, bytes:178080, used:0.011s, actions:2
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.8,dst=1.0.0.8,frag=no),
 packets:1161890, bytes:69713400, used:0.000s, actions:1
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.9,dst=1.0.0.9,frag=no),
 packets:1163228, bytes:69793680, used:0.000s, actions:1
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.2,dst=1.0.0.2,frag=no),
 packets:1161539, bytes:69692340, used:0.000s, actions:1
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.5,dst=1.0.0.5,frag=no),
 packets:1161402, bytes:69684120, used:0.000s, actions:1
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.10,dst=1.0.0.10,frag=no),
 packets:2880, bytes:172800, used:0.011s, actions:2
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.1,dst=1.0.0.1,frag=no),
 packets:1163599, bytes:69815940, used:0.000s, actions:1
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.7,dst=1.0.0.7,frag=no),
 packets:2984, bytes:179040, used:0.011s, actions:2
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.3,dst=1.0.0.3,frag=no),
 packets:2889, bytes:173340, used:0.011s, actions:2


Now with
openvswitch-2.7.90-1.fc24.36664f336664.v6.x86_64.rpm
                          ^^^^^^^^^^^^^^^ this upstream commit + V6 patchset

[root@wsfd-netdev36 ~]# ovs-ofctl dump-flows ovs_pvp_br0
NXST_FLOW reply (xid=0x4):
 cookie=0x0, duration=6.876s, table=0, n_packets=171, n_bytes=10260, 
idle_age=5, ip,in_port=1,nw_src=16.0.0.1,nw_dst=1.0.0.1 actions=output:2
 cookie=0x0, duration=6.877s, table=0, n_packets=139976996, n_bytes=8398290046, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.2,nw_dst=1.0.0.2 actions=output:2
 cookie=0x0, duration=6.877s, table=0, n_packets=171, n_bytes=10260, 
idle_age=5, ip,in_port=1,nw_src=16.0.0.3,nw_dst=1.0.0.3 actions=output:2
 cookie=0x0, duration=6.877s, table=0, n_packets=170, n_bytes=10200, 
idle_age=5, ip,in_port=1,nw_src=16.0.0.4,nw_dst=1.0.0.4 actions=output:2
 cookie=0x0, duration=6.877s, table=0, n_packets=170, n_bytes=10200, 
idle_age=5, ip,in_port=1,nw_src=16.0.0.5,nw_dst=1.0.0.5 actions=output:2
 cookie=0x0, duration=6.876s, table=0, n_packets=170, n_bytes=10200, 
idle_age=5, ip,in_port=1,nw_src=16.0.0.6,nw_dst=1.0.0.6 actions=output:2
 cookie=0x0, duration=6.876s, table=0, n_packets=170, n_bytes=10200, 
idle_age=5, ip,in_port=1,nw_src=16.0.0.7,nw_dst=1.0.0.7 actions=output:2
 cookie=0x0, duration=6.876s, table=0, n_packets=170, n_bytes=10200, 
idle_age=5, ip,in_port=1,nw_src=16.0.0.8,nw_dst=1.0.0.8 actions=output:2
 cookie=0x0, duration=6.876s, table=0, n_packets=170, n_bytes=10200, 
idle_age=5, ip,in_port=1,nw_src=16.0.0.9,nw_dst=1.0.0.9 actions=output:2
 cookie=0x0, duration=6.876s, table=0, n_packets=170, n_bytes=10200, 
idle_age=5, ip,in_port=1,nw_src=16.0.0.10,nw_dst=1.0.0.10 actions=output:2
 cookie=0x0, duration=6.585s, table=0, n_packets=82, n_bytes=4920, idle_age=5, 
ip,in_port=2,nw_src=16.0.0.1,nw_dst=1.0.0.1 actions=output:1
 cookie=0x0, duration=6.585s, table=0, n_packets=81, n_bytes=4860, idle_age=5, 
ip,in_port=2,nw_src=16.0.0.2,nw_dst=1.0.0.2 actions=output:1
 cookie=0x0, duration=6.584s, table=0, n_packets=77, n_bytes=4620, idle_age=5, 
ip,in_port=2,nw_src=16.0.0.3,nw_dst=1.0.0.3 actions=output:1
 cookie=0x0, duration=6.584s, table=0, n_packets=78, n_bytes=4680, idle_age=5, 
ip,in_port=2,nw_src=16.0.0.4,nw_dst=1.0.0.4 actions=output:1
 cookie=0x0, duration=6.584s, table=0, n_packets=72, n_bytes=4320, idle_age=5, 
ip,in_port=2,nw_src=16.0.0.5,nw_dst=1.0.0.5 actions=output:1
 cookie=0x0, duration=6.584s, table=0, n_packets=67, n_bytes=4020, idle_age=5, 
ip,in_port=2,nw_src=16.0.0.6,nw_dst=1.0.0.6 actions=output:1
 cookie=0x0, duration=6.584s, table=0, n_packets=75, n_bytes=4500, idle_age=5, 
ip,in_port=2,nw_src=16.0.0.7,nw_dst=1.0.0.7 actions=output:1
 cookie=0x0, duration=6.584s, table=0, n_packets=63, n_bytes=3780, idle_age=5, 
ip,in_port=2,nw_src=16.0.0.8,nw_dst=1.0.0.8 actions=output:1
 cookie=0x0, duration=6.584s, table=0, n_packets=61708007, n_bytes=3702480420, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.9,nw_dst=1.0.0.9 actions=output:1
 cookie=0x0, duration=6.583s, table=0, n_packets=65, n_bytes=3900, idle_age=5, 
ip,in_port=2,nw_src=16.0.0.10,nw_dst=1.0.0.10 actions=output:1
[root@wsfd-netdev36 ~]# ovs-dpctl dump-flows
in_port(1),eth(dst=00:00:00:00:00:01),eth_type(0x0800), packets:86436432, 
bytes:5186185920, used:0.430s, actions:2
in_port(2),eth(dst=00:00:00:00:00:01),eth_type(0x0800), packets:196008690, 
bytes:11760191686, used:0.430s, actions:1
   ^--- issue above
listing tc filter rules gives exactly the rules above too, on both
interfaces.

Then:
# ovs-vsctl set Open_vSwitch . other_config:hw-offload=false
# systemctl restart openvswitch.service

[root@wsfd-netdev36 ~]# ovs-ofctl dump-flows ovs_pvp_br0
NXST_FLOW reply (xid=0x4):
 cookie=0x0, duration=5.710s, table=0, n_packets=399560, n_bytes=23973600, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.1,nw_dst=1.0.0.1 actions=output:2
 cookie=0x0, duration=5.710s, table=0, n_packets=399256, n_bytes=23955360, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.2,nw_dst=1.0.0.2 actions=output:2
 cookie=0x0, duration=5.710s, table=0, n_packets=400018, n_bytes=24001080, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.3,nw_dst=1.0.0.3 actions=output:2
 cookie=0x0, duration=5.709s, table=0, n_packets=399667, n_bytes=23980020, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.4,nw_dst=1.0.0.4 actions=output:2
 cookie=0x0, duration=5.709s, table=0, n_packets=400011, n_bytes=24000660, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.5,nw_dst=1.0.0.5 actions=output:2
 cookie=0x0, duration=5.709s, table=0, n_packets=399651, n_bytes=23979060, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.6,nw_dst=1.0.0.6 actions=output:2
 cookie=0x0, duration=5.709s, table=0, n_packets=400000, n_bytes=24000000, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.7,nw_dst=1.0.0.7 actions=output:2
 cookie=0x0, duration=5.709s, table=0, n_packets=399198, n_bytes=23951880, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.8,nw_dst=1.0.0.8 actions=output:2
 cookie=0x0, duration=5.709s, table=0, n_packets=400489, n_bytes=24029340, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.9,nw_dst=1.0.0.9 actions=output:2
 cookie=0x0, duration=5.709s, table=0, n_packets=399782, n_bytes=23986920, 
idle_age=0, ip,in_port=1,nw_src=16.0.0.10,nw_dst=1.0.0.10 actions=output:2
 cookie=0x0, duration=5.419s, table=0, n_packets=1081, n_bytes=64860, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.1,nw_dst=1.0.0.1 actions=output:1
 cookie=0x0, duration=5.419s, table=0, n_packets=1037, n_bytes=62220, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.2,nw_dst=1.0.0.2 actions=output:1
 cookie=0x0, duration=5.419s, table=0, n_packets=1048, n_bytes=62880, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.3,nw_dst=1.0.0.3 actions=output:1
 cookie=0x0, duration=5.419s, table=0, n_packets=1072, n_bytes=64320, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.4,nw_dst=1.0.0.4 actions=output:1
 cookie=0x0, duration=5.418s, table=0, n_packets=1096, n_bytes=65760, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.5,nw_dst=1.0.0.5 actions=output:1
 cookie=0x0, duration=5.418s, table=0, n_packets=1028, n_bytes=61680, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.6,nw_dst=1.0.0.6 actions=output:1
 cookie=0x0, duration=5.418s, table=0, n_packets=1042, n_bytes=62520, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.7,nw_dst=1.0.0.7 actions=output:1
 cookie=0x0, duration=5.418s, table=0, n_packets=1017, n_bytes=61020, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.8,nw_dst=1.0.0.8 actions=output:1
 cookie=0x0, duration=5.418s, table=0, n_packets=1080, n_bytes=64800, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.9,nw_dst=1.0.0.9 actions=output:1
 cookie=0x0, duration=5.418s, table=0, n_packets=1055, n_bytes=63300, 
idle_age=0, ip,in_port=2,nw_src=16.0.0.10,nw_dst=1.0.0.10 actions=output:1
[root@wsfd-netdev36 ~]# ovs-dpctl dump-flows
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.2,dst=1.0.0.2,frag=no),
 packets:608565, bytes:36513900, used:0.000s, actions:1
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.3,dst=1.0.0.3,frag=no),
 packets:610002, bytes:36600120, used:0.000s, actions:1
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.5,dst=1.0.0.5,frag=no),
 packets:1595, bytes:95700, used:0.013s, actions:2
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.5,dst=1.0.0.5,frag=no),
 packets:609962, bytes:36597720, used:0.000s, actions:1
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.10,dst=1.0.0.10,frag=no),
 packets:1573, bytes:94380, used:0.013s, actions:2
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.7,dst=1.0.0.7,frag=no),
 packets:610297, bytes:36617820, used:0.000s, actions:1
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.9,dst=1.0.0.9,frag=no),
 packets:1656, bytes:99360, used:0.013s, actions:2
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.6,dst=1.0.0.6,frag=no),
 packets:608943, bytes:36536580, used:0.000s, actions:1
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.3,dst=1.0.0.3,frag=no),
 packets:1595, bytes:95700, used:0.038s, actions:2
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.1,dst=1.0.0.1,frag=no),
 packets:1627, bytes:97620, used:0.013s, actions:2
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.2,dst=1.0.0.2,frag=no),
 packets:1588, bytes:95280, used:0.013s, actions:2
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.8,dst=1.0.0.8,frag=no),
 packets:608778, bytes:36526680, used:0.000s, actions:1
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.4,dst=1.0.0.4,frag=no),
 packets:1550, bytes:93000, used:0.013s, actions:2
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.4,dst=1.0.0.4,frag=no),
 packets:609149, bytes:36548940, used:0.000s, actions:1
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.7,dst=1.0.0.7,frag=no),
 packets:1574, bytes:94440, used:0.038s, actions:2
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.9,dst=1.0.0.9,frag=no),
 packets:610471, bytes:36628260, used:0.000s, actions:1
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.8,dst=1.0.0.8,frag=no),
 packets:1566, bytes:93960, used:0.013s, actions:2
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.1,dst=1.0.0.1,frag=no),
 packets:609238, bytes:36554280, used:0.000s, actions:1
recirc_id(0),in_port(2),eth_type(0x0800),ipv4(src=16.0.0.10,dst=1.0.0.10,frag=no),
 packets:609208, bytes:36552480, used:0.000s, actions:1
recirc_id(0),in_port(1),eth_type(0x0800),ipv4(src=16.0.0.6,dst=1.0.0.6,frag=no),
 packets:1573, bytes:94380, used:0.013s, actions:2
  ^--- rules are not merged anymore.

devlink inline-mode = transport for all tests above.

I can provide a packet capture if wanted. Replaying it should be enough
to trigger it, though these packets have nothing really especial. They
have all the same src/dst MAC addresses and increasing IP addresses, as
seen above.

I tried checking ovs logs, but couldn't spot anything interesting.

This is also observed from a performance point of view. It doesn't
matter if we add 10 or 10k flows with L3 matching, performance is always
the same, as it's matching using only 2 L2 rules.

Please let me know if you need anything else.

Thanks,
Marcelo

Hi Marcelo,

thanks for the detailed report. I successfully reproduced an issue with L3 IP matching. We'll check it out.

Thanks,
Roi
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to