Bug 462 - problems with DHCP that do not meet specs from RFC 2131
: problems with DHCP that do not meet specs from RFC 2131
Status: RESOLVED WONTFIX
Product: SB 2/3
Classification: Unclassified
Component: Wireless
: 62
: All All
: P2 normal (vote)
: Future
Assigned To: Felix Mueller
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2004-07-27 10:16 UTC by Kevin Pearsall
Modified: 2008-10-03 02:49 UTC (History)
2 users (show)

See Also:
Category: ---


Attachments
packet trace showing the behavior (13.73 KB, application/octet-stream)
2004-07-27 10:17 UTC, Kevin Pearsall
Details
Current wireshark capture (2.82 KB, application/octet-stream)
2008-10-03 02:49 UTC, Felix Mueller
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Kevin Pearsall 2004-07-27 10:16:19 UTC
Reported by Harald Alvestrand, including a packet trace.
---
It appears that for some reason the DHCP server (which I think is running on a
Cisco 677i-DIR DSL modem) is not answering the renewal requests. You can see
renewal requests from a PC (which got answered) in the trace too.

First renewal request at 554.188 in the trace.

And at the end of the trace, the client goes into "lost contact" mode - when
what it's actually lost is its own IP address; misleading error message...

I captured this with the filter "ether host <squeezebox> and not tcp port 9000
and not tcp port 3483 or port bootpc or port bootps" - I did not want to look at
the music packets!

Note: I *suspect* that the DHCP server is expecting the renewal request to come
in unicast; RFC 2131 section 4.4.5 says:

  At time T1 the client moves to RENEWING state and sends (via unicast)
  a DHCPREQUEST message to the server to extend its lease.

And it's got another oddity:

  The
  client MUST NOT include a 'server identifier' in the DHCPREQUEST
  message.

The squeezebox' DHCP message does seem to include a server identifier.

The broadcast message that the squeezebox does send seems in conflict with the
same point in this text from RFC 2131 section 4.4.5:

  If no DHCPACK arrives before time T2, the client moves to REBINDING
  state and sends (via broadcast) a DHCPREQUEST message to extend its
  lease.  The client sets the 'ciaddr' field in the DHCPREQUEST to its
  current network address.  The client MUST NOT include a 'server
  identifier' in the DHCPREQUEST message.

It includes a "server identifier". You never know what the server implementation
is going to test for.....

Good luck in figuring this one out .... anything I can do to help...


                        Harald
Comment 1 Kevin Pearsall 2004-07-27 10:17:04 UTC
Created attachment 79 [details]
packet trace showing the behavior
Comment 2 patrick conant 2004-08-10 09:46:33 UTC
I can confirm this behaviour with the cisco 678 DSL model acting as a DHCP
server.  I was unable to capture a trace, but found that setting the SB to a
static IP resolved the connectivity problems.
Comment 3 Kevin Pearsall 2004-09-08 20:46:24 UTC
Heard from another gentleman today who is experiencing this problem with his
Linksys router's DHCP server.
Comment 4 Dave Miner 2005-02-14 19:47:11 UTC
This problem also observed in my home network with my Solaris 10 DHCP server. 
The Squeezebox is clearly violating the specification in its attempts to renew.
 Can work around with a permanent address assignment, but this really shouldn't
be necessary.
Comment 5 Robin Rainton 2006-07-11 23:25:39 UTC
I observed a similar problem with DHCP yesterday.

Setup is 2 x SB2 on Wireless LAN using D-Link DI-524 router (WPA-PSK mode). This is connected to wired LAN with Linux box (FC4) running a DHCP server & Slimserver.

I had the DI-524 CTS/RTS threshold set very low (256 bytes) to try and minimise wireless collisions and while this works when they are already running, it seems to cause the SB2 devices to have a problem on reboot when they try and get DHCP addresses.

In this configuration the SB devices are able to connect to the WLAN but unable to retrieve IP addresses. This is despite the fact I see repeated DHCPOFFER messages in the Linux log (note the 2 MAC addresses of the SB devices):

Jul 11 20:20:45 lled dhcpd: DHCPDISCOVER from 00:04:20:05:cb:5e via eth1
Jul 11 20:20:46 lled dhcpd: DHCPOFFER on 10.1.0.200 to 00:04:20:05:cb:5e via eth1
Jul 11 20:20:50 lled dhcpd: DHCPDISCOVER from 00:04:20:05:cb:5a via eth1
Jul 11 20:20:51 lled dhcpd: DHCPOFFER on 10.1.0.199 to 00:04:20:05:cb:5a via eth1
Jul 11 20:21:49 lled dhcpd: DHCPDISCOVER from 00:04:20:05:cb:5e via eth1
Jul 11 20:21:50 lled dhcpd: DHCPOFFER on 10.1.0.200 to 00:04:20:05:cb:5e via eth1
Jul 11 20:21:54 lled dhcpd: DHCPDISCOVER from 00:04:20:05:cb:5a via eth1
Jul 11 20:21:55 lled dhcpd: DHCPOFFER on 10.1.0.199 to 00:04:20:05:cb:5a via eth1
Jul 11 20:22:58 lled dhcpd: DHCPDISCOVER from 00:04:20:05:cb:5a via eth1
Jul 11 20:22:59 lled dhcpd: DHCPOFFER on 10.1.0.199 to 00:04:20:05:cb:5a via eth1
Jul 11 20:24:02 lled dhcpd: DHCPDISCOVER from 00:04:20:05:cb:5a via eth1
Jul 11 20:24:03 lled dhcpd: DHCPOFFER on 10.1.0.199 to 00:04:20:05:cb:5a via eth1

