I've had a problem for a while, but because it's on my home network, it's been slipping to the bottom of my list for too long. However, now my wife has nagged me one too many times and so I need to sort it out.
I have a Slim Devices Squeezebox (http://wiki.slimdevices.com/index.php/Squeezebox) which connects over WiFi to my RB493 running ROS 4.5 (though this problem has existed for quite some time and for a lot of versions of ROS).
After some investigation, the problem appears to be that if the Squeezebox doesn't receive a DHCP ack reply to its renewal request, at the end of the lease period, the Squeezebox assumes it can't have an address and just drops off the network.
The strange thing is that the first renewal request is acknowledged (although ROS doesn't update the lease expiration time). Subsequent lease renewal requests are received by ROS (they show in the DHCP log output), but are not actioned - i.e. ROS does not send an ack and the lease table is not updated.
The Squeezebox attempts to renew its lease when it is half way through its current one (e.g. it will attempt to renew a four day lease after two days). The following tables show what happens and what I think should happen. They assume a lease time of 20 seconds, but the problem occurs whether the lease time is 10 seconds or 7 days. SQB=Squeezebox, ROS=ROS
What actually happens:
Code: Select all
00:00:00 - SQB - discover
00:00:00 - ROS - offer 192.168.44.4
00:00:00 - SQB - request 192.168.44.4
00:00:00 - ROS - ack 192.168.44.4
00:00:10 - SQB - request 192.168.44.4
00:00:10 - ROS - ack 192.168.44.4
00:00:20 - ROS - deassign 192.168.44.4
00:00:20 - SQB - request 192.168.44.4
00:00:23 - SQB - request 192.168.44.4
Code: Select all
00:00:00 - SQB - discover
00:00:00 - ROS - offer 192.168.44.4
00:00:00 - SQB - request 192.168.44.4
00:00:00 - ROS - ack 192.168.44.4
00:00:10 - SQB - request 192.168.44.4
00:00:10 - ROS - ack 192.168.44.4
00:00:10 - ROS - update lease expiration time to 00:00:20
00:00:20 - SQB - request 192.168.44.4
00:00:20 - ROS - ack 192.168.44.4
00:00:20 - ROS - update lease expiration time to 00:00:20
00:00:30 - SQB - request 192.168.44.4
00:00:30 - ROS - ack 192.168.44.4
00:00:30 - ROS - update lease expiration time to 00:00:20
00:00:40 - SQB - request 192.168.44.4
etc. etc.
I also have packet captures which show this happening too. There are no firewall rules which could drop packets and I am at a complete loss as to why this is happening.
Am I missing something? Is the behaviour I am seeing correct? If so, where does the fault lie?
Comments?