Virtio network driver checksum offload udhcpc

SimonMcNair

Active Member
Jun 22, 2010
47
6
28
Hi,
I'm hoping for some wisdom from people smarter than I am.

I have a proxmox host which is also running DNSmasq for both the local network and Proxmox guests.

I've been using the proxmox guests to trail PXE boot using tftp/http and NFS. All has been going well until I tried SystemrescueCD.

For some reason UDHCPC inside the initramfs would not get an ip address when DHCP worked in the same guest for different distributions.

I finally figured out that, specific to Udhcpd, (https://git.busybox.net/busybox/tree/networking/udhcp/dhcpc.c) it does a checksum of the ip packet and that it was failing.

I then found out that the Virtio network card has a number of issues logged about the checksums not being present, or being incorrect.

I subsequently found out that if I change the guest network card to Realtek RTL8139 the problem disappears completely.

Does anyone know of a configuration change to turn off checksum offloading in the virtio configuration ? I have a workaround but it will only be a matter of time until I forget about the issue and it bites me in the behind again.

regards
Simon
 
Getting the same issue : Proxmox Virtual Environment 5.1-46. Bridged networking for all guests.
Dnsmasq as dhcp server. While the network adapter on client is virtio, dhclient can't get an address.
 
Never had this type of problem with dhclient and/or the ISC Dhcp server, also not with the Windows dhcp client (various types of windows).

Are you sure the LRO/TSO is working correctly in the networking cards on your virtualisation host? This can be an issue. Try switching it off in the host. Never have seen such issues with various intel 10G and 1G Adapters as well as Qlogic Oneconnect.

Btw be aware of the Realtek Emulation, that's really slow. If for some reason you can not use virtio, please use E1000 Emulation
 
Marked as "watch thread" and hoping to get URL an possible bugzilla report URL ...
 
It is important to note, AFAIK that this only affects guests on the host when the host is serving the DHCP and the clients are configured with virtio NIC.

Physical clients connecting to the virtual DHCP server will be fine because the network packets leave the local machine they get a checksum calculated. It is only when the virtual network is used and the packet never leaves the local machine that it is an issue.

Do a 'google' for virtio checksum and you'll see a ton of people with the same issue and lots of people asking for a fix in virtio so that it either calculates the checksum or removes offloading. Most people work around the issue by changing the NIC for one with firmware that doesn't have the bug, or by turning off the offloading within the guest OS
 
also, I believe, udhcpc is one of the few dhcp clients that actually checks the packet checksum. Once you're past initramfs and start up a different dhcp client it works fine. Mine was an issue as I needed udhcpc to work in initramfs as I wanted to boot from NFS
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!