SDH

Pointer Mechanism

How pointers enable dynamic alignment without full demultiplexing.

The Core Problem: Coordinating Plesiochronous and Synchronous Timing

The main timing problem addressed by SDH/SONET was carrying tributaries whose clocks were independent alongside a synchronous STM/OC transport frame. A tributary such as a DS3 has the same nominal rate at its endpoints, but its clock is not phase-locked to the transport equipment. The payload therefore reaches the input buffer slightly early or late relative to the 125-microsecond frame boundary.

In PDH, bit stuffing absorbed these rate differences inside nested multiplexers. Recovering one tributary then required reversing the hierarchy and processing the intervening multiplexing stages. SDH/SONET introduced the Pointer Mechanism so a receiver can locate the payload boundary at the appropriate hierarchy level.

The pointer records the payload start position as an offset from a defined reference in the transport frame. The offset can be adjusted when the client and transport clocks differ, while the payload remains in the frame. This lets an ADM reach a selected virtual container without demultiplexing every higher-rate tributary.

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 high-level pointer locates a high-order (such as VC-3 or VC-4) within the relevant administrative unit of the STM-1 frame. The receiver uses this offset before interpreting the path overhead and payload.
  • Tributary Unit (TU) Pointer: This lower-level pointer locates a low-order Virtual Container (such as VC-11 or VC-12) within a higher-order VC. The TU pointer is interpreted after the containing VC has been identified.

Both pointer types use a coded offset and justification indications, but their locations and byte opportunities depend on the hierarchy. In SDH, the example uses the AU-4 Pointer. SONET uses an STS pointer for its STS-3c structure; AU-3 is an SDH arrangement with three AU-3 pointers, not the SONET name for that pointer.

AU-4 pointer mechanics

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

  • Location: The AU-4 pointer occupies 9 bytes in row 4 of the STM-1 frame, in the separate area between RSOH and MSOH. H1 and H2 carry the pointer value, H3 is the justification opportunity, and the remaining positions are reserved by the frame definition. Row 4 is not counted as Section Overhead.
  • Pointer value: Bits 1 to 4 of the pointer word carry the NDF, and bits 5 and 6 code the AU type. The remaining fields form a 10-bit value from the last 2 bits of H1 and all 8 bits of H2. This value gives the offset from H3 to the start of VC-4. The payload space for a VC-4 within an STM-1 is divided into 783 addressable slots from 0 to 782, each 3 bytes long, so the 10-bit pointer (210=10242^{10}=1024 values) covers the full range.
  • New Data Flag (NDF): Bits 1 to 4 of the pointer word form the NDF. The normal pattern is 0110; the enabled pattern is 1001, recognized by a three-out-of-four majority. NDF permits an arbitrary pointer value when the payload alignment or mapping changes, rather than forcing a central value.
  • Justification Control (I/D bits): Five I bits and five D bits are transmitted with the pointer word. Inverting the corresponding five-bit pattern gives the receiver a majority-coded indication that a pointer justification event is being sent.
  • Justification Opportunity Bytes: H3 is the negative justification opportunity. In a negative justification event, the three H3 bytes carry extra payload data. In a positive justification event, the three bytes immediately after H3 are marked as stuffing and do not carry payload.

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. An adjustment is followed by at least three frames without another adjustment, so the next pointer event is normally no earlier than the fourth frame. There are two types of events.

Case 1: Positive Justification (Incrementing the Pointer)

This occurs when the incoming client payload (e.g., a DS3) is running slightly slowerthan the STM-1 frame's capacity. The buffer at the SDH/SONET node starts to empty.

  1. Detection: The transmit buffer's fill level drops below a threshold. A justification is required.
  2. 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.
  3. 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.
  4. 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 fasterthan the STM-1 frame's capacity. The buffer at the SDH/SONET node starts to fill up.

  1. Detection: The transmit buffer's fill level rises above a threshold.
  2. 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.
  3. 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.
  4. 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.

Pointer limits and timing effects

The pointer mechanism has defined limits and timing effects that equipment must handle for stable payload recovery.

  • 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.
  • Boundary Values: The pointer value is an offset in a modulo range, so the boundary operation is defined rather than an indication of payload loss.
    • Decrement at Zero: If the pointer value is 0 and a negative justification is required, the next value wraps to the maximum offset, 782 for AU-4. The receiver applies the defined pointer and H3 opportunity rules, so this wrap is not itself a data-loss event.
    • Increment at Maximum: If the pointer is at its maximum offset and a positive justification is required, the next value wraps to 0. The same minimum spacing between pointer adjustments still applies.
    The wrap operations are uncommon in a normally engineered network. Repeated adjustments at either boundary indicate a clock-frequency or buffering problem that should be investigated.
  • Hierarchical Pointers: Pointer interpretation follows the multiplexing hierarchy. The AU-4 pointer first locates the VC-4. TUG-3 positions are then fixed within that VC-4; a TUG-3 can contain a TU-3 pointing to VC-3 or a set of TUG-2s containing TU-12 and TU-11 pointers. The lower-level pointers locate the individual VC-11 or VC-12 payloads. An error in a high-level pointer can make the contained data inaccessible.

Related articles