Summary

  • RFC 2381 preferred marking every ATM cell of a non-conforming IP packet at the ingress edge, where packet boundaries were still visible, instead of letting cell-level policing tag an arbitrary suffix.
  • A low-priority mark was only a treatment instruction. It did not prove that tagged cells would be carried, that AAL5 would reconstruct the packet, or that best-effort delivery would reach the application.

The costly failure began with a perfectly ordinary mismatch of scale. Integrated Services described traffic in IP datagrams. ATM moved fixed-size cells. A single AAL5 packet therefore became a train of cells whose members had no independent value to IP. Lose one necessary member and the receiving edge could discard the entire reassembly, including all the cells the network had successfully transported.

RFC 2381 did not treat that as an incidental implementation detail. It placed a decision at the last point where the network still knew which cells belonged to the same packet.

A service map was not a service result

The document connected two families of abstractions. On the IP side were Guaranteed Service, Controlled-Load Service and ordinary best effort. On the ATM side were CBR, real-time and non-real-time VBR, ABR and UBR. Its natural mappings were Guaranteed Service to CBR or real-time VBR; Controlled Load to non-real-time VBR or ABR with a positive minimum cell rate; and best effort to UBR or ABR.

Those arrows were recommendations, not identity statements. The RFC documented less natural combinations because it could not predict which ATM services deployments would make available. It warned that an ATM QoS class followed the actual ATM service category. Selecting a real-time-looking class could not give real-time behavior to a non-real-time bearer.

Nor did the mapping decide whether a new virtual circuit would exist. The interworking function could calculate suitable parameters as though it were creating one. VC-management policy could still allocate a new circuit, aggregate flows onto an existing circuit, or reserve extra capacity in anticipation of later demand. Requested IP service, mapped ATM parameters, installed VC and observed service remained separate facts.

Excess did not mean disposable

The difficult packets were those outside the flow's TSpec. Guaranteed Service said non-conforming datagrams should be relegated to best effort. Controlled Load imposed a sharper three-part discipline: preserve the contracted service of conforming controlled-load flows, prevent excess traffic from unfairly harming ordinary best effort, and attempt to forward the excess on a best-effort basis when resources existed.

Excess traffic was not necessarily misconduct. RFC 2211 noted that multicast split points could produce large numbers of non-conforming packets during normal operation. A mapper therefore could not equate “outside this reservation envelope” with “safe to discard immediately.” It had to downgrade the treatment while protecting both the reserved traffic and the public best-effort pool.

RFC 2381 carried that obligation across the ATM boundary. Excess traffic must not interfere with the delay and loss treatment of conforming Guaranteed or Controlled-Load traffic. It also must not consume the normal service owed to unreserved best effort. The available mechanisms, however, changed the evidence produced.

The packet boundary was a temporary advantage

With VBR, the attractive mechanism was the Cell Loss Priority bit. Excess traffic could remain in sequence with conforming traffic while its cells received lower loss priority. But an ATM usage-policing function saw a stream of cells. If it began tagging only after a threshold was crossed, it could mark some cells from a packet and leave earlier cells unmarked.

That was locally consistent and globally wasteful. Congestion might remove one of the tagged cells while the untagged cells continued across the fabric. The receiving edge would then fail to reconstruct the AAL5 packet and discard the rest. Bandwidth, buffers and switch work had been consumed by fragments that could not become an IP datagram.

The ingress interworking function possessed knowledge the later cell policer did not: packet boundaries. RFC 2381 therefore said it should anticipate which cells the ATM policer would tag and mark all cells of the affected packet uniformly. The durable rule was not “amber bit means bad packet.” It was “make the downgrade decision where the object being downgraded is still visible.”

This creates a precise chain of receipts. The IP policer classifies a datagram against its TSpec. The IWF projects that decision onto every cell of the datagram. ATM equipment decides what to carry under current load. AAL5 either reconstructs a complete CPCS-PDU or does not. IP forwarding then gets another chance to succeed or fail. No receipt substitutes for the next.

The mark did not bind the switches

The apparent neatness of uniform tagging hid another limit. ATM standards did not require equipment to transport CLP-marked cells whenever spare resources existed. RFC 2381 told operators to discover the actual behavior of the equipment in the path, potentially across several administrative domains. If tagged cells were dropped regardless of load, the mapping no longer provided the intended best-effort opportunity. For Controlled Load, setting a break bit could be the honest response.

That disclosure still would not repair the behavior. It would state that the advertised service chain was broken. A configured CLP option, a passing setup response and a counter showing tagged cells are each narrower than a completed packet at the egress.

Separate circuits solved one problem and created another

When tagging was unavailable or unreliable, excess traffic could use a separate VC. One could build an excess VC beside each QoS VC, share one among an aggregate, or send all excess traffic between an ingress and egress over a common bearer. CBR under TM/UNI 4.0 made this especially relevant because it offered no general excess-over-PCR tagging mechanism.

Separation protected the conforming circuit, but it could reorder packets within one IP flow. The alternative therefore moved the engineering burden rather than erasing it. The egress scheduler had to reconcile two arrival paths; any extra delay ahead of Guaranteed Service traffic had to be reflected in the advertised bound. A service architecture could preserve loss priority and still violate sequence or delay expectations.

Even the arithmetic resisted symbolic shortcuts. IP TSpecs counted bytes and bytes per second. ATM traffic descriptors counted cells. Conversion had to include LLC/SNAP and AAL5 overhead and round each packet into 48-byte cell payloads. A nominal rate copied without framing cost could understate the resources actually consumed.

RFC 2381's historical contribution was thus not a perfect QoS table. It was a disciplined admission that translation changes what can be seen. Packet knowledge existed at one boundary; cell treatment existed at another; reconstruction occurred later. Running behavior, not the name of the mapped service, determined whether the promise survived.