udp checksum implementation error in FreeBSD 7.2?

Benoit Panizzon benoit.panizzon at imp.ch
Tue Jun 28 13:09:06 UTC 2011


Hi

We are running a DHCP Server on a FreeBSD 7.2-RELEASE-p4 box.

This works for most of our customers, except ones with some kind of SonicWall 
Firewalls. We have analyzed the problem with the sonicwall tech support:

We found the problem being in the sonicwall setting a UDP checksum of 0x0000 
for DHCP Requests.

According to the RFC this is a valid value and tells the receiving UDP stack 
not to check the checksum:

http://www.faqs.org/rfcs/rfc768.html

If the value is different from 0x0000 the receiving UDP stack can perform a 
checksum check and if this fails, silently drop that packet.

What we observe is:

DHCP Request with UDP checksum set => Packet reaches DHCP Daemon and is being 
answered.
DHCP Request with UDP checksum 0x0000 => ICMP Port Unreachable from FreeBSD.

Can someone confirm this non RFC conform behaviour and knows how to fix it?

As I understand, setting net.inet.udp.checksum to zero would not fix the 
problem, as this is only for packet generation.

Kind regards

Benoit Panizzon
-- 
I m p r o W a r e   A G    -    
______________________________________________________

Zurlindenstrasse 29             Tel  +41 61 826 93 07
CH-4133 Pratteln                Fax  +41 61 826 93 02
Schweiz                         Web  http://www.imp.ch
______________________________________________________


More information about the freebsd-net mailing list