Heading:qjk40(635)\gPup Error Protocoly756qjk40\gPage Numbers: Yes  X: 527  Y: 10.5"qjk40\gCopyright Xerox Corporation 1979z18697l3033y45c(1270)\gInter-Office Memorandumz18592l4445y762(635)\f5bgTo	Communication Protocols	Date	July 1, 1978z18592l4445d2998e21(0,65535)(1,4445)(5,11684)(6,14146)\f1g2f0t2 1t0 23t6 1f1t0 4f0t7 1t0From	Ed Taft	Location	Palo Altoz18592l4445d2998e25\f1g4f0t2 1t0 7t6 1f1t0 8f0t7 1t0Subject	Pup Error Protocol	Organization	PARC/CSLz18592l4445d2998e25\f1g7f0t2 1t0 18t6 1f1t0 12f0t7 1t0XEROX       z18592l508e14(2116)\f2g5f0Filed on: [Maxc1]<Pup>Error.bravoe30\gz18697l3033e10j(1270)\gThis is a revision of a memo of the same title dated October 17, 1975.z18697l3033e10j\gWhen a Pup is discarded by any agent (either the destination process or any intermediary such as a gateway), that agent may optionally generate an Error Pup notifying the source process of the reason for the Pup's demise.  While Pup-based protocols are designed to work correctly without any form of negative acknowledgment, the Error Protocol is provided to permit more intelligent handling of exceptional conditions and possibly better performance.z18697l3033e10j\gThe Error Protocol makes use of a single registered Pup type.  It is intended that this protocol be able to coexist with all other Pup-based protocols (e.g., Rendezvous/Termination, BSP), but it is not specifically associated with any of them.z18697l3033e10j\gAll numbers are decimal.z18697l3033e10j\gError Pup Formatz18697l3033e22jk80\bgAn Error Pup is constructed in the following manner:z18697l3033e10j\gPup Type	Set to type Pup Error'' (4).z18697l6816d3033e10j(0,6816)(1,65535)(5,65535)(6,65535)\ig8IPup Identifier	Set equal to the Pup Identifier of the original Pup.z18697l6816d3033e10j\ig14IDestination Port	Set equal to the Source Port of the original Pup.z18697l6816d3033e10j\ig16ISource Port	If the agent generating the Error is the destination of the original Pup, then its address (i.e., the original Destination Port) should be used.  If the agent is an intermediary (e.g., a gateway), then the Source Port should reflect that agent's address in some reasonable way (e.g., the Network and Host set to the hardware address at which the Pup was received and the Socket set to zero).z18697l6816d3033e10j\ig11IPup Contents	Words 0-9 are a copy of the Pup Header of the original Pup (some of this information is redundant, but this convention is chosen for simplicity).  Word 10 is a registered Error Code indicating the type of error.  Word 11 is reserved for an optional machine-readable argument.  The remainder of the Pup is optional human-readable text.z18697l6816d3033e10j\ig12I172i10IError Codesz18697l3033e22jk80(1270)\bgThe following Error Codes generally indicate that the Pup was received at its intended destination, but was discarded for the given reason before any logical processing was performed on it.z18697l3033e10j\g14i11I1	The Pup Checksum was incorrect, or the Pup had some other serious inconsistency.z18697l5536d4303e10j\g2	No process existed to receive packets at the given Pup Destination.z18697l5536d4303e10j\g3	The Pup was correctly addressed but failed to reach its destination due to some resource limitation in the destination host.z18697l5536d4303e10j\gThe following Error Codes generally indicate that the Pup was discarded before reaching its intended destination.z18697l3033e10j\g513	The Pup had some serious inconsistency.z18697l5536d4303e10j\g514	The Pup Destination Network could not be reached from here.z18697l5536d4303e10j\g515	The Pup Destination Host was known to be down or nonexistent.z18697l5536d4303e10j\g516	The Pup had been forwarded by 16 gateways without reaching its destination.z18697l5536d4303e10j\g517	The Pup was too large to be forwarded through some intermediate network.  The argument word contains the Pup Length of the largest Pup that can be accomodated.z18697l5536d4303e10j\g518	The Pup was received by some non-gateway host to which it was not addressed.z18697l5536d4303e10j\g519	The Pup failed to be forwarded by a gateway due to some resource limitation.z18697l5536d4303e10j\gNotesz18697l3033e22jk80\bg5BAn Error Pup should never be sent in response to a Pup of type Error or to a broadcast Pup of any type.z18697l3033e10j\gExisting implementations of higher-level protocols make use of only a few of the Error Codes and ignore the rest.  In particular, the Rendezvous/Termination protocol handlers treat sub-type 2 (No such port'') the same as an Abort.z18697l3033e10j\gThe Bcpl Byte Stream Protocol handler responds to Error Codes 3 (Port input queue overflow'') and 519 (Gateway queue overflow'') by modifying its transmission strategy to send fewer packets at a time.  This permits it to adapt to varying conditions of load and congestion.z18697l3033e10j\g