Question about vm-bhyve

From: <trust_no_1_at_libero.it>
Date: Sun, 13 Jul 2025 09:54:51 UTC
Hello everybody.
I have a small pc with FreeBSD 14.3 and only 1 nic, re0.
This pc has a number of jails (vnet) managed with bastille.
Bastille creates the bridge (re0bridge) for the jails, and the all jails work well.

Now I would like to start a debian bhyve vm, managed with vm-bhyve.
I have installed the vm, and the debian vm starts.
I can login in it with:
"vm console debian"
but I can't manage to have the network working for the debian vm.
I have read that vm-bhyve needs to be configured to use a "manual" switch to set up the network, so I created the switch with:
"vm switch create -t manual -b re0bridge switch0vm"
and the command creates the switch:

root@dukefleed:~ # vm switch list
NAME       TYPE    IFACE      ADDRESS  PRIVATE  MTU  VLAN  PORTS
switch0vm  manual  re0bridge  n/a      no       n/a  n/a   n/a

root@dukefleed:~ # vm switch info switch0vm
------------------------
Virtual Switch: switch0vm
------------------------
  type: manual
  ident: re0bridge
  vlan: -
  physical-ports: -
  bytes-in: 7928886 (7.561M)
  bytes-out: 52934599 (50.482M)

Debian is configured to use this switch:

root@dukefleed:~ # cat /vm/debian/debian.conf
loader="grub"
cpu=1
memory=2048M
network0_type="virtio-net"
network0_switch="switch0vm"
disk0_type="ahci-hd"
disk0_name="disk0.img"
grub_run_partition="1"
grub_run_dir="/boot/grub"
uuid="0cd9f236-5808-11f0-bb94-94c6911cb3e4"
network0_mac="58:9c:fc:0c:85:d0"

In rc.conf I have setup vm-bhyve to start debian:
vm_enable="YES"
vm_dir="zfs:zroot/vm"
vm_list="debian"
vm_delay="10"
And indeed it is started, and the tap0 interface *is* created, but tap0 it is *not* added to the switch:

root@dukefleed:~ # vm list
NAME    DATASTORE  LOADER  CPU  MEMORY  VNC  AUTO     STATE
debian  default    grub    1    2048M   -    Yes [1]  Running (1477)

root@dukefleed:~ # ifconfig

re0: flags=1008943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
        options=82099<RXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
        ether 94:c6:91:1c:b3:e4
        inet 192.168.1.18 netmask 0xffff0000 broadcast 192.168.255.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=1008049<UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 16384
        options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
        groups: lo
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
bastille0: flags=8008<LOOPBACK,MULTICAST> metric 0 mtu 16384
        options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
        groups: lo
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
pflog0: flags=1000141<UP,RUNNING,PROMISC,LOWER_UP> metric 0 mtu 33152
        options=0
        groups: pflog
re0bridge: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
        options=0
        ether 58:9c:fc:00:32:71
        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: e0a_bastille0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 11 priority 128 path cost 2000
< OTHER INTERFACES REMOVED FOR CLEARITY >
        groups: bridge
        nd6 options=9<PERFORMNUD,IFDISABLED>
e0a_bastille0: flags=1008943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
        description: vnet host interface for Bastille jail dns
        options=8<VLAN_MTU>
        ether 02:20:98:1c:b3:e4
        hwaddr 02:25:82:a8:15:0a
        groups: epair
< OTHER INTERFACES REMOVED FOR CLEARITY >
tap0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
        description: vmnet/debian/0/re0bridge
        options=4080000<LINKSTATE,MEXTPG>
        ether 58:9c:fc:10:16:14
        groups: tap vm-port
        media: Ethernet 1000baseT <full-duplex>
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        Opened by PID 1477

My question is: what I have missing?
Maybe I have misunderstood how vm-bhyve works, and this is expected?
Maybe it is not possible to have bastille+vm-bhyve both working on a pc with only 1 nic?
Can you please enlight me?
I have spent days google-ing and asking questions to many AI's, but now I have no more ideas.
Thank you in advance and sorry for the english, I am italian.
Greetings fron Italy.

Mauro.