Our Internet access at home has been acting strangely for the past few weeks. Mostly fine, but occasional random slowdowns, and, every so often, complete gridlock. It finally dawned on me to check the logs that I had set up to forward to my Linux box's syslog-ng server. I found these little goodies:
Dec 18 17:06:27 10.0.0.1 kernel: NET: 14 messages suppressed. Dec 18 17:06:27 10.0.0.1 kernel: ip_conntrack: table full, dropping packet.
A-ha! Some Google searching led me to this Wiki article on router slowdown.
The Linksys WRT54G/DD-WRT firmware defaults of 512 connections (too low!) and 3600 second timeouts (too high) were obviously causing the problems. I bumped up the connections to 2048 and dropped the timeouts to 1800. Hopefully it'll fix the problem.