[Bug 238198] Traffic through a vm -> bridge(4) -> vlan -> ix(4) does not return

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 23 Jan 2025 10:18:01 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=238198

vlad <vladi.kamburov@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |vladi.kamburov@gmail.com

--- Comment #17 from vlad <vladi.kamburov@gmail.com> ---
Hi there. Are there any solutions about the reported issue?
Because I ran into the same tag-vlan bridge related bug on FreeBSD 14.2
release.

A brief netflow topology of my vm-bhyve setup config:
vm-guest -> tap_if -> bridge -> lagg0.101 -> lagg0 -> switch link
aggregation(lacp proto).

My configuration:
The bridge and interface configuration was made trough a vm-bhyve utilities:

I have two bridges: 

First for all permitted tagged/untagged traffic
# ifconfig vm-prod-untag
vm-prod-untag: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP>
metric 0 mtu 1500
        options=0
        ether 76:af:6f:48:e6:44
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 10 priority 128 path cost 2000000
        member: lagg0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 6 priority 128 path cost 10000
        groups: bridge vm-switch viid-688c3@
        nd6 options=9<PERFORMNUD,IFDISABLED>

Second for tagged vlan101

# ifconfig vm-mgmt-v101
vm-mgmt-v101: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP>
metric 0 mtu 1500
        options=0
        ether 6e:09:e8:bd:9e:bb
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: tap1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 11 priority 128 path cost 2000000
        member: lagg0.101 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 9 priority 128 path cost 10000
        groups: bridge vm-switch viid-55f45@
        nd6 options=9<PERFORMNUD,IFDISABLED>


# ifconfig lagg0.101
lagg0.101:
flags=1008943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,LOWER_UP> metric 0
mtu 1500
        description: vm-vlan/mgmt-v101/lagg0.101
        options=0
        ether 3c:ec:ef:f5:f0:54
        groups: vlan vm-vlan viid-c50e3@
        vlan: 101 vlanproto: 802.1q vlanpcp: 0 parent interface: lagg0
        media: Ethernet autoselect
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>


# ifconfig lagg0
lagg0: flags=1008943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,LOWER_UP>
metric 0 mtu 1500
       
options=8120b8<VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,WOL_MAGIC,VLAN_HWFILTER,HWSTATS>
        ether 3c:ec:ef:f5:f0:54
        hwaddr 00:00:00:00:00:00
        laggproto lacp lagghash l2,l3
        laggport: igb2 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
        laggport: igb3 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
        groups: lagg
        media: Ethernet autoselect
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>



# vm switch list
NAME        TYPE      IFACE          ADDRESS  PRIVATE  MTU  VLAN  PORTS
prod-untag  standard  vm-prod-untag  -        no       -    -     lagg0
mgmt-v101   standard  vm-mgmt-v101   -        no       -    101   lagg0

# vm switch info
------------------------
Virtual Switch: prod-untag
------------------------
  type: standard
  ident: vm-prod-untag
  vlan: -
  physical-ports: lagg0
  bytes-in: 249898 (244.041K)
  bytes-out: 0 (0.000B)

  virtual-port
    device: tap0
    vm: devuan5

------------------------
Virtual Switch: mgmt-v101
------------------------
  type: standard
  ident: vm-mgmt-v101
  vlan: 101
  physical-ports: lagg0
  bytes-in: 78782 (76.935K)
  bytes-out: 0 (0.000B)

  virtual-port
    device: tap1
    vm: devuan5

On the guest-vm tap1 interface the broadcast/multicast traffic on given vlan is
monitored:

13:36:54.002150 58:9c:fc:03:ff:48 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800),
length 342: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from
58:9c:fc:03:ff:48, length 300
13:36:54.678090 e4:4e:2d:20:73:b0 > 01:00:0c:cc:cc:cd, 802.3, length 50: LLC,
dsap SNAP (0xaa) Individual, ssap SNAP (0xaa) Command, ctrl 0x03: oui Cisco
(0x00000c), pid PVST (0x010b), length 42: STP 802.1w, Rapid STP, Flags [Learn,
Forward], bridge-id 8065.e4:4e:2d:20:73:80.8030, length 42
13:36:55.332705 18:e8:29:e0:8f:af > 01:00:5e:7e:7f:3f, ethertype IPv4 (0x0800),
length 60: 192.168.101.18 > 239.254.127.63: igmp v2 report 239.254.127.63
13:36:55.472674 a8:42:a1:3e:ad:3d > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800),
length 766: 192.168.101.56.32953 > 255.255.255.255.29810: UDP, length 724
13:36:55.503004 a8:42:a1:3e:ae:95 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800),
length 765: 192.168.101.50.45589 > 255.255.255.255.29810: UDP, length 723


