The existing port mirroring implementation uses packet copy operations to replicate traffic from the mirror target site. This patch replaces the packet copy operations with hardware (NIC) device mirroring, which is available from many NICs.
Based on the benchmarks presented at the OvS+OVN Conference 2020 Port Mirroring Offload track http://www.openvswitch.org/support/ovscon2020/), for a 64-byte packet stream, with a single port mirror enabled with the default implementation, the overall system throughput is observed to degrade up to 65%. Running the same test with the attached patch, the performance doubles, and the performance drop, compared to the case where mirroring is disabled, reduces to between 20 - 30%. In addition to port mirroring, in this patch we extend the existing port mirror configuration to support L2 layer based "flow" mirroring, i.e. based on the MAC address, to filter out unwanted packet streams. Signed-off-by: Liang-Min Wang <liang-min.w...@intel.com> Tested-by: Timothy Miskell <timothy.misk...@intel.com> Suggested-by: Munish Mehan <mm6...@att.com> Liang-min Wang (1): Extends the existing mirror configuration parameters lib/automake.mk | 2 + lib/netdev-dpdk-mirror.c | 516 +++++++++++++++++++++++++++++++++++++ lib/netdev-dpdk-mirror.h | 83 ++++++ lib/netdev-dpdk.c | 397 ++++++++++++++++++++++++++++ lib/netdev-provider.h | 16 ++ lib/netdev.c | 386 +++++++++++++++++++++++++++ lib/netdev.h | 16 ++ tests/ovs-vsctl.at | 2 + vswitchd/bridge.c | 271 ++++++++++++++++++- vswitchd/vswitch.ovsschema | 24 +- vswitchd/vswitch.xml | 50 ++++ 11 files changed, 1759 insertions(+), 4 deletions(-) create mode 100644 lib/netdev-dpdk-mirror.c create mode 100644 lib/netdev-dpdk-mirror.h -- 2.25.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev