Summary

  • RFC 1989 separated a common Link-Quality-Report mechanism from local policy. Each endpoint could derive loss in both directions while judging usability by its own thresholds and response rules.
  • LQR used cumulative packet, octet and report counters, including observations carried out, saved at reception and returned by the peer. Deltas made the two views comparable; precise counting rules kept different hardware and framing implementations aligned.
  • A report was evidence, not a verdict. Directions could be negotiated independently, counters could wrap, Magic-Number only assisted loopback detection, security was unspecified, and recovery from poor quality was deliberately left to implementations.

A clean carrier could still be a bad link

The physical carrier is present. PPP has reached its Opened state. Packets nevertheless disappear often enough that a router might prefer another route, redial a circuit or suspend network-layer traffic. Which observation proves that this link has become unusable?

PPP did not answer with one universal percentage. In May 1992, RFC 1333 described Link Quality Monitoring; RFC 1989 replaced it in August 1996. The later specification opens with a design boundary that remains more important than any individual counter. It defines the mechanism completely, but does not define the policy for judging quality or deciding what to do.

That refusal was not an omission to be repaired by a central authority. Links carried different traffic, incurred different costs and had different alternatives. A two-percent packet loss rate might be intolerable for one service and survivable for another. The common problem was narrower: two independently built PPP implementations needed a comparable account of what crossed each direction, even if their operators reached different decisions from it.

The Link-Quality-Report, or LQR, became that account. It made evidence interoperable without pretending that evidence eliminates judgement.

One side asked the other side to report

Link quality monitoring was optional and disabled by default. An endpoint that wanted reports used LCP Configuration Option type 4, Quality-Protocol, in its Configure-Request. For LQR the protocol value was hexadecimal c025. A peer that acknowledged the option agreed to send that protocol.

The grammar is directional. The requester says, in effect, “send me monitoring information.” It does not simultaneously promise to send the same information back. PPP allowed the two directions to be negotiated independently, and RFC 1661 even allowed different quality protocols in opposite directions. If an implementation agreed to send LQRs, however, it also had to process incoming LQRs correctly even if it had not requested them or adopted a local monitoring policy.

For LQR, the option added a four-octet Reporting-Period. It expressed the maximum interval between reports in hundredths of a second; the peer could report faster. A zero value selected a response pattern rather than a timer: send an LQR immediately when one arrives. Negotiation prevented both ends from choosing zero and waiting forever for the other to begin.

This is a compact example of voluntary coordination. No LQR appears until an endpoint asks and a peer agrees. Once agreed, protocol c025 and the reporting-period rules form a shared obligation. If the peer later returns Protocol-Reject for LQR, the sender must stop. The wire state proves what was negotiated and observed, not why either operator wanted it.

The report carried two views of one duplex link

LQR field names are relative to the receiver because the receiver requested the report. The packet contains more than a sender's current totals. It carries a small chain of acknowledgement between two measurement points.

PeerOutPackets, PeerOutOctets and PeerOutLQRs describe the sender's current outbound counters. At reception, the local implementation logically appends SaveInPackets, SaveInOctets, discard and error counters, and SaveInLQRs. Those SaveIn values are not bits transmitted on the inbound link; they capture what the receiving process observed at that moment.

On a later report in the opposite direction, those saved receive observations come back as PeerIn... values. LastOut... in turn echoes the most recently received account of the local endpoint's own prior outbound totals. A report therefore lets an endpoint compare what it says it sent with what the peer previously says it received, while also comparing what the peer says it sent with what arrived locally.

This is not a transaction receipt for each packet. It is reconciliation by cumulative counters. Subtracting successive reports yields deltas. The change in PeerInPackets can be compared with the change in LastOutPackets to estimate loss on the outgoing half; SaveInPackets and PeerOutPackets do the same for the incoming half. Octet deltas provide another view. Peer discard and error deltas can suggest whether loss occurred at a congested receiving system rather than on the physical path.

The word “suggest” matters. Counters constrain an explanation; they do not authenticate it or prove a single cause.

Counting had to survive different framing machinery

Two products could agree on every field name and still disagree if they counted different physical representations. One might implement PPP framing in the main process; another might use a modem, converter or hardware device that hides escaping. RFC 1989 therefore specified reference points instead of asking implementations to report whatever their local byte counter happened to show.

