To some extent answering my own question, I have found the following thread - http://mails.dpdk.org/archives/users/2018-June/003175.html - "[...] if adding vlan filter, the packet will be received with vlan stripped even if the vlan_strip is disabled. It’s i40e HW limitation, different from ixgbe"

I wonder if this has changed, though...

Another thing, more on the VPP side, would be a question whether I could explicitly disable offloading VLAN filter. Any ideas regarding this part?

Cheers,
Mateusz

On 03/08/2020 16:43, Mateusz Kowalski wrote:

Hello everyone,

I have a problem with VLANs being stripped off when using DPDK i40e driver with Intel X710 10GbE even though I'm not enabling stripping in my setup. The stripping happens as soon as I create a sub-interface. The summary of the observed behaviour is as follows

  * no sub-interfaces, `vlan offload: strip off filter off qinq off`,
    pcap and trace [1] show proper VLAN tag on the packet received
  * sub-interface created with a VLAN 979, `vlan offload: strip off
    filter on qinq off`, pcap and trace [2] shows the packet received
    without any VLAN with PKT_RX_VLAN_STRIPPED flag present
  * no configuration regarding VLAN stripping is in place [3] [6]

This problem resembles very much an issue from a few years ago - http://mails.dpdk.org/archives/dev/2016-May/039694.html - but I did not find anything back then what would help me resolve that one here. VPP used is v20.05. What happens effectively is that I can't use this interface with VLAN - as soon as I set an IP address on the sub-interface [4] and try reaching it from the outside, it fails to exchange ARPs [5] because the traffic enters the main interface instead of sub-interface.

Thanks for any advice on how to proceed or whether I can debug anything more to provide more info.

Best,
Mateusz

[1]
Packet 2
00:00:25:799112: dpdk-input
  eno5vf0chocobomb rx queue 0
  buffer 0x9bd41: current data 0, length 60, buffer-pool 0, ref-count 1, totlen-nifb 0, trace handle 0x1000001
                  ext-hdr-valid
                  l4-cksum-computed l4-cksum-correct
  PKT MBUF: port 0, nb_segs 1, pkt_len 60
    buf_len 2176, data_len 60, ol_flags 0x180, data_off 128, phys_addr 0x26f50c0
    packet_type 0x3 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0
    rss 0x0 fdir.hi 0x0 fdir.lo 0x0
    Packet Offload Flags
      PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid
      PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid
    Packet Types
      RTE_PTYPE_L2_ETHER_ARP (0x0003) ARP packet
  ARP: 48:df:37:b9:5d:90 -> ff:ff:ff:ff:ff:ff 802.1q vlan 979
  request, type ethernet/IP4, address size 6/4
  48:df:37:b9:5d:90/152.88.1.8 -> 00:00:00:00:00:00/152.88.1.3
00:00:25:799114: ethernet-input
  frame: flags 0x3, hw-if-index 1, sw-if-index 1
  ARP: 48:df:37:b9:5d:90 -> ff:ff:ff:ff:ff:ff 802.1q vlan 979
00:00:25:799114: error-drop
  rx:eno5vf0chocobomb
00:00:25:799115: drop
  ethernet-input: unknown vlan

[2]
Packet 34
20:34:17:437905: dpdk-input
  eno5vf0chocobomb rx queue 0
  buffer 0x9ee4f: current data 0, length 60, buffer-pool 0, ref-count 1, totlen-nifb 0, trace handle 0x1000021
                  ext-hdr-valid
                  l4-cksum-computed l4-cksum-correct
  PKT MBUF: port 0, nb_segs 1, pkt_len 60
    buf_len 2176, data_len 60, ol_flags 0x1c1, data_off 128, phys_addr 0x27b9440
    packet_type 0x3 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0
    rss 0x0 fdir.hi 0x0 fdir.lo 0x0
    Packet Offload Flags
      PKT_RX_VLAN (0x0001) RX packet is a 802.1q VLAN packet
      PKT_RX_VLAN_STRIPPED (0x0040) RX packet VLAN tag stripped
      PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid
      PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid
    Packet Types
      RTE_PTYPE_L2_ETHER_ARP (0x0003) ARP packet
...

[3]
>  dpdk {
>      dev 0000:b2:02.0 {
>            name eno5vf0chocobomb
>      }
>      uio-driver vfio-pci
>  }