At this time, a Dell laptop I have was able to connect and get an IP over DHCP so don't think we can blame the router or Linux box.

When I changed the DI-524 RTS/CTS setting back to the default (2436 or something - effectively 'off') the SB2s were able  to get leases, here's one doing so:

Jul 11 21:00:22 lled dhcpd: DHCPDISCOVER from 00:04:20:05:cb:5e via eth1
Jul 11 21:00:23 lled dhcpd: DHCPOFFER on 10.1.0.199 to 00:04:20:05:cb:5e via eth1
Jul 11 21:00:24 lled dhcpd: DHCPREQUEST for 10.1.0.199 (10.1.0.1) from 00:04:20:05:cb:5e via eth1
Jul 11 21:00:24 lled dhcpd: DHCPACK on 10.1.0.199 to 00:04:20:05:cb:5e via eth1
Jul 11 21:01:38 lled dhcpd: DHCPDISCOVER from 00:04:20:05:cb:5e via eth1
Jul 11 21:01:39 lled dhcpd: DHCPOFFER on 10.1.0.199 to 00:04:20:05:cb:5e via eth1
Jul 11 21:01:40 lled dhcpd: DHCPREQUEST for 10.1.0.199 (10.1.0.1) from 00:04:20:05:cb:5e via eth1
Jul 11 21:01:40 lled dhcpd: DHCPACK on 10.1.0.199 to 00:04:20:05:cb:5e via eth1

Sadly the Dell laptop does not play nice with a high RTS/CTS so it's catch 22... I will experiment more later.
Comment 6 Kevin Pearsall 2006-10-10 12:39:27 UTC
Robin, what model of Squeezebox and firmware are you currently using?
Comment 7 Robin Rainton 2006-10-16 17:51:50 UTC
Both players are SB2. They are on firmware 62.

Server is:

SlimServer Version: 6.5b1 - 9519 - Linux - EN - utf8
Perl Version: 5.8.6 i386-linux-thread-multi
MySQL Version: 4.1.16

I haven't seen this problem for a while as have turned the AP back to default settings. Basically, I've given up trying to get the SBs to sync (see bug 259) so the network traffic was a lot lower.
Comment 8 Chris Owens 2006-10-25 15:02:35 UTC
cc'ng Richard.  This isn't related to bug 3851 is it, Richard?
Comment 9 Richard Titmuss 2006-10-26 01:38:18 UTC
OK I am slighly confused. Robin's bug looks different to the others, was this bug re-opened?

Chris could to try setting any access point to have a short RTS/CTS threshold, and see if DHCP works with a linux dhcp server. We need to isolate if it is a Squeezebox2/3 or router issue.
Comment 10 Chris Owens 2006-11-02 10:00:50 UTC
what DHCP server software are you using, Robin?  Is there a regular dhcpd that FC4 uses?  Or something else?

Thanks for any info.  I spent some time trying to reproduce this on my more-familiar debian system with no luck.  I'll try it on FC4.
Comment 11 Richard Titmuss 2008-01-10 12:34:12 UTC
Reassigning Squeezebox firmware bugs to Felix.
Comment 12 Chris Owens 2008-09-15 09:06:21 UTC
If anyone is still seeing this, please re-open.
Comment 13 Nick Vermeulen 2008-09-16 06:54:30 UTC
Is this bug changed to RESOLVED because no more reports came in? I deduct that question from the resolution listed ("WONTFIX") and the last comment...

Non compliance with RFC2131 means that the product will always have DHCP issues with (some) DHCP-servers that -do- comply and because the RFC is authoritive on these issues, it means the SB implementation is broken, not the other way around, i.e. by not complying you do not "make" or "define" the standard, you just don't comply.

I'm just a user of your product but before retiring I was also involved with defining the standards as written in RFC's. Also, I would like to see your products become rock-stable on the networking-part and closing bugs without resolving won't lead to that target...

Nick.



Comment 14 Felix Mueller 2008-10-03 02:49:26 UTC
Created attachment 4099 [details]
Current wireshark capture

Just for completeness I've attached a current wireshark capture containing the initial DHCP Discover, Offer, Request, Ack plus two DHCP Requests and Acks.

Client was a SBB fw 33 and DHCP server was DNSMasq v2.41 with a lease time of 2 minutes.

The renewal DHCP Request is sent unicast and does _not_ contain a 'server identifier' as it should be.