Colin,
Just FYI: I've been looking into this Android issue for several years. I no longer think that the devices can be fixed; however, most institutions do not experience it (Princeton is an example of another large institution with this issue). At this point, I am simply trying to identify anything that we have configured here outside the norm in an attempt to stop exercising these bugs.
Here's information on our existing configuration:
DHCP:
1) Server is a generic Bind 9 implementation on Redhat.
2) The vast majority of our wireless IP space is private; however, we do have around 8000 real world addresses assigned. Our problem occurs on both.
3) We currently use multiple /22s with VLAN grouping.
4) Our campus is divided into 7 regions with 5 x /22s for address space.
5) Our lease timers are 15 minutes.
Note the large address pools and small lease timers are in place in an attempt to mitigate the DHCP issue.
Controller:
1) We have 2 x 7240 controllers configured as master/standby.
2) Running 6.3.1.11 currently. Our SE has recommended an upgrade to 6.4.2.4.
3) We do not have "Enforce DHCP" configured. I have tested this, and it is not effective for the issue at hand.
4) "User Idle Timeout" is at 300 seconds.
5) "Station Ageout Time" is at 1000 seconds.
Note the large address pools and small lease timers are in place in an attempt to mitigate the DHCP issue.
A quick description of the issues we see with Android: 1) The devices respond to gratuitous ARPs while asleep. This prevents the controller from aging them out of the user table 2) Upon waking from sleep the devices continue to use their previous leased address without communicating with DHCP. In many cases the address has been freed and assigned to a new device. 3) The Android device can begin using a second IP address without a DHCP conversation. This address is one that has been leased by the device previously.
For more information I will point to the detailed analysis at Princeton: https://www.net.princeton.edu/android/
I will add to this that Google has closed all of these issues as resolved in Android 4.2. However, I have seen these issues on every version of Android from its inception through the current release.
Thank you in advance for any insight.
John