summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc721.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc721.txt')
-rw-r--r--doc/rfc/rfc721.txt413
1 files changed, 413 insertions, 0 deletions
diff --git a/doc/rfc/rfc721.txt b/doc/rfc/rfc721.txt
new file mode 100644
index 0000000..faa5cd6
--- /dev/null
+++ b/doc/rfc/rfc721.txt
@@ -0,0 +1,413 @@
+
+NWG/RFC 721 1 SEP 76 LLG 36636
+Out-of-Band Control Signals
+
+
+
+Network Working Group Larry Garlick
+Request for Comments 721 SRI-ARC
+NIC 36636 1 September 76
+
+ Out-of-Band Control Signals
+ in a
+ Host-to-Host Protocol
+
+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.
+
+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.
+
+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.
+
+Functional Requirements
+
+ 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.
+
+ 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.
+
+ 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
+
+
+
+
+
+ 1
+
+NWG/RFC 721 1 SEP 76 LLG 36636
+Out-of-Band Control Signals
+
+
+
+ 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.
+
+ Once the interrupt has been delivered to the user, no other semantics
+ are associated with it at the host-to-host level.
+
+Implications
+
+ 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.
+
+ 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.
+
+ 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.
+
+Multiple Channels and Sequence Numbers
+
+ 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.
+
+ 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:
+
+
+
+
+
+
+ 2
+
+NWG/RFC 721 1 SEP 76 LLG 36636
+Out-of-Band Control Signals
+
+
+
+ Acknowledge the packet and pass it on to the user.
+
+ Acknowledge the packet, but do not send it to the user, since it
+ has already been delivered.
+
+ Discard the packet; the sequence number is not believable.
+
+ Acceptability on Channel 0
+
+ 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):
+
+ Ack-deliver range (ADR)
+
+ Ack-only range (AOR)
+
+ Discard range (DR)
+
+
+
+
+
+ ACCEPTABILITY RANGES
+
+
+ DR AOR ADR DR
+ \\=====)[===========)[===================](========\\
+ ^ ^^ ^^
+ ! !\ !\
+ ! ! FCLE ! DRLE
+ AOLE AORE ADRE
+
+
+ Figure 1
+
+
+
+
+ Let S = size of sequence number space (number per octet)
+
+ x = sequence number to be tested
+
+ FCLE = flow control left window edge
+
+
+
+
+
+
+
+ 3
+
+NWG/RFC 721 1 SEP 76 LLG 36636
+Out-of-Band Control Signals
+
+
+
+ ADRE = (FCLE+ADR) mod S = Ack-deliver right edge (Discard
+ left edge - 1)
+
+ AOLE = (FCLE-AOR) mod S = Ack-only left edge (Discard
+ right edge + 1)
+
+ TSE = time since connection establishment (in sec)
+
+ MPL = maximum packet lifetime (in sec)
+
+ TB = TCP bandwidth (in octets/sec)
+
+ For any sequence number, x, and packet text length, l, if
+
+ (AOLE <= x <= ADRE) mod S and
+
+ (AOLE <= x+l-1 <= ADRE) mod S
+
+ then the packet should be acknowledged.
+
+ If x and l satisfy
+
+ (FCLE <= x <= ADRE) mod S and
+
+ (FCLE <= x+l-1 <= ADRE) mod S
+
+ then x can also be delivered to the user; however, ordered
+ delivery requires that x = FCLE.
+
+ 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.
+
+ 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.
+
+ AOR is set so that old duplicates (from previous incarnations of
+ the connection) can be detected and discarded. Thus
+
+ AOR = Min(TSE, MPL) * TB
+
+
+
+
+
+ 4
+
+NWG/RFC 721 1 SEP 76 LLG 36636
+Out-of-Band Control Signals
+
+
+
+ Synchronization and Resynchronization Problems
+
+ 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.
+
+ Acceptability on Channel i
+
+ 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).
+
+ 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.
+
+ 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.
+
+TCP Case
+
+ 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
+
+
+
+
+
+ 5
+
+NWG/RFC 721 1 SEP 76 LLG 36636
+Out-of-Band Control Signals
+
+
+
+ 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.
+
+ 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])
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+
+NWG/RFC 721 1 SEP 76 LLG 36636
+Out-of-Band Control Signals
+
+
+
+REFERENCES
+
+ (1) J. Postel, L. Garlick, R. Rom, "TCP Specification (AUTODIN II),"
+ ARC Catalog #35938, July 1976.
+
+ (2) R. Tomlinson, "Selecting Sequence Numbers," INWG Protocol Note
+ #2, September 1974.
+
+ (3) Y. Dalal, "More on Selecting Sequence Numbers," INWG Protocol
+ Note #4, October 1974.
+
+ (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.]
+
+ (5) Cerf, V., "TCP Resynchronization," SU-DSL Technical Note #79,
+ January 1976.
+
+ (6) Cerf, V. and R. Kahn, "A Protocol for Packet Network
+ Intercommunication," IEEE Transactions on Communication, Vol
+ COM-20, No. 5, May 1974.
+
+ (7) C. Sunshine, "Interprocess Communication Protocols for Computer
+ Networks," Digital Systems Laboratory Technical Note #105,
+ December 1975.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 7 \ No newline at end of file