G-PON framing and overhead

In this post, I like to explain the G-PON framing on the wire and its respective overhead for ethernet frames.

TDM structure

G-PON uses a TDM-structure on the wire with 125µs timeslots where each slot has 38880 bytes at 2.48832 Gbit/s in the downstream direction and 19440 bytes at 1.24416 Gbit/s.

The size can be easily calculated, for example, the downstream bit rate:

2.48832 Gbit/s * 1000000000 = 2488320000 bit/s
2488320000 bit/s / 8000 = 311040 bit/125µs
311040 bit/125µs / 8 = 38880 Byte/125µs

GTC frame structure

The GTC layer (G-PON Transmission Convergence Layer) consists of two different sections: GTC header and GTC payload. As the header is different for each direction there is one table for downstream and upstream.

Downstream GTC header

The header has contains the physical control block downstream (PCBd) with the following fields in transmission order:

SizeFieldDescription
4 bytePhysical synchronization (PSync)Used by ONU to find the beginning of a frame during synchronization
4 byteIdent1 bit FEC Indicator, 1 bit is reserved and 30 bit Superframe counter
13 bytePLOAMdcontains PLOAM messages from OLT to ONU
1 byteBIPbit-interleaved parity over all bytes since last BIP, excluding FEC (if present)
8 bytePlendcontains the length of the BWmap, is actually only 4 bytes long, but is sent twice for redundancy, hence 8 byte in summary
n * 8 byte Upstream BWmapeach map contains an upstream bandwidth allocation per T-CONT
based on G.984.3 clause 8.1

If we calculate with just one BWmap per frame we have 38880 byte – 38 byte GTC header = 38842 byte GTC payload. That equals an overhead of ~0,098%.

Upstream GTC header

The upstream GTC contains bursts from one or more ONU. The upstream burst for 1.24416 Gbit/s uses the following structure and transmission order:

SizeFieldDescription
4 byteguard timeguard time for laser on/off times between bursts from different ONU
44 bitpreamblesynchronization pattern for OLT
20 bitdelimitermarks the end of preamble and start of burst header
1 byteBIPbit-interleaved parity over all bytes since the last BIP from the ONU, excluding FEC (if present)
1 byteONU-IDID for the sending ONU allocated by OLT during the ranging process
1 byteIndindication field for status reports from ONU to OLT
13 bytePLOAMucontains PLOAM messages from ONU to OLT, only send if the flag is set within BWmap for T-CONT
2/3 byteDBRuDynamic bandwidth report upstream and is tied to a T-CONT of an ONU, size depends on request within allocation structure for the T-CONT within the BWmap. Consists of DBA and CRC
based on G.984.3 clause 8.2 and G.984.2 Table I.2

There are overlaps, but the first three fields are part of the burst mode overhead. The PLOu consists of preamble till Ind, burst header contains the BIP, ONU-ID, and Ind field, GTC Overhead is PLOAMu and DBRu, allocation interval contains the GTC overhead and GTC payload, and the burst is defined as preamble till the end of the last allocation (without guard time).

It’s not really possible to calculate the overhead as there are more variables than within the downstream overhead. Just as an example using a single ONU with just one T-CONT without any PLOAMu and 2 byte DBR we get the following overhead 19440 byte – 17 byte = 19423 byte. So the assumed overhead is ~0,087%.

Please note that the GTC overhead calculations are more like the minimal possible overhead you can attain with a single ONU within the PON and are not in any way achievable within a real PON network.

GTC Payload overhead

The GTC payload carries GEM frames with a fixed 5 byte header and a variable payload, so there will be just one example calculation with a fixed payload size.

A GEM Header uses the following fixed structure:

SizeFieldDescription
12 bitPLIPayload Length Indicator, payload length in bytes
12 bitPort-IDused for traffic multiplexing
3 bitPTIPayload Type Indicator, used to provide payload fragmentation information
13 bitHECHeader Error Control
based on G.984.3 Figure 8-11

The max payload size of a single GEM frame is 4095 bytes. Each user data frame, eg. ethernet frame, is encapsulated within one or more GEM frames. It’s not possible to transport multiple ethernet frames within one GEM frame, only to split the user data frame over multiple GEM frames.

Ethernet frames are stripped of the preamble and start of frame delimiter. The GEM payload starts with the destination MAC-Address and includes the FCS. With that information, you can calculate the overhead for ethernet. Example for a downstream frame:

38842 byte available
1523 byte GEM frame (5B GEM header, 12B D+S MAC, 2B Type/Length, 1500B payload 4B FCS)
38842 byte / 1523 byte = 25 GEM frames + 1 GEM frame with 762 byte payload fragment
38842 - 26 * 5 byte = 38842 - 130 = 38712 byte GEM payload

Please note that this just calculates the Ethernet payload of a G-PON frame. You could calculate the payload bit rate with this system, but to compare it against the effective bit rate of Ethernet you must add the stripped inter-packet gap, preamble, and start of frame delimiter back to the frames. The payload bit rate is always lower than the effective Ethernet bit rate outside the PON due to stripped Ethernet overhead.