PPPOE, MTU, and boom.

If you are using an 827 try the ip tcp adjust-mss command.

Taken from CCO:

Resolved Caveats for Release 12.2(2)XH

This section describes possibly unexpected behavior that are resolved in Release 12.2(2)XH.

CSCds69577

The PPPoE standard sets the maximum transmission unit (MTU) of an Ethernet packet to 1492 bytes. If a host PC uses the default
MTU of 1500 bytes, the router between the server and the host would drop those packets. Even though an ICMP message is sent to
the website notifying it of the problem, some websites are programmed to ignore ICMP messages and would continue to send
1500-byte packets that will get dropped.

Starting with Release 12.2(2)XH, you can resolve this problem by changing the value of the maximum segment size (MSS) contained
in the MTU to 1492 or less. Use the following IOS command:

ip tcp adjust-mss mss

where mss is 1492 or less.

This command does not require NAT to be configured.

http://www.cisco.com/univercd/cc/td/doc/product/software/ios122/122relnt/1700/rn1700xh.htm
http://www.cisco.com/univercd/cc/td/doc/product/software/ios122/122relnt/800/rn800xh.htm

This section describes possibly unexpected behavior that are resolved
in Release 12.2(2)XH.

CSCds69577

Starting with Release 12.2(2)XH, you can resolve this problem by
changing the value of the maximum segment size (MSS) contained
in the MTU to 1492 or less. Use the following IOS command:

ip tcp adjust-mss mss

where mss is 1492 or less.

Post-mortem: this seems to work. Hoever, mss is 1460 or less, assuming mtu
is 1492.

dsl1.ahr(config-if)#ip tcp adjust-mss ?
  <500-1460> Maximum segment size in bytes

Key (which took me a moment to figure out): the mss MUST be AT LEAST 32
bytes or more less than MTU; for a while, I had MTU set to 1400 on the
aggregation side, and didn't realise it, and this didn't work. As soon as
I upped the MTU to 1492, all started working, including all broken sites
and quicken.