Description
All vx-submariner VXLAN interfaces — both on the gateway node and on all worker nodes — are assigned the same MAC address. This MAC appears to be derived from the gateway's endpoint IP.
The Linux VXLAN kernel driver includes a loopback detection check in vxlan_rcv(), causing these packets to be dropped. The kernel sees src MAC == local interface MAC → silently drops the packet as a loopback.
Environment
Submariner version: v0.20
CNI: Calico (VXLAN mode, vxlan.calico)
Tested on Scaleway multi-AZ nodes in same private network (172.16.0.0/22)
Testing
On the gateway:
ip -s link show vx-submariner # RX counter frozen despite active workloads
bridge fdb show dev vx-submariner # shows entries for worker IPs
ip link show vx-submariner # note MAC
On any worker (different AZ):
ip link show vx-submariner # same MAC as gateway — the bug
Packet capture on gateway ens7 (or equivalent private NIC) shows UDP/4800 packets do arrive from workers with correct VNI=100 but vx-submariner RX never increments.
Workaround
On each non-gateway node, set a unique MAC for vx-submariner (e.g. derived from the node's private IP):
On node 172.16.0.14:
ip link set vx-submariner address a6:65:ac:10:00:0e
On node 172.16.0.2:
ip link set vx-submariner address a6:65:ac:10:00:02
Description
All vx-submariner VXLAN interfaces — both on the gateway node and on all worker nodes — are assigned the same MAC address. This MAC appears to be derived from the gateway's endpoint IP.
The Linux VXLAN kernel driver includes a loopback detection check in vxlan_rcv(), causing these packets to be dropped. The kernel sees src MAC == local interface MAC → silently drops the packet as a loopback.
Environment
Submariner version: v0.20
CNI: Calico (VXLAN mode, vxlan.calico)
Tested on Scaleway multi-AZ nodes in same private network (172.16.0.0/22)
Testing
On the gateway:
ip -s link show vx-submariner # RX counter frozen despite active workloads
bridge fdb show dev vx-submariner # shows entries for worker IPs
ip link show vx-submariner # note MAC
On any worker (different AZ):
ip link show vx-submariner # same MAC as gateway — the bug
Packet capture on gateway ens7 (or equivalent private NIC) shows UDP/4800 packets do arrive from workers with correct VNI=100 but vx-submariner RX never increments.
Workaround
On each non-gateway node, set a unique MAC for vx-submariner (e.g. derived from the node's private IP):
On node 172.16.0.14:
ip link set vx-submariner address a6:65:ac:10:00:0e
On node 172.16.0.2:
ip link set vx-submariner address a6:65:ac:10:00:02