We're seeing something interesting: we're sending a packet from a third-party NIC to the XL710 and it seems the XL710 is stripping the VLAN tag inside the tunnel.
The ethtool offload flags on the XL710 look like this:
ethtool -K p1p1 rx off tx off sg off tso off gso off gro off rxvlan off txvlan off rxhash off tx-udp_tnl-segmentation off rx-vlan-filter off rx-ntuple-filter off tx-nocache-copy off
The driver and firmware version:
driver: i40e
version: 1.2.37
firmware-version: f4.33.31377 a1.2 n4.42 e1932
We're using Ubuntu 14.04.2 with kernel 3.13.0-49-generic (i40e version 1.2.38 gives similar results).
This is the packet that we sent out (attached as gre_vlan.pcap):
13:49:57.163641 00:15:4d:0a:08:cc > 68:05:ca:30:68:80, ethertype IPv4 (0x0800), length 150: 10.100.10.1 > 10.100.10.2: GREv0, key=0x64, proto TEB (0x6558), length 116: 52:12:ef:32:45:ab > 54:a2:32:ef:54:1b, ethertype 802.1Q (0x8100), length 108: vlan 100, p 2, ethertype IPv4, 1.2.3.4.3000 > 5.6.7.8.4000: UDP, length 62
We received this on the LX710 (attached as gre_novlan.pcap):
13:49:57.526798 00:15:4d:0a:08:cc > 68:05:ca:30:68:80, ethertype IPv4 (0x0800), length 146: truncated-ip - 4 bytes missing! 10.100.10.1 > 10.100.10.2: GREv0, key=0x64, proto TEB (0x6558), length 116: 52:12:ef:32:45:ab > 54:a2:32:ef:54:1b, ethertype IPv4 (0x0800), length 108: 1.2.3.4.3000 > 5.6.7.8.4000: UDP, length 62
Is there a flag that we're missing to turn off the automatic VLAN stripping? Note, the VLAN on the frame inside the NVGRE tunnel is stripped: we're able to suppress stripping on the outside of the tunnel.