On a server with an Intel X540 NIC adn SR-IOV enabled, I have a network configuration with
eth0 pf ---\
\
--- bond0 --- bond0.3001
/
eth1 pf ---/
I can ping from bond0 to a connected host, but not from bond0.3001.
Packets are leaving the server and according to monitoring on the switch, reply packets are sent back, but the packet are not seen on the server (tcpdumped on eth0, bond0 and bond0.3001).
The strange thing is that the ping from bond0.3001 starts working when I add a vlan interface on one of the virtual functions
ip link set dev eth64 up
vconfig add eth64 3001
ip link set dev eth64.3001 up
This vlan interface can be created on the host system or on a virtual machine that uses one of the virtual functions of eth0. In both cases the ping starts to work and stops when the vlan interface is removed.
Could this be a bug in the driver?
The issue does not appear when SR-IOV is disabled. Then bonding and vlan interfaces on the bond work as expected.
Some additional information:
Server:
HP ProLiant DL360p Gen8
NIC:
lspci
...
03:00.0 Ethernet controller: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01)
03:00.1 Ethernet controller: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01)
03:10.0 Ethernet controller: Intel Corporation X540 Ethernet Controller Virtual Function (rev 01)
03:10.1 Ethernet controller: Intel Corporation X540 Ethernet Controller Virtual Function (rev 01)
...
ethtool -i eth0
driver: ixgbe
version: 3.19.0.46
firmware-version: 0x80000435, 1.285.0
bus-info: 0000:03:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
OS:
CentOS release 6.5 (Final)