[4]
# show interface address
eno5vf0chocobomb (up):
eno5vf0chocobomb.979 (up):
  L3 152.88.1.3/28

[5]
20:34:17:437905: dpdk-input
  eno5vf0chocobomb rx queue 0
  buffer 0x9ee4f: current data 0, length 60, buffer-pool 0, ref-count 1, totlen-nifb 0, trace handle 0x1000021
                  ext-hdr-valid
                  l4-cksum-computed l4-cksum-correct
  PKT MBUF: port 0, nb_segs 1, pkt_len 60
    buf_len 2176, data_len 60, ol_flags 0x1c1, data_off 128, phys_addr 0x27b9440
    packet_type 0x3 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0
    rss 0x0 fdir.hi 0x0 fdir.lo 0x0
    Packet Offload Flags
      PKT_RX_VLAN (0x0001) RX packet is a 802.1q VLAN packet
      PKT_RX_VLAN_STRIPPED (0x0040) RX packet VLAN tag stripped
      PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid
      PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid
    Packet Types
      RTE_PTYPE_L2_ETHER_ARP (0x0003) ARP packet
  ARP: 48:df:37:b8:fe:a0 -> ff:ff:ff:ff:ff:ff
  request, type ethernet/IP4, address size 6/4
  48:df:37:b8:fe:a0/152.88.1.7 -> 00:00:00:00:00:00/152.88.1.3
20:34:17:437906: ethernet-input
  frame: flags 0x3, hw-if-index 1, sw-if-index 1
  ARP: 48:df:37:b8:fe:a0 -> ff:ff:ff:ff:ff:ff
20:34:17:437906: arp-input
  request, type ethernet/IP4, address size 6/4
  48:df:37:b8:fe:a0/152.88.1.7 -> 00:00:00:00:00:00/152.88.1.3
20:34:17:437907: arp-disabled
  request, type ethernet/IP4, address size 6/4
  48:df:37:b8:fe:a0/152.88.1.7 -> 00:00:00:00:00:00/152.88.1.3
20:34:17:437907: error-drop
  rx:eno5vf0chocobomb
20:34:17:437907: drop
  arp-disabled: ARP Disabled on this interface

[6]
eno5vf0chocobomb                   1     up   eno5vf0chocobomb
  Link speed: 1 Gbps
  Ethernet address ce:5b:ea:e3:45:65
  Intel X710/XL710 Family VF
    carrier up full duplex mtu 1500
    flags: admin-up pmd maybe-multiseg tx-offload intel-phdr-cksum rx-ip4-cksum
    Devargs:
    rx: queues 1 (max 16), desc 1024 (min 64 max 4096 align 32)
    tx: queues 2 (max 16), desc 1024 (min 64 max 4096 align 32)
    pci: device 8086:154c subsystem 103c:0000 address 0000:b2:02.00 numa 0
    max rx packet len: 9728
    promiscuous: unicast off all-multicast on
    vlan offload: strip off filter off qinq off
    rx offload avail:  vlan-strip ipv4-cksum udp-cksum tcp-cksum qinq-strip
                       outer-ipv4-cksum vlan-filter jumbo-frame scatter
    rx offload active: ipv4-cksum jumbo-frame scatter
    tx offload avail:  vlan-insert ipv4-cksum udp-cksum tcp-cksum sctp-cksum
                       tcp-tso outer-ipv4-cksum qinq-insert vxlan-tnl-tso
                       gre-tnl-tso ipip-tnl-tso geneve-tnl-tso multi-segs
    tx offload active: udp-cksum tcp-cksum multi-segs
    rss avail:         ipv4-frag ipv4-tcp ipv4-udp ipv4-sctp ipv4-other ipv6-frag
                       ipv6-tcp ipv6-udp ipv6-sctp ipv6-other l2-payload
    rss active:        none
    tx burst function: i40e_xmit_pkts
    rx burst function: i40e_recv_scattered_pkts_vec_avx2

    rx frames ok                                        3426
    rx bytes ok                                       210688
    extended stats:
      rx good packets                                   3426
      rx good bytes                                   210688
      rx bytes                                        210688
      rx multicast packets                               521
      rx broadcast packets                              2905

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#17132): https://lists.fd.io/g/vpp-dev/message/17132
Mute This Topic: https://lists.fd.io/mt/75966985/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to