And it's the ATM that produces the enormous overhead, not PPPoE.
PPPoE has relatively little overhead, something like 36 bytes for a frame, and the frames are large. ATM, on the other hand, 5 bytes of header on 53 byte packet, but they're fixed size packets.
The best case overhead for ATM is a 48 byte payload, so 53/48 = ~10% overhead right there. The rest of the typical 15% ADSL overhead is largely TCP and IP and the other layers.
The worst case overhead for ATM (other than very small payloads) is a 49 byte payload, because it takes two ATM cells, which means 49 bytes of payload and 116% overhead...
ATM originally served a purpose. By dividing data into tiny cells of 48 bytes, very effective QOS could be performed. It took a small amount of time to send an individual cell, so the time before the system could reprioritize something was very low. This was relevant when ATM was invented, because 1.544 megabit T1 lines were common, and sending a 1500 byte ethernet packet would take almost 8 milliseconds.
Today, however, a 10GigE line can send a full-sized 1500 byte ethernet frame in far less time than a T1 can send an ATM cell, rendering ATM completely useless. We're simply left with the horrible overhead it induces.
ATM itself has a rather amusing history. When defining the standard, the US wanted a 64-byte payload to balance between overhead and transmission time. Europe wanted a 32-byte payload because it would make echo cancellation unecessary on long links (from one end of France to the other, for example). In the end, the standards body picked 48-bytes as a compromise and nobody was happy.--
Developer: Tomato/MLPPP, Linux/MLPPP, etc »fixppp.org