Re: Tap device problem on FreeBSD 14.2-RELEASE

From: mike tancsa <mike_at_sentex.net>
Date: Sat, 07 Dec 2024 22:38:57 UTC
On 12/7/2024 4:37 PM, Thomas Laus wrote:
> I used FreeBSD-update to go from 14.1-RELEASE to 14.2-RELEASE and 
> there is an issue with creating and using the tap device.  The device 
> doesn't get created during the boot process and can't be created or 
> used after the system is up.  The UPDATING file has just one entry 
> concerning the tap device and that is change the 'tap' name in all 
> configuration files with 'tuntap'. I did that and get an invalid 
> device reply.  I installed the latest package for vm-bhyve which did 
> not make any difference.  I also deleted /usr/obj/* and checked out a 
> fresh /usr/src and rebuilt FreeBSD-14.2-RELEASE from source without 
> anything working differently.
>
> If anyone has a working tap device using FreeBSD 14.2-RELEASE, I would 
> appreciate you sharing your bhyve portions of /etc/rc.conf, 
> /etc/sysctl.conf and /boot/loader.conf files.
>
I dont have anything unusual in my config. I am running just a few days 
ahead of 14.2, but I dont think that makes a difference


  kldstat
Id Refs Address                Size Name
  1   47 0xffffffff80200000  1f3d9c0 kernel
  2    1 0xffffffff8213f000   5da658 zfs.ko
  3    1 0xffffffff8271a000     36c8 coretemp.ko
  4    2 0xffffffff8271e000    8dae8 pf.ko
  5    1 0xffffffff827ac000     77d8 cryptodev.ko
  6    1 0xffffffff827b4000     3c58 pflog.ko
  7    1 0xffffffff83c20000     3390 acpi_wmi.ko
  8    1 0xffffffff83c24000     4250 ichsmb.ko
  9    1 0xffffffff83c29000     2178 smbus.ko
10    1 0xffffffff83c2c000     7798 if_bridge.ko
11    1 0xffffffff83c34000     60e0 bridgestp.ko
12    1 0xffffffff83c3b000     33c0 uchcom.ko
13    1 0xffffffff83c3f000     4e10 ucom.ko
14    1 0xffffffff83e00000   33e438 vmm.ko
15    1 0xffffffff83c44000     4850 nullfs.ko


Starting up a vm works as before for me

  vmrun.sh -t tap0 -d /baseimage/14-1VM-p6.raw -E  vm0
Launching virtual machine "vm0" ...
fbuf frame buffer base: 0x2be256a00000 [sz 16777216]
3h
3h
3h
BdsDxe: loading Boot0001 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x3,0x0)
BdsDxe: starting Boot0001 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x3,0x0)
Consoles: EFI console
     Reading loader env vars from /efi/freebsd/loader.env
Setting currdev to disk0p2:
FreeBSD/amd64 EFI loader, Revision 1.1

    Command line arguments: loader.efi
    Image base: 0x1e27a000
    EFI version: 2.70
    EFI Firmware: BHYVE (rev 1.00)
    Console: efi (0x20001000)
    Load Path: \EFI\BOOT\BOOTX64.EFI
    Load Device: 
PciRoot(0x0)/Pci(0x3,0x0)/HD(2,GPT,E140336F-1F4D-11EF-AE18-002590EC5BF2,0x17B,0x10418)
    BootCurrent: 0001
    BootOrder: 0000 0001[*] 0002 0003 0004
    BootInfo Path: PciRoot(0x0)/Pci(0x3,0x0)
Ignoring Boot0001: Only one DP found
Trying ESP: 
PciRoot(0x0)/Pci(0x3,0x0)/HD(2,GPT,E140336F-1F4D-11EF-AE18-002590EC5BF2,0x17B,0x10418)
Setting currdev to disk0p2:
Trying: 
PciRoot(0x0)/Pci(0x3,0x0)/HD(1,GPT,E1403365-1F4D-11EF-AE18-002590EC5BF2,0x22,0x159)
Setting currdev to disk0p1:
Trying: 
PciRoot(0x0)/Pci(0x3,0x0)/HD(3,GPT,E1403374-1F4D-11EF-AE18-002590EC5BF2,0x10593,0x200000)
Setting currdev to disk0p3:
Trying: 
PciRoot(0x0)/Pci(0x3,0x0)/HD(4,GPT,E1403378-1F4D-11EF-AE18-002590EC5BF2,0x210593,0x11FFF6D)
Setting currdev to zfs:zroot/ROOT/default:
-
Loading /boot/defaults/loader.conf
Loading /boot/defaults/loader.conf
Loading /boot/device.hints
Loading /boot/loader.conf
Loading /boot/loader.conf.local
?c\
|  ______               ____   _____ _____
   |  ____|             |  _ \ / ____|  __ \
   | |___ _ __ ___  ___ | |_) | (___ | |  | |
   |  ___| '__/ _ \/ _ \|  _ < \___ \| |  | |
   | |   | | |  __/  __/| |_) |____) | |__| |

   | |   | | |    |    ||     |      |      |


.

.

.

root@freebsd:~ # ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=114 time=28.173 ms
^C
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 28.173/28.173/28.173/0.000 ms
root@freebsd:~ # shutdown -p now
Shutdown NOW!

...


The bridge to tap0 works as expected. It gets auto created for me

I can create new ones too

# ifconfig tap1 create


# ifconfig tap1
tap1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
         options=4080000<LINKSTATE,MEXTPG>
         ether 58:9c:fc:10:63:02
         groups: tap
         media: Ethernet 1000baseT <full-duplex>
         status: no carrier
         nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>


On an actually 14.2R box, if I add to rc.conf

cloned_interfaces="bridge0 tap0"

it gets created at boot

% ifconfig tap0
tap0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
         options=80000<LINKSTATE>
         ether 58:9c:fc:10:ff:ed
         groups: tap
         media: Ethernet 1000baseT <full-duplex>
         status: no carrier
         nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>