Skip to contentSkip to conversation

i40e source pruning causes packets to be dropped

dpdk-dev [email protected] 1 participant 1 message Mar 4, 2021

lore
Share & tools
lore
#0 lore raw

https://bugs.dpdk.org/show_bug.cgi?id=648

            Bug ID: 648
           Summary: i40e source pruning causes packets to be dropped
           Product: DPDK
           Version: 20.11
          Hardware: x86
                OS: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: ethdev
          Assignee: [email protected]
          Reporter: [email protected]

Target Milestone: ---

Created attachment 146
--> https://bugs.dpdk.org/attachment.cgi?id=146&action=edit
patch

Using DPDK 20.11 with X710 or XL710 NICs, if a VRRP virtual MAC address is added to a port using rte_eth_dev_mac_addr_add(), advertisements from a higher priority VRRP peer which are received on that port are dropped by the NIC before the software gets a chance to see them because the inbound packets originate from the same source MAC address which was added. This breaks VRRP.

The issue has been reported on DPDK dev mailing list a couple of years ago
(http://mails.dpdk.org/archives/users/2018-May/003128.html), but is still present.

It also seems to affect linux kernel networking with i40e devices
(https://lore.kernel.org/lkml/[email protected]/), though there is a workaround available for kernel networking. Running 'ethtool --set-priv-flags ethX disable-source-pruning on' prevents the packets from being dropped.

There is no available method that I have found to disable source pruning in the DPDK i40e driver. Can one be added? Or can the default behavior be changed so that it is not enabled by default?

Using linux kernel networking, the kernel source code that is called when this flag is set is here
https://github.com/torvalds/linux/blob/3cb60ee6323968b694208c4cbd56a7176396e931/drivers/net/ethernet/intel/i40e/i40e_main.c#L13548.
Adding a patch to invoke similar logic to my local DPDK build corrected the problem. My patch just did this unconditionally since there's no flag to indicate that source pruning should be disabled in the DPDK i40e driver. I will attach the patch that I used.

The problem was observed in VPP
(https://gerrit.fd.io/r/gitweb?p=vpp.git;a=summary) version 21.01 using the VRRP plugin. It was reported by multiple users. It affects both X710 and XL710 devices and was observed on both bare metal and using PCI passthrough on VMware. I reproduced the issue on a VMware VM using PCI passthrough with an X710 and tested with the attached patch to correct the issue.

Signature · 2 lines
You are receiving this mail because:
You are the assignee for the bug.