An Explanation of DSL Overhead (or: Why is my DSL slower than advertised?)

You may be asking yourself: "Why am I getting 160KB/s on my 1.5M DSL instead of 192KB/s?" The answer is overhead. Your computer sends and receives data in ethernet frames through your ethernet card, to your DSL modem. The DSL modem acts as an ethernet to ATM bridge. Data sent from your computer is encapsulated into ATM cells and sent to the DSL central office. Both ethernet and ATM incur some overhead. ethernet incurs overhead for IP headers, TCP headers, and PPPoE encapsulation overhead if your connection uses PPPoE. This brief FAQ explains these overheads and why you won't ever see speeds equal to your DSL companies advertised speeds (note: some DSL ISPs, notably Verizon, use a higher DSL sync rate to account for some of this overhead).

First, let's take a look at an ethernet frame. For a standard download from, say, a web server, the protocol used is TCP/IP. Both IP and TCP have headers that store various information necessary to routing, destination and source ports, etc. It's beyond the scope of this discussion, but there are a number of resources on the internet that explain the headers in detail. Each ethernet frame needs the TCP and IP headers, both of which may be encapsulated into PPPoE.


Consider the typical ethernet frame. Typically for residential DSL (and cable for that matter), ethernet frames are 1500 bytes. This is controlled by the MTU (maximum transfer unit) value. For PPPoE connections, PPPoE incurs an 8-byte overhead, so the MTU for PPPoE is 1492 bytes instead. Regardless of whether PPPoE is used or not, TCP requires 20 bytes for its own header, as does IP. The result is 40 bytes of overhead per ethernet frame (or 48 with PPPoE). So TCP/IP overhead is roughly 2.67% for an ethernet frame. PPPoE adds an additional 0.533%. So with a typical PPPoE connection, the overhead is 3.2%.

Your ADSL modem is acting as an ethernet to ATM bridge. That is, data your computer transmits over ethernet is encapsulated into ATM cells and sent down your DSL loop to the central office. Likewise, data received by your ADSL modem over ATM is recombined into ethernet frames and sent to your computer.


Each ATM cell has its own header, and thus its own overhead. ATM cells are 53 bytes long, 5 bytes of which constitute the header. This means, for any given ATM cell, the overhead incurred is 9.43%! Now let's consider the "big picture". As your computer sends ethernet frames through your DSL modem, they are split into ATM cells and sent out.


Since each ATM cell can only hold 48 bytes of payload, the first ATM cell will be entirely TCP/IP header information (with PPPoE) or contain only 8 bytes of the ethernet payload without PPPoE. Thus with PPPoE, the first ATM cell is 100% overhead! Subsequent ATM cells contain 48 bytes of ethernet frame data. The last ATM cell in the frame may or may not have null padding. If more data is being sent through the modem, the ATM cell may be mostly filled, or it could only contain the last few bytes of the ethernet frame.

Therefore, the number of bytes of overhead for an Ethernet frame encapsulated into an ATM cell is:
53 bytes (first ATM header) + 5*27 bytes (headers of 27 fully filled ATM cells) + [5 to 37] bytes (header+potential cell padding of last ATM cell)

So the best-case scenario is: 53 + 5*27 + 5 = 193 bytes for header information

And the wort-case scenario is: 53 + 5*27 + 37 = 225 bytes for header information + worst-case null padding

So worst case, throughput is (1500-225)/1500 = 85.00 % efficient
and best case, throughput is (1500-193)/1500 = 87.13 % efficient

In other words, if your DSL sync rate is 1536 kbps, your maximum throughput would be between 1305.6 and 1338.37 kbps. In reality, there is some additional overhead due to the TCP/IP sliding window, latency, and/or packet loss. These represent theoretically maximum throughput.


Copyright Josh Carroll josh.carroll@gmail.com - Feb 26, 2006