home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc0721.txt < prev    next >
Text File  |  1996-05-07  |  14KB  |  263 lines

  1.  NWG/RFC 721                                           1 SEP 76 LLG 36636 Out-of-Band Control Signals 
  2.  
  3.  
  4.  
  5. Network Working Group                                      Larry Garlick Request for Comments 721                                         SRI-ARC NIC 36636                                                 1 September 76 
  6.  
  7.                        Out-of-Band Control Signals                                   in a                          Host-to-Host Protocol 
  8.  
  9. This note addresses the problem of implementing a reliable out-of-band signal for use in a host-to-host protocol.  It is motivated by the fact that such a satisfactory mechanism does not exist in the Transmission Control Protocol (TCP) of Cerf et. al. [reference 4, 6]  In addition to discussing some requirements for such an out-of-band signal (interrupts) and the implications for the implementation of the requirements, a discussion of the problem for the TCP case will be presented. 
  10.  
  11. While the ARPANET host-to-host protocol does not support reliable transmission of either data or controls, it does meet the other requirements we have for an out-of-band control signal and will be drawn upon to provide a solution for the TCP case. 
  12.  
  13. The TCP currently handles all data and controls on the same logical channel.  To achieve reliable transmission, it provides positive acknowledgement and retransmission of all data and most controls.  Since interrupts are on the same channel as data, the TCP must flush data whenever an interrupt is sent so as not to be subject to flow control. 
  14.  
  15. Functional Requirements 
  16.  
  17.    It is desirable to insure reliable delivery of an interrupt.  The    sender must be assured that one and only one interrupt is delivered    at the destination for each interrupt it sends.  The protocol need    not be concerned about the order of delivery of interrupts to the    user. 
  18.  
  19.    The interrupt signal must be independent of data flow control    mechanisms.  An interrupt must be delivered whether or not there are    buffers provided for data, whether or not other controls are being    handled.  The interrupt should not interfere with the reliable    delivery of other data and controls. 
  20.  
  21.    The host-to-host protocol need not provide synchronization between    the interrupt channel and the data-control channel.  In fact, if    coupling of the channels relies on the advancement of sequence    numbers on the data-control channel, then the interrupt channel is no    longer independent of flow control as required above.  The    synchronization with the data stream can be performed by the user by 
  22.  
  23.  
  24.  
  25.  
  26.  
  27.                                    1
  28.  
  29.  
  30. NWG/RFC 721                                           1 SEP 76 LLG 36636 Out-of-Band Control Signals 
  31.  
  32.  
  33.  
  34.    marking the data stream when an interrupt is generated.  The    interrupt need not be coupled with other controls since it in no way    affects the state of a connection. 
  35.  
  36.    Once the interrupt has been delivered to the user, no other semantics    are associated with it at the host-to-host level. 
  37.  
  38. Implications 
  39.  
  40.    To provide for reliable delivery and accountability of interrupt    delivery, an acknowledgement scheme is required.  To associate    interrupt acknowledgements with the correct interrupt, some naming    convention for interrupts is necessary.  Sequence numbers provide    such a naming convention, along with the potential for providing an    ordering mechanism. 
  41.  
  42.    A separate interrupt channel is required to make interrupts    independent of flow control.  A separate sequence number space for    naming interrupts is also necessary.  If the sequence numbers are    from the same sequence number space as some other channel, then    sending an interrupt can be blocked by the need to resynchronize the    sequence numbers on that channel. 
  43.  
  44.    In the current TCP, which uses one channel for data, controls, and    interrupts, flushing of data is combined with the interrupt to bypass    the flow control mechanism.  However, flushing of resynchronization    controls is not allowed and receipt of these controls is dependent on    the acknowledgement of all previous data.  The ARPANET protocol,    while not providing for reliable transmission, does provide for the    separation of the interrupt-control channel and the data channel. 
  45.  
  46. Multiple Channels and Sequence Numbers 
  47.  
  48.    If multiple channels are to be used for a connection, then it becomes    interesting to determine how the sequence numbers of the channels can    be coupled so that sequence number maintenance can be done    efficiently. 
  49.  
  50.    Assigning sequence numbers to each octet of data and control, as in    the TCP, allows positive acknowledgement and ordering.  However,    since packets are retransmitted on timeout, and since multi-path    packet switch networks can cause a packet to stay around for a long    time, the presence of duplicate packets and out-of-order packets must    be accounted for.  A sequence number acceptability test must be    performed on each packet received to determine if one of the    following actions should be taken: 
  51.  
  52.  
  53.  
  54.  
  55.  
  56.                                     2
  57.  
  58.  
  59. NWG/RFC 721                                           1 SEP 76 LLG 36636 Out-of-Band Control Signals 
  60.  
  61.  
  62.  
  63.       Acknowledge the packet and pass it on to the user. 
  64.  
  65.       Acknowledge the packet, but do not send it to the user, since it       has already been delivered. 
  66.  
  67.       Discard the packet; the sequence number is not believable. 
  68.  
  69.    Acceptability on Channel 0 
  70.  
  71.       To determine the action to be taken for a packet, acceptability       ranges are defined.  The following three ranges are mutually       exclusive and collectively exhaustive of the sequence number space       (see Figure 1): 
  72.  
  73.          Ack-deliver range (ADR) 
  74.  
  75.          Ack-only range (AOR) 
  76.  
  77.          Discard range (DR) 
  78.  
  79.  
  80.  
  81.  
  82.  
  83.                     ACCEPTABILITY RANGES                            DR       AOR             ADR              DR       \\=====)[===========)[===================](========\\               ^           ^^                   ^^               !           !\                   !\               !           ! FCLE               ! DRLE             AOLE       AORE                 ADRE                                         Figure 1 
  84.  
  85.  
  86.  
  87.        Let  S = size of sequence number space (number per octet) 
  88.  
  89.          x = sequence number to be tested 
  90.  
  91.          FCLE = flow control left window edge 
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.                                    3
  100.  
  101.  
  102. NWG/RFC 721                                           1 SEP 76 LLG 36636 Out-of-Band Control Signals 
  103.  
  104.  
  105.  
  106.          ADRE = (FCLE+ADR) mod S = Ack-deliver right edge (Discard                   left edge - 1) 
  107.  
  108.          AOLE = (FCLE-AOR) mod S =  Ack-only left edge (Discard                   right edge + 1) 
  109.  
  110.          TSE = time since connection establishment (in sec) 
  111.  
  112.          MPL = maximum packet lifetime (in sec) 
  113.  
  114.          TB = TCP bandwidth (in octets/sec) 
  115.  
  116.       For any sequence number, x, and packet text length, l, if 
  117.  
  118.          (AOLE <= x <= ADRE) mod S  and 
  119.  
  120.          (AOLE <= x+l-1 <= ADRE) mod S 
  121.  
  122.       then the packet should be acknowledged. 
  123.  
  124.       If x and l satisfy 
  125.  
  126.          (FCLE <= x <= ADRE) mod S  and 
  127.  
  128.          (FCLE <= x+l-1 <= ADRE) mod S 
  129.  
  130.       then x can also be delivered to the user; however, ordered       delivery requires that x = FCLE. 
  131.  
  132.       A packet is not in a range only if all of it lies outside a range.       When a packet falls in more than one range, precedence is ADR,       then AOR, then DR.  When a packet falls in the AOR then an ACK       should be sent, even if a packet has to be created.  The ACK will       specify the current left window edge.  This assures acknowledgment       of all duplicates. 
  133.  
  134.       ADRE is exactly the maximum sequence number ever "advertised"       through the flow control window, plus one.  This allows for       controls to be accepted even though permission for them may never       have been explicitly given.  Of course, each time a control with a       sequence number equal to the ADRE is sent, the ADRE must be       incremented by one. 
  135.  
  136.       AOR is set so that old duplicates (from previous incarnations of       the connection) can be detected and discarded.  Thus 
  137.  
  138.          AOR = Min(TSE, MPL) * TB 
  139.  
  140.  
  141.  
  142.  
  143.  
  144.                                    4
  145.  
  146.  
  147. NWG/RFC 721                                           1 SEP 76 LLG 36636 Out-of-Band Control Signals 
  148.  
  149.  
  150.  
  151.    Synchronization and Resynchronization Problems 
  152.  
  153.       A special problem arises concerning detection of packets (old       duplicates) in the network that have sequence numbers assigned by       old instances of a connection.  To handle this reliably, careful       selection of the initial sequence number is required [ref. 2, 3]       as well as periodic checks to determine if resynchronization of       sequence numbers is necessary.  The overhead of such elaborate       machinery is expensive and repeating it for each additional       channel is undesirable. 
  154.  
  155.    Acceptability on Channel i 
  156.  
  157.       We have concluded that the only savings realizable in the muiltple       channel case is to use channel zero's initial sequence number and       resynchronization maintenance mechanism for the additional       channels.  This can be accomplished by coupling each additional       channel to channel zero's sequence numbers (CZSN), so that each       item on channel i carries a pair of sequence numbers, the current       CZSN and the current channel i's sequence number (CISN). 
  158.  
  159.       The acceptablility test of items on channel i is a composite test       of both sequence numbers.  First the CZSN is checked to see if it       would be acknowledged if it were an octet received on channel       zero.  Only if it would have been discarded would the item on       channel i be discarded.  Having passed the CZSN test, the CISN is       checked to see if the item is deliverable and acknowledgable with       respect to the CISN sequence number space.  The CISN test is a       check for everything but the existence of old duplicates from old       instances of the connection and is performed like the check for       channel zero items. 
  160.  
  161.       It has been shown that to implement additional channels for a TCP       connection, two alternatives are available-- (1) provide each       channel with its own initial sequence number and resynchronization       maintenance mechanism or (2) provide one initial sequence number       and resynchronization maintenance mechanism for all channels       through channel zero's mechanism.  It is hard for us to compare       the two alternatives, since we have no experience implementing any       resynchronization maintenance mechanism. 
  162.  
  163. TCP Case 
  164.  
  165.    To implement a completely reliable separate interrupt channel for TCP    requires a channel with a full sequence number space.  It is possible    to compromise here and make the interrupt number space smaller than    that required to support consumption of numbers at the TCP's 
  166.  
  167.  
  168.  
  169.  
  170.  
  171.                                    5
  172.  
  173.  
  174. NWG/RFC 721                                           1 SEP 76 LLG 36636 Out-of-Band Control Signals 
  175.  
  176.  
  177.  
  178.    bandwidth.  What is lost is the total independence of the flow    control from the data-control channel.  Normally, the data-control    sequence numbers will change often enough so that wraparound in the    interrupt number space causes no problems. 
  179.  
  180.    Things become slightly messy when many interrupts are generated in    quick succession.  Even if the interrupt numbers are acknowledged,    they cannot be reused if they refer to the same data-control sequence    number, until a full packet lifetime has elapsed.  This can be    remedied in all but one case by sending a NOP on the data-control    channel so that the next set of interrupts can refer to a new    data-control sequence number.  However, if the data-control channel    is blocked due to flow control and a resynchronizing control (DSN in    the TCP case) was just sent, a NOP cannot be created until the    resynchronization is complete and a new starting sequence number is    chosen.  Thus to send another interrupt, the TCP must wait for a    packet lifetime or an indication that it can send a NOP on the    data-control channel.  (In reality, a connection would probably be    closed long before a packet lifetime elapsed if the sender is not    accepting data from the receiver. [reference 1]) 
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.                                     6
  213.  
  214.  
  215. NWG/RFC 721                                           1 SEP 76 LLG 36636 Out-of-Band Control Signals 
  216.  
  217.  
  218.  
  219. REFERENCES 
  220.  
  221.    (1)  J. Postel, L. Garlick, R. Rom, "TCP Specification (AUTODIN II),"         ARC Catalog #35938, July 1976. 
  222.  
  223.    (2)  R. Tomlinson, "Selecting Sequence Numbers," INWG Protocol Note         #2, September 1974. 
  224.  
  225.    (3)  Y. Dalal, "More on Selecting Sequence Numbers," INWG Protocol         Note #4, October 1974. 
  226.  
  227.    (4)  V. Cerf, Y. Dalal, C. Sunshine, "Specification of Internet         Transmission Control Program," INWG General Note #72, December         1974 (Revised). [Also as RFC 675, NIC Catalog #31505.] 
  228.  
  229.    (5)  Cerf, V., "TCP Resynchronization," SU-DSL Technical Note #79,         January 1976. 
  230.  
  231.    (6)  Cerf, V. and R. Kahn, "A Protocol for Packet Network         Intercommunication," IEEE Transactions on Communication, Vol         COM-20, No. 5, May 1974. 
  232.  
  233.    (7)  C. Sunshine, "Interprocess Communication Protocols for Computer         Networks," Digital Systems Laboratory Technical Note #105,         December 1975. 
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                                    7
  262.  
  263.