home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 600s / rfc663.txt < prev    next >
Text File  |  1992-10-14  |  45KB  |  1,255 lines

  1.  
  2.  
  3.  
  4.  
  5. Network Working Group                         Rajendra K. Kanodia
  6. Request for Comments #663                        MIT, Project MAC
  7. NIC #31387                                      November 29, 1974
  8.  
  9.  
  10.  
  11.         A LOST MESSAGE DETECTION AND RECOVERY PROTOCOL
  12.  
  13.  
  14. 1.0 INTRODUCTION
  15.  
  16.  
  17. The current  Host-to-Host  protocol  does  not  provide  for  the
  18. following three aspects of network communication:
  19.  
  20.      1. detection of messages lost in the transmission path
  21.      2. detection of errors in the data
  22.      3. procedures for recovery in the event of lost messages or
  23.         data errors.
  24.  
  25.  
  26. In this memo we propose an extension to the Host-to-Host protocol
  27. that  will  allow  detection  of  lost  messages  and  an orderly
  28. recovery from this situation.  If Host-to-Host protocol  were  to
  29. be  amended  to  allow for detection of errors in the data, it is
  30. expected that the recovery procedures proposed here  will  apply.
  31.  
  32.  
  33. With  the  present  protocol,  it  may  some times be possible to
  34. detect loss of messages in the transmission path.  However, often
  35. a lost message (especially one on a control link) simply  results
  36. in  an  inconsistent state of a network connection.  One frequent
  37. (and frustrating) symptom of a message loss on a control link has
  38. been the "lost allocate" problem which results in  a  "paralyzed"
  39. connection.   The  NCP (Network Control Program) at the receiving
  40. site  believes  that  sender  has  sufficient  allocation  for  a
  41. connection,  whereas the NCP of the sending host believes that it
  42. has no allocation (due to either loss of or error  in  a  message
  43. that  contained  the  allocate  command).  The result is that the
  44. sending  site  can  not  transmit  any  more  messages  over  the
  45. connection.   This  problem  was  reported in the NWG-RFC #467 by
  46. Burchfiel and Tomlinson.  They also proposed an extension to  the
  47. Host-to-Host  protocol  which allows for resynchronization of the
  48. connection status.  Their proposed solution was opposed by  Edwin
  49. Meyer  (NWG-RFC  #492)  and  Wayne Hathaway (NWG-RFC #512) on the
  50. grounds that it tended to mask  the  basic  problem  of  loss  of
  51. messages  and  they  suggested  that  the  fundamental problem of
  52. message loss should be solved rather than its  symptoms.   As  an
  53. alternative  to  the  solution  proposed  in  NWG-RFC #467, Wayne
  54. Hathaway suggested that Host-to-Host  protocol  header  could  be
  55. extended  to include a "Sequence Control Byte" to allow detection
  56. of lost messages.  At about the same time Jon Postel suggested  a
  57. similar  scheme  using  message numbers (NWG-RFC #516).  A little
  58. later David Walden proposed that four unused bits of the  message
  59. sequence  number  (in  the IMP leader) be utilized for sequencing
  60.  
  61.  
  62.                     - 1 -
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. messages (NWG-RFC #534).  His scheme is similar to those proposed
  74. by Postel and  Hathaway;   however  it  has  the  advantage  that
  75. Host-to-Host protocol mechanisms can be tied into the IMP-to-Host
  76. protocol mechanisms.
  77.  
  78.  
  79. The  protocol  extension  proposed here uses the four bits of the
  80. message sequence number in the message leader  for  detection  of
  81. lost  messages.  However, to facilitate recovery, it uses another
  82. eight bit field (presently unused) in the 72 bit  header  of  the
  83. regular  messages.   In the next section of this paper we discuss
  84. some of the basic ideas underlying our protocol.  In  section  3,
  85. we  provide  a  description of the protocol.  It is our intention
  86. that section 3 be a self-contained and  complete  description  of
  87. the protocol.
  88.  
  89.  
  90.  
  91. 2.0 BASIC IDEAS
  92.  
  93.  
  94. The  purpose  of this section is to provide a gentle introduction
  95. to the central ideas on which this protocol  is  based.   Roughly
  96. speaking,   our   protocol   can  be  divided  into  three  major
  97. components.   First  is  the  mechanism  for  detecting  loss  of
  98. messages.   Second  is  the  exchange  of information between the
  99. sender and the receiver in the event  of  a  message  loss.   For
  100. reasons  that  will soon become obvious, we have termed this area
  101. as "Exchange of Control Messages".  The third  component  of  our
  102. protocol  is  the  method of retransmission of lost messages.  In
  103. this section, we have reversed the order of  discussion  for  the
  104. second  and third components, because the mechanisms for exchange
  105. of  control  messages  depend  heavily  upon  the  retransmission
  106. methods.
  107.  
  108.  
  109. A  careful  reader  will find that several minor issues have been
  110. left unresolved in this section.  He (or  she)  should   remember
  111. that this section is not intended to be a complete description of
  112. the  protocol.   Hopefully, we have resolved most of these issues
  113. in the formal description of the protocol provided in the section
  114. 3.
  115.  
  116.  
  117. 2.1 DETECTION OF LOSS OF MESSAGES
  118.  
  119.  
  120. The 32 bit Host-to-IMP and IMP-to-Host leaders contain a  12  bit
  121. message-id  in  bit  positions  17 to 28 (BBN Report #1822).  The
  122. Host-to-Host protocol (NIC 8246) uses 8 bits  of  the  message-id
  123. (bit  positions 17 to 24) as a link number.  The remaining 4 bits
  124. of the message-id (bits 25 to 28) are presently unused.  For  the
  125. purposes  of  the  protocol to be presented here, we define these
  126.  
  127.  
  128.                     - 2 -
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139. four bits to be  the  message  sequence  number  (MSN  in  short)
  140. associated  with  the link.  Thus message-id consists of an eight
  141. bit link number and a four bit message sequence number.  The four
  142. bit MSN provides a sixteen element sequence number for each link.
  143. A network connection has a sending host (referred to as  "sender"
  144. henceforth),   a   receiving   host   (referred  to  as  receiver
  145. henceforth), and a link on which messages  are  transmitted.   In
  146. our  protocol  the  sender starts communication with the value of
  147. MSN set to one (i.e. the first message on any link has one in its
  148. MSN field.)  For the next message on the same link the  value  of
  149. MSN  is  increased  by one.  When the value of MSN becomes 15 the
  150. next value chosen is one.  This results in the following sequence
  151. 1, 2, ...., 13, 14, 15, 1, 2, ...., etc.  The receiver can detect
  152. loss  of  messages  by  examining  this  sequence.    Each   hole
  153. corresponds  to  a  lost  message.   Notice  that  the  detection
  154. mechanism will fail if a sequence of exactly 15 messages were  to
  155. be   lost.   For  the  time  being,  we  shall  assume  that  the
  156. probability of loosing a  sequence  of  exactly  15  messages  is
  157. negligible.   However,  we  shall later provide a status exchange
  158. mechanism (Section 2.6) that can be used to prevent this failure.
  159.  
  160.  
  161. Notice that in the sequence described above we have  omitted  the
  162. value  zero.   Following  a  suggestion made by Hathaway (NWG-RFC
  163. #512) and Walden (NWG-RFC #534) the new protocol uses  the  value
  164. zero  to  indicate to the receiving host that the sending host is
  165. not using message sequence numbers.   We,  in  fact,  extend  the
  166. meaning  associated  with  the  MSN  value zero to imply that the
  167. sending host has not implemented the detection and error recovery
  168. protocol being proposed here.
  169.  
  170.  
  171.  
  172. 2.2 COMPATIBILITY
  173.  
  174.  
  175. The discussion above brings us  to  the  issue  of  compatibility
  176. between  the  present  and  the new protocols.  Let us define the
  177. hosts with the present protocol to be type A and the  hosts  with
  178. the new protocol to be type B.  We have three situations:
  179.  
  180.      1. Type  A  communicating  with  type  A:   there   is   no
  181.         difference from the present situation.
  182.      2. Type A communicating with type B: from  the  zero  value
  183.         MSNs  in  messages  sent  by the type A host, the type B
  184.         host can detect the fact that the other host is a type A
  185.         host.  Therefore  the  type  B  host  can  simulate  the
  186.         behaviour of a type A host in its communication with the
  187.         other  host,  and  the type A host will not be confused.
  188.         As we will see later  that  this  simulation  is  really
  189.         simple and can be easily applied selectively.
  190.      3. Type B host communicating with type B:  Both  hosts  can
  191.         detect the fact that the other host is a type B host and
  192.  
  193.  
  194.                     - 3 -
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.         use  the  message detection and error recovery protocol.
  206.  
  207.  
  208. There is one difficulty here that we have not yet resolved.  When
  209. starting communication how does a type B host  know  whether  the
  210. other  host is type A or type B?  This difficulty can be resolved
  211. by assuming that a type A host will not be confused by a non-zero
  212. MSN in the messages that it receives.   This  assumption  is  not
  213. unreasonable   because  a  type  A  host  can  easily  meet  this
  214. requirement by making a  very  simple  change  to  its  NCP  (the
  215. Network  Control  Program),  if  it does not already satisfy this
  216. requirement.  Another assumption that is crucial to our protocol,
  217. is that the type A hosts always set the  MSN  field  of  messages
  218. (they send out) to zero.  As of this writing, the author believes
  219. that   no  hosts  are  using  the  MSN  field  and  therefore  no
  220. compatibility problem should arise.
  221.  
  222.  
  223. 2.3 RETRANSMISSION OF MESSAGES
  224.  
  225.  
  226. Before getting down to the details of  the  actual  protocol,  we
  227. will  attempt here to explain the essential ideas underlying this
  228. protocol  by  considering  a   somewhat   simplified   situation.
  229. Consider  a  logical  communication  channel  X, which has at its
  230. disposal  an  inexhaustible  supply  of  physical   communication
  231. channels  C(1),  C(2),  C(3),  ........,  etc.  (See footnote #1)
  232. Channel X is  to  be  used  for  transmission  of  messages.   In
  233. addition  to  carrying  the  data, these messages contain (1) the
  234. channel name X, and (2) a Message Sequence Number (MSN).  Let  us
  235. denote  the  sender  on  this channel by S and the receiver by R.
  236. Let us also assume that at the start of the communication, R  and
  237. S  are  synchronized  such that R is prepared to receive messages
  238. for logical channel X  on the physical  channel  C(1)  and  S  is
  239. prepared for sending these messages on C(1).  S starts by pumping
  240. a  sequence  of  messages  M(1),  M(2), M(3), ........, M(n) into
  241. channel C(1).  Since these messages contain sequence  numbers,  R
  242. is  able to detect loss of messages on the channel C(1).  Suppose
  243. now that R discovers that message number K (where K <n) was  lost
  244. in  the  transmission  path.   Let  us further assume that having
  245. _________________________________________________________________
  246.  
  247. (1) One method of recovery may be to let the  receiver  save  all
  248. properly  received  messages and require the sender to retransmit
  249. only those messages that were lost.   This  method  requires  the
  250. receiver  to have the ability to reassemble the messages to build
  251. the data stream.  A second method of recovery may be to abort and
  252. restart  the  transmission  at  the  error  point.   This  method
  253. requires  that  the receiving host be able to distinguish between
  254. legitimate messages and messages to be ignored.   For  simplicity
  255. we  have  chosen the second method and an inexhaustible supply of
  256. physical  channels  serves  to  provide  the  distinction   among
  257. messages.
  258.  
  259.  
  260.                     - 4 -
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271. discovered loss of a message, R can communicate this fact to S by
  272. sending an appropriate control message on another logical channel
  273. that is explicitly reserved for transmission of control  messages
  274. from  R to S.  This channel, named Y, is assumed to be completely
  275. reliable.
  276.  
  277.  
  278. We now provide a rather  simplistic  recovery  protocol  for  the
  279. scenario sketched above. Having detected the loss of message M(K)
  280. on channel X, R takes the following series of actions:
  281.  
  282.       1- R stops reading messages on C(1),
  283.       2- R discards those messages that were received on C1  and
  284. are  placed after M(K) in the logical message sequence,
  285.       3- R prepares itself to read messages M(K), M(K+1), .....,
  286. etc.  on the physical channel C(2),
  287.   and 4- R sends a control message to S on  control  channel  Y,
  288. which  will  inform  S  to the effect that there was an
  289. error on logical channel X while using physical channel
  290. C(1) in message number K.
  291.  
  292. When S receives this control message on Y, it takes the following
  293. action:
  294.  
  295.       1- S stops sending messages on C(1),
  296.   and 2- begins  transmission  of  messages  starting  with  the
  297. sequence number K, on the physical channel C(2).
  298.  
  299. This  resynchronization protocol is executed every time R detects
  300. an error.  If physical channel C(CN) was being used at  the  time
  301. of  the  error,  then the next channel to be used is C(CN+1).  We
  302. can define a "receiver synchronization state"  for the channel X,
  303. as the triplet R(C, CN, MSN), where C is the name of the group of
  304. physical channels, CN is the number of the  physical  channel  in
  305. use, and MSN is the number of message expected. (See footnote #1)
  306. We can specify a message received on a given C-channel as M(MSN).
  307. When R receives the message M(R.MSN) on the channel C(R.CN),  the
  308. synch-state  changes  from  R(C,  CN,  MSN)  to  R(C, CN, MSN+1).
  309. However if M.MSN for the message received is greater  than  R.MSN
  310. then  a  message  has been lost, and R changes the synch-state to
  311. R(C, CN+1,  MSN).   What  really  happens  may  be  described  as
  312. follows:  upon  detection  of  error  in  a logical channel X, we
  313. merely discard the physical channel that was in use at  the  time
  314. of  error, and restart communication on a new physical channel at
  315. the point where break occurred.
  316. _________________________________________________________________
  317.  
  318. (1) Notice that we have prefixed this triplet  by  the  letter  R
  319. (for  the  receiver.)   We  will  prefix  other similarly defined
  320. quantities by different letters.  For example M can be  used  for
  321. messages.   This  notation  permits  us to write expressions like
  322. M.MSN = R.MSN, where M.MSN stands for the message sequence number
  323. of the message.
  324.  
  325.  
  326.                     - 5 -
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337. This scheme provides a reliable transmission path X, even  though
  338. the physical channels involved are unreliable.  In this scheme we
  339. have  assumed  that  (1)  a  completely  reliable  channel  Y  is
  340. available for exchange of control messages, and (2) that there is
  341. a large supply of physical channels  available for use of X.   In
  342. the  paragraphs that follow we shall revise our protocol to use a
  343. single physical channel and  then  apply  this  protocol  to  the
  344. channel Y in such a way that Y would become "self-correcting."
  345.  
  346.  
  347. Now  suppose  that channel X has only one physical channel (named
  348. X') available for its use rather than the inexhaustible supply of
  349. physical channels.  Our protocol would still work,  if  we  could
  350. somehow simulate the effect of a large number of C-channels using
  351. the  single  channel X'.  One method of providing this simulation
  352. is to include in each message the name of the C-channel on  which
  353. it  is  being  sent,  and  send  it on X'.  Now the receiver must
  354. examine each message received on X' to determine the C-channel on
  355. which this message was sent.  Our protocol still works except for
  356. one minor difference,  namely,  the  receiver  must  now  discard
  357. messages  corresponding  to C-channels that are no longer in use,
  358. whereas in the previous system the  C-channels  no  longer  being
  359. used  were  simply  discarded.  To be sure, X' can be multiplexed
  360. among only a finite number of C-channels; however, we can provide
  361. a sufficiently large number of C-channels so that during the life
  362. time of the logical channel X, the probability of exhausting  the
  363. supply  of  C-channels would be very low.  And even if we were to
  364. exhaust the supply of C-channels, we could recycle them  just  as
  365. we recycle the message sequence numbers.
  366.  
  367.  
  368. A  physical  message received on X' can now be characterized by a
  369. pair of C-channel number and a message sequence number, as  M(CN,
  370. MSN).  The receiver synchronization state becomes a triplet R(X',
  371. CN,  MSN).   This  state  tells  us  that R is ready to receive a
  372. message for X on the physical channel X'  and  for  this  message
  373. M.CN  should be equal to R.CN and M.MSN should be equal to R.MSN.
  374. All messages with M.CN less than R.CN will be  ignored.   If  for
  375. the  next  message received on X', M.CN = R.CN and M.MSN = R.MSN,
  376. then R changes the synch state to R(X', CN, MSN+1).   If  M.CN  =
  377. R.CN  but  M.MSN  >  R.MSN  then a message has been lost and  the
  378. synch-state R(X', CN, MSN) changes to R(X', CN+1,  MSN).   Notice
  379. that  we  have  not  yet said anything about the situation M.CN >
  380. R.CN.  We will later describe a scheme for  using  this  case  to
  381. provide for error correction on the control channel itself.
  382.  
  383.  
  384.  
  385. 2.4 EXCHANGE OF CONTROL INFORMATION
  386.  
  387.  
  388. So  far  we  have  discussed  two  schemes  for the detection and
  389. retransmission aspects of  the  lost-message  problem.   In  this
  390.  
  391.  
  392.                     - 6 -
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403. section, we discuss methods by which the receiver communicates to
  404. the sender the fact of loss of messages.
  405.  
  406.  
  407. We continue with the scenario developed in the above section with
  408. a small change.  For the purposes of the discussion that is about
  409. to  follow  we  shall  assume that there are actually two perfect
  410. channels available for exchange of control messages.  One channel
  411. from S to R named S->R, and the other from R  to  S  named  R->S.
  412. The  purpose  of S->R will become clear in a moment.  In order to
  413. let R communicate the fact of loss of messages to S, We provide a
  414. control message called L__o_s_t__M_e_s_s_a_g_e__f_r_o_m__R_e_c_e_i_v_e_r (LMR) which  is
  415. of  the  following  form: LMR(X, CN, MSN), where X is the name of
  416. the channel, CN is the new  C-channel  number,  and  MSN  is  the
  417. message  sequence  number  of the lost message.  If more than one
  418. message has been lost, then R uses the MSN of the  first  message
  419. only.  When S receives this message, it can restart communication
  420. at  the  point  where  the  break  occurred  using  the C-channel
  421. specified  by  the  LMR   message.    This   will   restore   the
  422. communication  path  X.   What  happens  if  S  can  not  restore
  423. communication at the break point because it  does  not  have  the
  424. relevant  messages  any more?  This issue can be solved in one of
  425. the two ways: either let the protocol specify a fixed rule that S
  426. will be required to close the connection, or the  protocol  could
  427. allow  S  and R (and may be the users on whose behalf S and R are
  428. communicating on X) to negotiate the action to be taken.  For the
  429. protocol to be presented here, we have taken the approach that  S
  430. may, at its option, either close the connection or negotiate with
  431. R.   What  action  a specific host takes can either be built into
  432. its NCP or determined dynamically.  Those hosts that do not  have
  433. very  powerful  machines will probably chose the static option of
  434. closing the  connection;   other  hosts  may  make  the  decision
  435. depending upon the circumstances.  For example, a host may decide
  436. that  loss  of  messages  is not acceptable during file transfers
  437. whereas  loss of a single message can  be  ignored  for  terminal
  438. output  to  interactive  users.   A  host might even let the user
  439. processes decide  the  course  of  action  to  be  taken.   If  S
  440. determines  that it can not retransmit lost messages, it may want
  441. to let R decide what action is to be taken.   If  S  so  decides,
  442. then  it  may  communicate  this  fact  to  R  by  transmitting a
  443. _L_o_s_t__M_e_s_s_a_g_e__f_r_o_m__S_e_n_d_e_r  (LMS)  control  message  to  R  on  the
  444. channel  S->R.   An LMS message is of the following form:  LMS(X,
  445. CN, MSN, COUNT), where X is the name of the channel,  CN  is  the
  446. name  of  the C-channel obtained from the LMR message, MSN is the
  447. message sequence number of the first message in the  sequence  of
  448. lost  messages,  and  COUNT  is  the  number  of  messages in the
  449. sequence.  S resets its own synch-state for connection X to  S(X,
  450. CN,  MSN+COUNT).   When  S  has  informed  R  of its inability to
  451. retransmit lost messages, the burden of the decision falls on  R,
  452. and  S  simply  awaits R's reply before taking any action for the
  453. channel X.  When R receives the LMS, it may  either  decide  that
  454. loss  is  unacceptable and close the connection, or it may decide
  455. to let S continue.  In the later case R informs S of its decision
  456.  
  457.  
  458.                     - 7 -
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469. to continue by transmitting  a  L__o_s_s__o_f__M_e_s_s_a_g_e__A_c_c_e_p_t_a_b_l_e  (LMA)
  470. control  message to S.  Upon receiving the LMA control message, S
  471. resumes transmission on X.  To avoid the possibility of errors in
  472. exchange  of  control  messages,  the  LMA  control  message   is
  473. specified  to  be  an  exact  replica of the LMS control message,
  474. except for the message code which determines  whether  a  control
  475. message is LMA or LMS or something else.
  476.  
  477.  
  478. In  general,  a  sending host has only a limited amount of memory
  479. available for storing messages for possible retransmission later.
  480. In section 2.6 we provide a status exchange mechanism that can be
  481. used to determine when to discard these messages.
  482.  
  483.  
  484.  
  485. 2.5 RECOVERY ON CONTROL LINKS
  486.  
  487.  
  488. We continue our discussion with the  scenario  developed  in  the
  489. previous  section.  The receiver R may detect loss of messages on
  490. control channels by examining the message sequence numbers on the
  491. messages.  When R detects that a message has  been  lost  on  the
  492. channel   S->R,  it  (R)  may  transmit  an  LMR  to  S  on  R->S
  493. communicating the fact of loss of messages.  When S receives  the
  494. LMR  for  the  control  link,  it must either retransmit the lost
  495. messages,  or  "close"  the  connection.  (In  the   context   of
  496. Host-to-Host protocol, closing the network connection for control
  497. link  implies exchange of reset commands, which has the effect of
  498. reinitializing all communication between R and S.)   For  control
  499. links,  S  does  not  have  the  option  of sending an LMS to the
  500. receiver.  If S can not retransmit  the  lost  messages  then  it
  501. aborts  the  output  queue  (if  any)  for  the channel S->R, and
  502. inserts a Reset command at the break point.  Essentially, we  are
  503. specifying  that  if  S  can not retransmit lost control messages
  504. then the error would be considered irrecoverable and fatal.   All
  505. user  communication  between  S  and  R  is  broken  and  must be
  506. restarted from the beginning.
  507.  
  508.  
  509. In the above paragraph, we considered the situation  in  which  R
  510. was  able to detect the loss of messages.  It is however possible
  511. that it is the last message transmitted on S->R that is lost.  In
  512. this  case,  R will not be aware of the loss.  In this situation,
  513. recovery can  be  initiated  only  if  S  can  either  positively
  514. determine  or  simply  suspect  that a message has been lost.  In
  515. general, after having transmitted a control message, S  would  be
  516. expecting  some  sort  of  response  from  R.  For  example, if S
  517. transmits a Request-for-Connection (RFC) control message to R,  S
  518. expects  R  to reply either with a Close (CLS) command or another
  519. RFC.  If, after an appropriate time  interval has elapsed  and  S
  520. has  received  no reply from R, our protocol specifies that S may
  521. retransmit the control message.  In retransmitting,  S  must  use
  522.  
  523.  
  524.                     - 8 -
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535. the same C-channel and MSN values that were used for the original
  536. message.    Since  R  can,  now,  receive  duplicate  copies,  we
  537. stipulate that if R receives a duplicate of the message  that  it
  538. has already received, it may simply ignore the duplicate.
  539.  
  540.  
  541.  
  542. 2.6 SOME OTHER PROBLEMS
  543.  
  544.  
  545. There  are  two problems that have not yet been solved.  First, a
  546. sending host will usually have only a limited  amount  of  buffer
  547. space   in   which  it  can  save  messages  for  possible  later
  548. retransmission.  So far, we have not provided any method by which
  549. a  host  may  positively  determine  whether  the  receiver   has
  550. correctly received a certain message or not.  Thus it has no firm
  551. basis  on  which  it  may  decide to release the space used up by
  552. messages that have been already transmitted.  The second  problem
  553. is  created  by  our recycling the message sequence numbers.  For
  554. the MSN mechanism to work correctly, it is essential that at  any
  555. given  instant  of  time there be no more than 15 messages in the
  556. transmission path.  If there were more than 15 messages, some  of
  557. these  messages  would have same MSN and LRN, and if one of these
  558. messages were to be lost, it would be impossible to identify  the
  559. lost  message.   However,  the second problem should not arise in
  560. the ARPA Network, since the IMP sub-network will not  allow  more
  561. than  eight  outstanding  messages between any host pair (NWG-RFC
  562. #660).
  563.  
  564.  
  565. We can solve both these problems by a simple yet highly  flexible
  566. scheme.  In this scheme, there are two new control messages.  One
  567. of these, called R__e_q_u_e_s_t S__t_a_t_u_s _f_r_o_m S__e_n_d_e_r (RSS), can be used by
  568. the  sending  host to query the receiver regarding the receiver's
  569. synch-state.  The receiver can supply  its  copies  of  C-channel
  570. number  and  MSN for a transmission path by sending a S__t_a_t_u_s _f_r_o_m
  571. R__e_c_e_i_v_e_r (SFR) control message over the control channel.  An  SFR
  572. provides  positive  acknowledgement;  differing  with  the  usual
  573. acknowledgement schemes in  only  that  here  acknowledgement  is
  574. provided  only upon demand.  Upon receiving SFR, the sender knows
  575. exactly which messages have been properly delivered, and  it  may
  576. free  the  buffer  space used by these messages.  The RSS and SFR
  577. scheme can also be used to ensure that there  are  no  more  than
  578. fifteen messages in the transmission path at any given time.
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.                     - 9 -
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601. 3.0 LOST MESSAGE DETECTION AND RECOVERY PROTOCOL
  602.  
  603.  
  604. This  protocol  is  proposed  as an amendment to the Host-to-Host
  605. Protocol for the purpose of letting  hosts  detect  the  loss  of
  606. messages  in  the  network. It also provides  recovery procedures
  607. from such losses.  This protocol is divided into two parts.  Part
  608. 1 states the compatibility requirements.  Part 2 states  the  new
  609. protocol and must be implemented by hosts that desire to have the
  610. ability  to  recover  from  loss of messages in the network.  The
  611. reader  will  find  many  comments  interspersed  throughout  the
  612. description of this protocol.  These comments are not part of the
  613. protocol and are provided solely for the purpose of improving the
  614. reader's understanding of this protocol.
  615.  
  616.  
  617. The  terminology used in this protocol is similar to that used in
  618. the Host-to-Host protocol.  We speak of  a  "network  connection"
  619. between  a pair of hosts, called the "receiver" and the "sender."
  620. A network connection is described by a pair  of  socket  numbers,
  621. and  once  established, a network connection is associated with a
  622. link (which is described by a link number.)  A network connection
  623. is a logical communication path and the link assigned to it is  a
  624. physical  communication  path.   In  addition to links associated
  625. with the network connections, there are "control-links"  for  the
  626. transmission  of  "control  commands."   When  we  use  the  term
  627. "connection" it may refer to either a network connection  or  the
  628. link  assigned  to  it;  the context decides which one.  The term
  629. "links" encompasses the connection-associated-links  as  well  as
  630. control-links.   Notice  that  a  receiver  of  a  connection may
  631. transmit control commands regarding this connection.
  632.  
  633.  
  634. 3.1 DEFINTIONS
  635.  
  636.  
  637. 3.1.1 HOST TYPE "A"
  638.  
  639.  
  640. Those hosts that have not adopted the part  2  of  this  protocol
  641. amendment will be known as type A hosts.
  642.  
  643. (Comment: All existing hosts are type A hosts.)
  644.  
  645.  
  646. 3.1.2 HOST TYPE "B"
  647.  
  648.  
  649. Those  hosts,  that  adopt  the part 2 of this protocol amendment
  650. will be known as type B hosts.
  651.  
  652.  
  653.  
  654.  
  655.  
  656.                    - 10 -
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667. 3.1.3 MESSAGE SEQUENCE NUMBER (MSN)
  668.  
  669.  
  670. A four bit number associated with regular messages and  contained
  671. in  the  bits  25  through  28 of the Host-to-IMP and IMP-to-Host
  672. leaders for regular messages [BBN Report No. 1822].  This  number
  673. is  used  by  the  type  B hosts to detect loss of messages  on a
  674. given link.  Type A hosts always set the MSN  (for  the  messages
  675. they  send out) to zero.  When in use by a type B host, the first
  676. message on a link (after the connection has been established) has
  677. the MSN value of one.  For each successive message on this  link,
  678. the MSN value is increased by one until it reaches a value of 15.
  679. The next message has the MSN value of one.
  680.  
  681.  
  682. (Comments:  Type  B  hosts  will  use the MSN mechanism only when
  683. communicating with other type B  hosts.  If  a  type  B  host  is
  684. communicating   with  a  type  A  host,  the  type  B  host  will
  685. essentially simulate the behaviour of a type A host and use  zero
  686. MSN values for this communication.)
  687.  
  688.  
  689. 3.1.4 LINK RESYNCH NUMBER (LRN)
  690.  
  691.  
  692. The  Link Resynch Number is an eight bit number associated with a
  693. link and used for resynchronizing the communication.   For  links
  694. associated  with  a  network  connection (i.e. user links), it is
  695. intially set to zero.  For control links, it is set  to  zero  at
  696. the  time  of  the  Network Control Program (NCP) initialization.
  697. For a given link, its current LRN value is copied  into  the  LRN
  698. field  of  all messages sent out on the link.  The LRN values may
  699. be manipulated by type B hosts in accordance  with  the  protocol
  700. described later.
  701.  
  702.  
  703. (Comments:   Our  protocol  specifies  that for all communication
  704. involving a type A host, the LRN value  will  never  change  from
  705. zero.   Since the LRN field is presently unused, all hosts set it
  706. to zero even though they do not explicitly recognize  this  field
  707. as an LRN field.  This guarantees compatibility.)
  708.  
  709.  
  710. 3.1.5 LRN FIELD
  711.  
  712.  
  713. An  eight bit field in the bits 33 through 40 of the Host-to-Host
  714. message header.
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.                    - 11 -
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733. 3.2 NEW CONTROL COMMANDS
  734.  
  735.  
  736. 3.2.1 LMR - LOST MESSAGE FROM RECEIVER
  737.  
  738.  
  739. ___8______8_______8_______8____
  740. |     I      I      I     I
  741. I LMR | link | LRN  | MSN I
  742. I______I_______I_______I______I_
  743.  
  744.  
  745. The LMR command is sent by a receiving host to  let  the  sending
  746. host  know  that  one  or  more messages have been lost.  The MSN
  747. field specifies the message sequence number of the first  message
  748. lost.   The  LRN  field  specifies the new LRN value that must be
  749. used if and when communication is restored.
  750.  
  751. (Comments:  As will be seen later, the LMR command also  has  the
  752. effect of resetting the bit and message allocation in the sending
  753. host   to   zero.   In  order  to  permit  a  sender  to  restore
  754. communication, an LMR command will be usually accompanied with an
  755. allocate command.  However notice  that  these  comments  do  not
  756. apply  to  the  control  links  because  there  is  no allocation
  757. mechanism for the control links.)
  758.  
  759.  
  760. 3.2.2 LMS - LOST MESSAGE FROM SENDER
  761.  
  762.  
  763. ____8_________8________8__________8_________8_____
  764. I        I       I        I         I       I
  765. I  LMS   I Link  I  LRN   I  MSN    I COUNT I
  766. I__________I________I_________I__________I________I_
  767.  
  768.  
  769. This command is sent by a sender host in reply to an LMR  command
  770. if it (the sender) can not retransmit the lost messages specified
  771. by  the LMR command.  The purpose of this command is to query the
  772. receiver whether or not  the  loss  of  messages  is  acceptable.
  773. After  sending  this command, the sender waits for a reply before
  774. transmitting any messages over the link involved.   This  command
  775. may  not  be  sent for control links.  The LRN and MSN values are
  776. same as those specified by the LMR command.  COUNT specifies  the
  777. number of messages lost.
  778.  
  779.  
  780.  
  781. 3.2.3  LMA - LOSS OF MESSAGES ACCEPTABLE
  782.  
  783.  
  784. This  command  is  identical  to  the  LMS command accept for the
  785. command code.  Upon receipt of an LMS  command,  a  receiver  may
  786.  
  787.  
  788.                    - 12 -
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799. send  this command to the sender to let the sender know that loss
  800. of messages is acceptable.  All fields in this command are set to
  801. corresponding values in the LMS command.
  802.  
  803.  
  804.  
  805. 3.2.4  CLS2 - CLOSE2
  806.  
  807.  
  808. ____8___________3_2_______________3_2_____________8_______8______
  809. I       I              I                 I       I      I
  810. I CLS2  I  my socket   I your socket     I  LRN  I MSN  I
  811. I________I_______________I__________________I________I_______I_
  812.  
  813.  
  814. The CLS2 command is similar to the current CLS command except for
  815. the LRN and MSN fields included in the  new  command.   Both  the
  816. receiving and sending hosts copy their values of LRN and MSN into
  817. the CLS2 command.  Upon receiving a CLS2 command, a host compares
  818. the LRN and MSN values contained in the CLS2 command with its own
  819. values  for  the  connection  involved.   If  these values do not
  820. match, then an  error  has  occurred  and  a  host  may  initiate
  821. recovery procedures.
  822.  
  823. (Comments:   The  purpose  of  this command is to ensure that the
  824. last message  transmitted  on  a  connection  has  been  received
  825. succesfully.)
  826.  
  827.  
  828.  
  829. 3.2.5 ECLS - ERROR CLOSE
  830.  
  831.  
  832. _____8___________3_2___________3_2_________
  833. I        I             I             I
  834. I  ECLS  I my socket   I  your socketI
  835. I_________I______________I______________I_
  836.  
  837.  
  838. The  ECLS  command  is similar to the current CLS command.  It is
  839. used  for   closing   connections   which   have   sufferred   an
  840. irrecoverable loss of messages.
  841.  
  842. (Comments: A connection may be closed in any one of the following
  843. three ways:
  844.  
  845.       1. A connection which has not yet been opened  succesfully
  846. may  be  closed  by  the  CLS command.  All connections
  847. involving type A hosts must be  closed  using  the  CLS
  848. command.
  849.       2. Connections between type B hosts may  be  closed  using
  850. CLS2  command.   A connection is considered closed only
  851. if matching CLS2 commands have been  exchanged  between
  852.  
  853.  
  854.                    - 13 -
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865. the sender and the receiver.
  866.       3. Those connections  between  type  B  hosts,  that  have
  867. sufferred  an  irrecoverable  loss of messages, must be
  868. closed by the ECLS command.)
  869.  
  870.  
  871.  
  872. 3.2.6 RSS - REQUEST STATUS FROM SENDER
  873.  
  874.  
  875. ____8_______8______
  876. I      I        I
  877. I RSS  I LINK   I
  878. I_______I_________I_
  879.  
  880.  
  881. A sending host may issue an RSS command to  find  out  about  the
  882. status  of transmission on a particular connection or the control
  883. link.
  884.  
  885.  
  886.  
  887. 3.2.7  RSR - REQUEST STATUS FROM RECEIVER
  888.  
  889.  
  890. ____8_________8_____
  891. I       I        I
  892. I RSR   I LINK   |
  893. I________I_________I_
  894.  
  895.  
  896. A receiver can issue an RSR command to find out about the  status
  897. of  transmission  on a particular connection or the control link.
  898.  
  899.  
  900.  
  901. 3.2.8 SFR - STATUS FROM RECEIVER
  902.  
  903.  
  904. ____8_________8_________8_________8____
  905. I        I        I        I       I
  906. I SFR    I  LINK  I  LRN   I MSN   I
  907. I_________I_________I_________I________I_
  908.  
  909.  
  910. A receiving host may issue this  command  to  inform  the  sender
  911. about  the  state of a particular connection or the control link.
  912.  
  913.  
  914.  
  915. 3.2.9 SFS - STATUS FROM SENDER
  916.  
  917.  
  918.  
  919.  
  920.                    - 14 -
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931. ____8_________8_________8_________8____
  932. I        I        I        I       I
  933. I SFS    I  LINK  I  LRN   I MSN   I
  934. I_________I_________I_________I________I_
  935.  
  936.  
  937. A sending host may issue this  command  to  inform  the  receiver
  938. about  the  state of a particular connection or the control link.
  939.  
  940.  
  941.  
  942. 3.3  THE PROTOCOL
  943.  
  944.  
  945. 3.3.1 PART ONE
  946.  
  947.  
  948. All type A hosts must use zero MSN and LRN values on the messages
  949. sent out by them.  When communicating with a host of  type  A,  a
  950. type B host must simulate the behaviour of type A host.
  951.  
  952. (Comments:   Notice  that  this  simulation is not complicated at
  953. all.  All that  is  required  is  that   hosts  that  adopt  this
  954. protocol  must  not use it when communicating with the hosts that
  955. have not adopted it.)
  956.  
  957.  
  958. 3.3.2 PART TWO
  959.  
  960.  
  961. This part of the protocol is stated as a set of rules which  must
  962. be  observed  by  all  type B hosts when communicating with other
  963. type B hosts.
  964.  
  965.  
  966. 3.3.2.1 RESPONSIBILITIES OF HOSTS AS SENDERS
  967.  
  968.  
  969.     (1). A type B sending host must use message sequence numbers
  970. on all regular messages that it sends to other  type  B
  971. hosts  as  specified  in  the definition of the message
  972. sequence numbers (Section 3.1.3).
  973.     (2). A type B sending host must use link resynch numbers  on
  974. all  regular  messages  that  it  sends to other type B
  975. hosts as specified in the definition  of  link  resynch
  976. number (Section 3.1.4).
  977.     (3). A sending host may retransmit a message if it  suspects
  978. that  the  message  may  have  been lost in the network
  979. during previous transmission.
  980.     (4). A sending host may issue an RSS command to the receiver
  981. to determine the state of transmission on any link.
  982.     (5). A sending host must use the ECLS  command  to  close  a
  983. connection, if the connection is being closed due to an
  984.  
  985.  
  986.                    - 15 -
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997. irrecoverable  transmission  error.  Otherwise, it must
  998. the CLS2 command.
  999.  
  1000.  
  1001.  
  1002. 3.3.2.2 RESPONSIBILITIES OF HOSTS AS RECEIVERS
  1003.  
  1004.  
  1005.     (1). A receiver host will maintain LRN and  MSN  values  for
  1006. each link on which it receives messages.  Initial value
  1007. of  LRN  will be zero, and initial value of MSN will be
  1008. one.   For  each  receive  link,  the  host  should  be
  1009. prepared  to  receive a message with LRN and MSN values
  1010. specified by its tables.  When the  host  has  received
  1011. the  expected  message  on a given link, it will change
  1012. its table MSN value as specified in the  definition  of
  1013. MSN.
  1014.     (2). On a given link, if a host receives a message  with  an
  1015. LRN  value  smaller than the one in use, it will ignore
  1016. the message.
  1017.     (3). If a host receives a duplicate message  (same  LRN  and
  1018. MSN values), it will ignore the duplicate.
  1019.     (4). A host will examine  the  MSN  values  on  all  regular
  1020. messages  that  it receives to detect loss of messages.
  1021. If on any link, one or more messages are found missing,
  1022. it will concern itself with only the first message lost
  1023. and take the following series of action:
  1024.  
  1025.        1. Increase its own LRN value for this  link  by
  1026.           one.
  1027.        2. Send an LMR command to the sending host  with
  1028.           LRN  field set to the new value and MSN field
  1029.           set to  the  sequence  number  of  the  first
  1030.           message lost.
  1031.        3. Realizing that LMR  command  will  cause  the
  1032.           allocation  to be reset to zero, it will send
  1033.           more allocation. This is  not  applicable  to
  1034.           the control links.
  1035.  
  1036. However,  if  a  host  does  not  want  to initiate the
  1037. recovery procedures, it may simply close the connection
  1038. by an ECLS command.
  1039.     (5). A receiver host may  issue the RSR command to determine
  1040. the state of transmission on any link.
  1041.     (6). If a connection is being closed due to an irrecoverable
  1042. error, a receiving host  must  use  the  ECLS  command.
  1043. Otherwise it must use the CLS2 command.
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.                    - 16 -
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063. 3.3.2.3  SENDING HOST'S RESPONSE TO CONTROL MESSAGES
  1064.  
  1065.  
  1066.     (1). RSR command: the sender must transmit a SFS command  to
  1067. the receiver for the link involved.
  1068.     (2). ECLS command: The sender must cease transmission, if it
  1069. has  not  already done so, and issue an ECLS command if
  1070. it has  not  already  issues  either  a  ECLS  or  CLS2
  1071. command.
  1072.     (3) CLS2 command: The sender must compare the  LRN  and  MSN
  1073. values  of  the CLS2 command with its own values of the
  1074. LRN and MSN for the connection involved.  If  an  error
  1075. is  indicated,  it may either close the connection with
  1076. an ECLS, or initiate recovery action  as  specified  in
  1077. the section 3.3.2.1.
  1078.     (4). LMR command for  a  connection  (i.e.,  not  a  control
  1079. link):  The  sender may follow any one of the following
  1080. three courses of action:
  1081.  
  1082.        1. Close the connection with an ECLS command.
  1083.        2. Set the allocations for the link involved  to
  1084.           zero,  set  LRN  to that specified in the LMR
  1085.           command, and  restart  communication  at  the
  1086.           point of break.
  1087.        3. Set the allocations for the link involved  to
  1088.           zero,  set  the  LRN to that specified in the
  1089.           LMR command, and send an LMS command  to  the
  1090.           receiver  host informing him that one or more
  1091.           of   the   lost   messages   can    not    be
  1092.           retransmitted.  After sending an LMS command,
  1093.           a  sending  host  must  not transmit any more
  1094.           messages  on  the  link  involved  until  and
  1095.           unless  it  receives  an LMA command from the
  1096.           receiver host.
  1097.  
  1098. (Comments:  As  we  have  mentioned  before  (Section  2.3),  the
  1099. decision  regarding which course of action to follow depends upon
  1100. a number of factors.  For example, if a host has implemented only
  1101. the detection of lost messages aspect of  our  protocol  (and  no
  1102. recovery),  then  it  will  chose the first option of closing the
  1103. connection.)
  1104.  
  1105.     (5). LMR for a control link: The sender may take one of  the
  1106. following two actions:
  1107.  
  1108.        1. Set the LRN to  that  specified  in  the  LMR
  1109.           command  and  begin  retransmission  of  lost
  1110.           messages
  1111.        2. Set the LRN to  that  specified  by  the  LMR
  1112.           command,  and  insert  a Reset command at the
  1113.           break point.
  1114.  
  1115.  
  1116.  
  1117.  
  1118.                    - 17 -
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129. (Comment:  If a sending host can not retransmit messages lost  on
  1130. a   control   link,   then   this   protocol  requires  that  all
  1131. communication between the two host be broken, and  reinitialized.
  1132. We do not explicitly specify the actions that are associated with
  1133. the  exchange  of Reset commands.  These actions are specified by
  1134. the Host-to-Host protocol.)
  1135.  
  1136.     (6). LMA command:  When  a  sending  host  receives  an  LMA
  1137. command  matching  an  LMS command previously issued by
  1138. it, it may resume transmission.
  1139.  
  1140. (Comments: The protocol does not require the sending host to take
  1141. any specific action with regard to a SFR. However, a sending host
  1142. may use the information contained in the  SFR  command  regarding
  1143. the  state of transmission.  From a SFR command a sender host may
  1144. determine what messages have been received properly.  The  sender
  1145. may   use  this  information  to  cleanup  its  buffer  space  or
  1146. retransmit messages that it might suspect are lost.)
  1147.  
  1148.  
  1149.  
  1150. 3.3.2.4 RECEIVING HOST'S RESPONSE TO CONTROL MESSAGES
  1151.  
  1152.  
  1153.     (1). RSS command: A receiver is obligated to transmit a  SFR
  1154. to the sender for the link involved.
  1155.  
  1156.     (2). ECLS command:  The receiver must close  the  connection
  1157. by  issuing  an ECLS command if it has not already done
  1158. so.
  1159.  
  1160.     (3). CLS2 command: A receiver must compare the LRN  and  MSN
  1161. values  of  the  command  with  its  own values for the
  1162. connection involved.  If an error is indicated, it  may
  1163. either  close  the  connection  by  an  ECLS command or
  1164. initiate recovery procedures as  specified  in  section
  1165. 3.3.2.2.
  1166.  
  1167.     (4). LMS command: The receiver may take one of the following
  1168. two courses of action:
  1169.  
  1170.      (1). Close the connection  specified  by  the  LMS
  1171.           command, by issuing an ECLS command.
  1172.      (2). Set the  link  involved  to  be  prepared  to
  1173.           receive  messages  starting with the sequence
  1174.           number MSN + COUNT, where MSN and  COUNT  are
  1175.           those   specified   by   the   LMS   command.
  1176.           (Comment: This action implies  that  receiver
  1177.           is  willing  to  accept  the loss of messages
  1178.           specified by the LMS command.)
  1179.  
  1180. (Comments: The protocol does not require the receiver to take any
  1181. specific action with regard to a SFS command. However a  receiver
  1182.  
  1183.  
  1184.                    - 18 -
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195. host may use the information  contained in it.)
  1196.  
  1197.  
  1198.  
  1199.  
  1200. 4.0 CONCLUDING REMARKS
  1201.  
  1202.  
  1203. The  design  of  this  protocol  has been governed by three major
  1204. principles.  First, we believe that to be useful within the  ARPA
  1205. Network,  any  new  protocol must be compatible with the existing
  1206. protocols, so that each host can make the transition to  the  new
  1207. protocol at its own pace and without large investment.  Secondly,
  1208. the  protocol  should  tie  into  the  recovery  mechanism of the
  1209. IMP-to-Host Protocol.  The price we pay for this is the small MSN
  1210. field and a   message oriented protocol rather than a byte stream
  1211. oriented protocol.  The third consideration has been flexibility.
  1212. While this protocol guarantees detection of  lost  messages,  the
  1213. philosophy  behind  the recovery procedures is that a host should
  1214. have several options, each option providing a different degree of
  1215. sophistication.  A host can implement a recovery  procedure  that
  1216. is  most  suitable  for  its  needs  and  the capabilities of its
  1217. machine.  Even though two hosts may  have  implemented  different
  1218. recovery  procedures,  they  can communicate with each other in a
  1219. compatible way.  In a network of independent machines  of  widely
  1220. varying  capabilities and requirements, this seems to be the only
  1221. way of implementing such a protocol.  Even though  this  protocol
  1222. provides  a  variety  of  options in a given error situation, the
  1223. choice of a specific action must be  consistent  with  the  basic
  1224. requirements  of  the  communication  path.  For example, partial
  1225. recovery is not  acceptable  during  file  transfers.   We  fully
  1226. expect   the  File  Transfer  Protocol  to  specify  that  if  an
  1227. irrecoverable error occurs, the file transfer must be aborted.
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.                    - 19 -
  1251.  
  1252.  
  1253.  
  1254.  
  1255.