Octets covered by the Frame Check Sequence count. The FCS itself counts, as does one flag octet per frame. Additional flag sequences and escape bits or octets do not. The intent is to indicate information crossing the link in a reproducible way, not to measure every physical symbol or total bandwidth consumed. InGoodOctets excludes material in frames counted as discards or errors.

Reports include the expected packet and octet contribution of the report being created. Counters increase monotonically, but their 32-bit fields eventually wrap to zero, so a correct delta calculation must recognize the wrap. Some interface counters are not reset to a common value when LCP enters establishment; relative change, rather than a supposed universal starting point, provides synchronization.

These details look bureaucratic until an incident hinges on them. If one endpoint counts escaped octets and the other does not, their difference resembles loss. If an analyst subtracts across a wrap as ordinary signed arithmetic, a healthy interval becomes an enormous negative event. Interoperability required not merely exchanging numbers, but agreeing what the numbers meant.

Reporting faster was not the same as knowing sooner

LQR packets received the highest multiplexing priority so that evidence would not sit behind ordinary traffic. Even so, reporting cadence was a policy trade-off. On a good link, an LQR is superfluous, and its maximum interval should interfere as little as possible with active traffic. On a lossy link, a longer interval smooths variation but detects complete failure later.

Asymmetry makes simple timer logic dangerous. If incoming reports arrive and show that the outbound side is very bad, sending local reports faster does not help when those reports are likely to be lost on the way to the peer. If the outgoing side is good but the incoming side is bad, more frequent attempts may give some reports a chance to arrive and may help the peer form its own view.

RFC 1989 resisted a one-sample verdict. When a report fails to arrive on time, or a received report suggests a truly bad link, at least one additional LQR should be sent. An algorithmic decision needs at least two round-trip intervals because a missing report may reflect transient load or a lost report rather than enduring failure.

The document suggested hysteresis and offered a K-out-of-N policy as one example. It did not make either the protocol. Nor did it standardize recovery. An implementation might close its Network Control Protocols while continuing LQRs, then reopen them when quality recovers; another might switch routes or disconnect. Comparable evidence did not require identical consequences.

A counter report was not a trust protocol

The LQR carried a Magic-Number when that option had been negotiated. Seeing one's own Magic-Number in an incoming report could reveal a looped-back link. Without negotiation the field was zero and ignored. This preserved the same boundary as PPP's wider Magic-Number mechanism: a value could help detect a wiring or data-link anomaly, but it did not authenticate a person, device or organization.

RFC 1989 states that security issues are not discussed. It defines neither cryptographic integrity for the report nor an independent credential for the reporting peer. Authentication belonged to PPP's authentication phase and its negotiated protocols. An LQR observed at one point proves that a c025-formatted report reached that point; its counter values remain claims within the trust and capture conditions of that link.

Operational records should therefore preserve several layers. Keep the LCP request and acknowledgement, reporting period, actual report arrival times, raw counter values, wrap handling, computed deltas, local thresholds, policy outcome and subsequent action. Do not compress that chain into a single “link bad” timestamp. The report did not contain that verdict.

The minimum mechanism left room for running policy

PPP Link Quality Monitoring matters because it standardized exactly the part that peers had to share. The protocol fixed how to request reports, how often the peer must report at most, where measurements are taken, how both directions are represented and how cumulative views can be reconciled. It left operators free to decide what quality their service required and what remedy their topology could support.

That arrangement made experimentation possible without sacrificing interoperability. Two endpoints could run different K-out-of-N windows, thresholds or recovery procedures and still understand the same LQR. A later implementation did not need permission from a central decision-maker to choose a stricter policy; it only needed to honor the common mechanism it had negotiated.

The evidence ladder remains narrow. IANA's c025 assignment identifies a packet type. A Configure-Ack proves the peer accepted a reporting obligation at that moment. Counter deltas support a loss estimate. Discards and errors refine the hypothesis. Only local policy turns those observations into a usability decision, and only subsequent routing, NCP, link and application evidence establishes the resulting outcome.

The report could make disagreement legible. It was never empowered to abolish it.

Sources