At the bridge level MAC addresses are learned also

# ifconfig vm-mgmt-v101 addr

3c:ec:ef:ed:ba:23 Vlan0 lagg0.101 1161 flags=0<>
18:e8:29:e0:8f:af Vlan0 lagg0.101 1179 flags=0<>
80:2a:a8:56:06:d8 Vlan0 lagg0.101 1194 flags=0<>
a8:42:a1:3e:ae:2e Vlan0 lagg0.101 1190 flags=0<>
a8:42:a1:3e:ae:1a Vlan0 lagg0.101 1199 flags=0<>
a8:42:a1:3e:ae:5a Vlan0 lagg0.101 1199 flags=0<>
a8:42:a1:3e:ae:9f Vlan0 lagg0.101 1197 flags=0<>
a8:42:a1:3e:ae:0c Vlan0 lagg0.101 1197 flags=0<>
a8:42:a1:3e:ad:70 Vlan0 lagg0.101 1195 flags=0<>
a8:42:a1:3e:ae:11 Vlan0 lagg0.101 1194 flags=0<>
a8:42:a1:3e:ad:3d Vlan0 lagg0.101 1193 flags=0<>
a8:42:a1:3e:ae:95 Vlan0 lagg0.101 1193 flags=0<>
e4:4e:2d:20:73:b0 Vlan0 lagg0.101 1199 flags=0<>
58:9c:fc:03:ff:48 Vlan0 tap2 1196 flags=0<>



Debugging:

When i start dhclient on guest vm, on the lagg0.101
only DHCP Requests are monitored.

# tcpdump -ni lagg0.101 -e port 67 or port 68 -n
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on lagg0.101, link-type EN10MB (Ethernet), snapshot length 262144
bytes
13:50:20.685895 58:9c:fc:03:ff:48 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800),
length 342: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from
58:9c:fc:03:ff:48, length 300
13:50:24.542102 58:9c:fc:03:ff:48 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800),
length 342: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from
58:9c:fc:03:ff:48, length 300
13:50:27.733103 58:9c:fc:03:ff:48 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800),
length 342: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from
58:9c:fc:03:ff:48, length 300


On the lagg0 DHCP Request and DHCP Reply are monitored

tcpdump -ni lagg0 -e vlan 101 and port 67 or port 68 -n
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on lagg0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
13:50:20.685898 58:9c:fc:03:ff:48 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q
(0x8100), length 346: vlan 101, p 0, ethertype IPv4 (0x0800), 0.0.0.0.68 >
255.255.255.255.67: BOOTP/DHCP, Request from 58:9c:fc:03:ff:48, length 300
13:50:20.686402 d2:f7:aa:37:2c:73 > 58:9c:fc:03:ff:48, ethertype 802.1Q
(0x8100), length 346: vlan 101, p 0, ethertype IPv4 (0x0800), 192.168.101.1.67
> 192.168.101.165.68: BOOTP/DHCP, Reply, length 300
13:50:24.542106 58:9c:fc:03:ff:48 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q
(0x8100), length 346: vlan 101, p 0, ethertype IPv4 (0x0800), 0.0.0.0.68 >
255.255.255.255.67: BOOTP/DHCP, Request from 58:9c:fc:03:ff:48, length 300
13:50:24.542858 d2:f7:aa:37:2c:73 > 58:9c:fc:03:ff:48, ethertype 802.1Q
(0x8100), length 346: vlan 101, p 0, ethertype IPv4 (0x0800), 192.168.101.1.67
> 192.168.101.165.68: BOOTP/DHCP, Reply, length 300


In inbound direction somewhere between lagg0 -> lagg0.101 unicast packets are
lost. ARP proto, the same situation.

If I remove lagg0 as a member from the bridge vm-prod-untag, on the other
vm-mgmt-v101 bridge the unicast tagged packets appears.
No matters if we use link-aggregation lagg or physical igbX interface.

Solution can be to use only tagged vlans on the same parent interface, or
untagged traffic to be configured on a standalone interface.

Regards,

-- 
You are receiving this mail because:
You are the assignee for the bug.