Summary

  • RFC 1221 used acceptance/refusal to report the local disposition of a numbered message on a Host–Wideband Packet Switch access link. Acceptance meant received from that link and not locally refused.
  • The specification explicitly withheld the inference readers are most tempted to make: a WPS acceptance was not an end-to-end acknowledgement, did not guarantee destination delivery and did not prevent later intentional discard.
  • Feedback itself could be disabled for a whole interface or for message number zero. Silence therefore could not be promoted into proof of loss, delivery or continuing work.

A green light beside the host

RFC 1221, W. Edmond’s April 1991 Host Access Protocol (HAP) Specification — Version 2, described the protocol used between hosts and the Wideband Packet Switches of TWBNET. Its RFC Editor catalogue record lists it as Informational and as updating most, but not all, of RFC 907. The IETF Datatracker places it in the Legacy stream and says it has no formal standing in the IETF standards process.

The specification nevertheless records running history, not merely an imagined design. It says HAP had been implemented in TWBNET and in attached routers and hosts, after earlier use in the satellite-based WBNET family. That statement proves a documented implementation context. It does not identify a particular exchange or show that a named installation used every Version 2 feature.

HAP sat below IP and other network protocols, above whatever link mechanism joined a host to its local WPS. It was full duplex but nonreliable: error-free, sequenced exchange on the access circuit had to come from a lower link protocol if it was required. Its datagrams were independent, unsequenced and not guaranteed to arrive. Stream service could reserve bandwidth and reduce delay variance, but a reserved stream did not turn a local signal into a destination receipt.

Against that background, the acceptance/refusal mechanism answered a deliberately smaller question. When enabled, each direction of the Host–WPS link carried eight-bit message numbers. A receiver returned acceptance when the identified message had come off the access link and had not been refused there. A refusal could explain local disposition—insufficient priority, congestion, a dead destination or another enumerated reason—and allow the sender to decide whether to retry.

The specification called A/R the external expression of the receiver’s flow and congestion control. That is the right boundary. The switch’s acceptance showed that one local queueing decision had completed. RFC 1221 then explicitly said what it did not show: no end-to-end acknowledgement, no delivery guarantee to destination hosts, not even assurance that the network would refrain from intentionally discarding the message later. The acceptance existed primarily to help the host manage buffers.

A number with local scope

The message number made this feedback correlatable, but only within a bounded access-link window. Numbers advanced modulo 256, skipped zero and allowed at most 127 outstanding messages in each direction. Datagram and stream traffic shared the sequence. These rules prevented an old local disposition from being confused casually with an unlimited backlog; they did not produce a globally unique identity that could follow a message through multiple switches and into an application.

Efficiency weakened any one-record-one-event intuition further. Acceptance of message N could implicitly accept lower-numbered outstanding messages. A refusal could cover a group when the reason was shared. Mixed indications could be aggregated into one control message, and A/R information could ride on reverse traffic rather than appear in a separate packet. An observed feedback word therefore had to be interpreted with the outstanding window and prior indications, not as an isolated delivery receipt.

Nor did a lack of A/R prove failure. A host selected A/R use for the link in Restart Complete. The interface could instead operate in a pure-discard mode, and message number zero disabled A/R for one message even when the wider mechanism was active. HAP retained an Unnumbered Response for certain critical feedback, but that did not recreate per-message destination evidence. Silence might mean disabled feedback, no reverse packet yet or an unresolved local condition. The protocol alone did not choose among them.

Priority advice was not admission

GOPRI added a different signal. It advertised the lowest priority currently being accepted, allowing a sender to avoid work likely to be refused if the advice remained timely. The word “currently” mattered. GOPRI was advisory state crossing one interface, not a reservation of later capacity. Between the update and the next message, source buffers, intersite links, a destination WPS or a destination host could change.

Refusal codes made more states visible without making the path complete. A source-WPS congestion refusal differed from destination-WPS congestion; a dead destination differed from invalid addressing or insufficient priority. Those distinctions improved local retry policy. They still described why the receiver at the access boundary declined responsibility, not a certified account of every downstream actor.

The same discipline applies to error flags and checksums. A valid HAP header checksum protected the control words from a bounded corruption class. Reliability level selected a network treatment, and a data-error flag could carry an observation toward the destination. None of those fields proved the application understood the payload or that a user obtained the intended result.

Restored traffic did not restore ownership

RFC 1221 also separated access-link restart from durable network-resource state. After a WPS restart, the host could be warned that its belief about streams and groups no longer matched the switch’s state. It was encouraged to query what resources remained allocated. Seeing the link carry messages again therefore did not prove that an earlier stream reservation or group membership survived.

That secondary example reinforces the central lesson. Protocols become auditable when they name small state transitions precisely. Audits become unreliable when operators promote those transitions into larger claims. “Accepted” was useful because it closed the local buffer ledger. It became misleading only when read as “delivered.”

Sources