# bhyve networking: client sees packets in tcpdump, but they never "arrive"



## dl8dtl (Feb 28, 2020)

I've got a successful bhyve installation which runs a FreeIPA server in a CentOS 8 guest system. Networking uses a simple bridge to the host's re0 interface.

Now, since this bhyve instance allocates the AMD-V hypervisor extensions, I cannot use any of my older VirtualBox guests anymore which would also require AMD-V. Thus, I tried to add another bhyve guest, this time using graphics. I could successfully install both, an Ubuntu 18 and a Linux Mint 19 guest, graphics works, everything starts up fine (not even tuning some "grub_run" lines in the conf file was needed which I had to perform for CentOS) – except, no network packets arrive in the guest.

Entire network configuration is identical to the CentOS guest (where it works like a charm), using the same bridge interface. I can see the network packets flowing around on both, the host's respective tap interface, and even inside the guest on the virtio network interface (they call it "enp0s5" now) using "tcpdump". However, despite of this, the packets I see in tcpdump never "arrive" in the guest itself. The ping responses seen in tcpdump do not make it "upwards" in the guest's networking stack, DNS responses are not noticed of. Nothing works.

Needless to say, DHCP itself did work, the guest did receive both, an IPv4 address, and also an IPv6 address using SLAAC. I can even ping the IPv6 gateway (which is IMHO reached using link-level IPv6 addresses), but nothing beyond, not even the host's IPv6 address.

Anyone any ideas?


----------



## dl8dtl (Mar 3, 2020)

Seems this is a problem with IP (v4) header checksums. Under some circumstances, FreeBSD appears to clear the header checksum to 0 when passing packets to the guests. Thus, I can see the packets in tcpdump (they are passed to the guest), but the guest's OS discards them because of the invalid header checksum.

More ideas wanted _why_ this happens.


----------



## dl8dtl (Mar 3, 2020)

ifconfig re0 -txcsum -rxcsum

on the host does it. But why is that needed?


----------



## rootbert (Mar 3, 2020)

thanks for posting your own solution ... I am sure I will search for it the other day ;-)


----------

