Pointer Mechanism
How pointers enable dynamic alignment without full demultiplexing.
The Core Problem: Marrying Two Different Worlds of Time
The greatest challenge that SDH/SONET was designed to solve was integrating the old, chaotic world of networks with a new, perfectly synchronized one. Imagine a high-speed train (the synchronous STM/OC frame) that must leave the station precisely every 125 microseconds. Now, imagine its cargo (a DS3 data stream) arriving from a factory that uses its own, slightly different clock. The cargo might arrive a tiny bit too early or a fraction too late.
In the old PDH system, this timing difference was handled with complex and inefficient bit-stuffing. This made it nearly impossible to find and extract the DS3 stream without completely dismantling the entire high-speed signal. The revolutionary solution introduced by SDH/SONET is the Pointer Mechanism.
The pointer acts as an intelligent, dynamic "address label" that decouples the payload's timing from the transport frame's timing. It allows the payload to "float" within the frame, absorbing these minor time differences in real-time, all without ever needing to demultiplex the entire signal. This single concept is what enables the easy add/drop multiplexing that makes SDH/SONET so powerful.
The Two Levels of Pointers: AU and TU
The pointer mechanism operates at two hierarchical levels, corresponding to the two main types of payloads transported within the network.
- Administrative Unit (AU) Pointer: This is the high-level pointer used for large payloads. It is responsible for locating a high-order (like a VC-3 or VC-4) within the main STM-1 payload area. It's the "master manifest" for the train's main cargo.
- Tributary Unit (TU) Pointer: This is the low-level pointer used for smaller payloads. It is responsible for locating a low-order Virtual Container (like a VC-11 or VC-12) that has been multiplexed into a high-order VC. It's the "local manifest" for finding a specific box inside a larger container on the train.
While they operate on different scales, the underlying mechanics of both pointer types are nearly identical. For the rest of this page, we will focus on the AU-4 Pointer used in SDH (and its SONET equivalent, the AU-3 Pointer) as the primary example, as it is the most fundamental.
Deep Dive: The Mechanics of the AU-4 Pointer
The AU-4 pointer is not a part of the payload itself. It is a dedicated set of bytes with a fixed, well-known address within the STM-1 frame's overhead.
Location and Structure
AU/TU pointer anchor inside the STM-1 frame
Click the highlighted bytes to inspect how the AU-4 pointer occupies the section overhead and steers the payload.
Section Overhead — 9 rows × 9 columns
Columns 10–270 (not shown) are the STM-1 payload that the pointer steers.H1 is the gateway byte: it advertises payload changes via the New Data Flag and provides the two most significant bits of the 10-bit pointer value.
- Bits 7–4: New Data Flag (NDF) — forces a safe mid-range pointer on payload reconfiguration.
- Bit 3: I-bit (Increment) toggle announcing positive justification events.
- Bit 2: D-bit (Decrement) toggle announcing negative justification events.
- Bits 1–0: Pointer value bits 9 and 8 (MSBs).
Row 4 is the only row in the section overhead that belongs simultaneously to the regenerator layer (RSOH) and the multiplex section layer — perfect for relaying pointer updates end-to-end.
- Location: The AU-4 Pointer occupies the 9 bytes of the 4th row of the Section Overhead. These are officially known as the H1, H2, and H3 bytes.
- Pointer Value: The core of the pointer is a 10-bit number formed by the last 2 bits of the H1 byte and all 8 bits of the H2 byte. This 10-bit value is the offset. It points to the start of the VC-4, specifying its starting byte position relative to the H3 byte. The payload space for a VC-4 within an STM-1 is divided into 783 addressable slots (0 to 782), each 3 bytes long, so the 10-bit pointer ( values) is more than sufficient.
- New Data Flag (NDF): The first 4 bits of the H1 byte form the NDF. It is used to signal a change in the type of payload being carried, and critically, to force the pointer to a safe, central value upon connection setup to avoid problematic edge cases.
- Justification Control (I/D bits): Interspersed within the 10 pointer value bits are special "I" (Increment) and "D" (Decrement) bits. By inverting the pattern of these bits, the transmitter can signal to the receiver that a pointer justification event is about to occur.
- Justification Opportunity Bytes (H3): The three H3 bytes serve as the mechanism for justification. In a negative justification event, these bytes are used to carry extra payload data. In a positive justification event, they are part of the space filled with dummy data.
Pointer Justification in Action
The dynamic adjustment of the pointer to accommodate frequency differences between the incoming payload and the SDH/SONET network is called pointer justification. There are two types of events.
How pointer justification walks through consecutive STM-1 frames
Swap between positive and negative events, then step through the frames to see how the I/D bits, pointer value, and H3 bytes evolve.
The client payload is slightly slower. The SDH node inserts stuffing behind H3, then announces an increment so the pointer jumps forward by 3 bytes on the following frame.
Timeline
4 framesPointer = 88
Steady state before the event. The pointer matches the payload position and the buffer sits near the centre.
H3
Idle pattern (0x00)
Buffer
Buffer within nominal range.
Case 1: Positive Justification (Incrementing the Pointer)
This occurs when the incoming client payload (e.g., a DS3) is running slightly slower than the STM-1 frame's capacity. The buffer at the SDH/SONET node starts to empty.
- Detection: The transmit buffer's fill level drops below a threshold. A justification is required.
- Signaling (in Frame N): To signal the event, the transmitter inverts the "I" bits in the H1/H2 pointer bytes. The pointer value itself remains unchanged for this frame.
- Action (in Frame N): The transmitter inserts three dummy "stuffing" bytes into the three byte positions immediately following the H3 byte. No payload data is placed there. This effectively creates a one-time, 3-byte gap, allowing the buffer to refill slightly.
- Update (in Frame N+1): In the next frame, the transmitter sends the new, incremented pointer value (e.g., if it was 88, it is now 89). The "I" bits are restored to their normal state. The receiver now knows to look for the start of the payload at this new, later position.
Case 2: Negative Justification (Decrementing the Pointer)
This occurs when the incoming client payload is running slightly faster than the STM-1 frame's capacity. The buffer at the SDH/SONET node starts to fill up.
- Detection: The transmit buffer's fill level rises above a threshold.
- Signaling (in Frame N): The transmitter inverts the "D" bits in the H1/H2 pointer bytes to signal the event. The pointer value remains unchanged.
- Action (in Frame N): To get rid of the excess data in the buffer, the transmitter places three bytes of the actual payload data into the normally unused H3 bytes. This is called the negative justification opportunity. This allows an extra three bytes of payload to be sent in this one frame.
- Update (in Frame N+1): In the next frame, the transmitter sends the new, decremented pointer value (e.g., if it was 88, it is now 87). The "D" bits are restored. The receiver knows the payload will now start one position earlier.
Challenges and Critical Aspects
While incredibly powerful, the pointer mechanism has critical aspects and potential pitfalls that must be managed for network stability.
- Pointer Jitter and Wander: Each pointer adjustment, while necessary, introduces an abrupt phase shift into the recovered payload clock at the far end of the network. A single adjustment creates a phase hit of 3 bytes (for AU-4) or 1 byte (for TU-12). Frequent adjustments lead to , while very slow, cumulative drift results in . Network equipment must be designed with special buffers (desynchronizers) and clock-smoothing circuits (PLLs) to filter out this pointer-induced jitter before passing the payload to a PDH device.
- Critical Edge Cases and Data Loss: The pointer mechanism can fail at the boundaries of its value range.
- Decrement at Zero: If the pointer value is 0 and a negative justification is needed, the new value "wraps around" to the maximum (e.g., 782). However, the three bytes of data carried in the H3 bytes of that frame are lost because the receiver interprets the new pointer only after those bytes have already passed.
- Increment at Maximum: A similar data loss event occurs when a positive justification happens while the pointer is at its maximum value.
- Hierarchical Pointers: It is crucial to remember that this process is hierarchical. When an SDH/SONET multiplexer extracts a TUG-3, it first uses the AU-4 pointer to locate the VC-4. Then, inside the VC-4, it must interpret the TU-3 pointers to find the TUG-2s, and then the TU-12/TU-11 pointers inside the TUG-2s to finally extract the individual VC-11/12 payloads. An error in a high-level pointer can make a vast amount of underlying data inaccessible.