summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc442.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc442.txt')
-rw-r--r--doc/rfc/rfc442.txt395
1 files changed, 395 insertions, 0 deletions
diff --git a/doc/rfc/rfc442.txt b/doc/rfc/rfc442.txt
new file mode 100644
index 0000000..19c0351
--- /dev/null
+++ b/doc/rfc/rfc442.txt
@@ -0,0 +1,395 @@
+
+
+
+
+
+
+Network Working Group V. Cerf
+Request for Comments: 442 24 January 1973
+NIC: 13774
+
+
+ The Current Flow-Control Scheme for IMPSYS
+
+ BB&N quarterly report #13 outlines part of the current flow control
+ scheme in the IMP operating system. A meeting held March 16, 1972,
+ at BB&N was devoted to the description of this new scheme for the
+ benefit of interested network participants.
+
+ This note represents my understanding of the flow control mechanism.
+ The essential goal is to eliminate unnecessary retransmissions when
+ the load is heavy, eliminate the retransmission time-out period when
+ the load is light, increase bandwidth, prevent re-assembly lock-up,
+ control traffic from HOSTS into the net more strictly than the
+ earlier link blocking method, and secure the rights of life, liberty,
+ and the pursuit of happiness for ourselves and our posterity,...oops.
+
+Source IMP-to-Destination IMP Protocol
+
+ There are two different protocols depending on message length (i.e.
+ single or multi-packet). We illustrate first the single packet case.
+
+ Source Imp Destination Imp
+ ---------- ---------------
+
+case 1) message (1) + implicit req (1)--->
+ <--- RFNM (arrived ok)
+ [discard copy of msg]
+
+case 2) message (1) + implicit req (1)---> no room, don't respond
+ <--- All (1) (room available)
+ message (1) --->
+ [discard copy of msg] <--- RFNM (arrived ok)
+
+ In the first case, a single packet message is sent to the destination
+ IMP. This message acts as an implicit request for single packet
+ buffer space. If there is room, as in case 1, the destination IMP
+ responds with a RFNM. The source IMP, which has retained a copy of
+ the message, deletes its copy and goes on.
+
+ The second case illustrates what happens when the source IMP sends a
+ message to a destination IMP at which there is no room for the one-
+ packet message. The arrival of the single packet message constitutes
+ a request for single packet buffer space, and is recorded as such by
+ the destination IMP in a first-come-first-served buffer reservation
+
+
+
+Cerf [Page 1]
+
+RFC 442 The Current Flow-Control Scheme for IMPSYS January 1973
+
+
+ request queue. When space is available, the destination IMP will
+ transmit an ALL (1) to the requesting source IMP which can then send
+ the single packet message again, this time knowing that space has
+ been reserved at the destination.
+
+ For multi-packet messages, the procedure is somewhat different. When
+ a message enters an IMP from a HOST, and the "last bit" flag is not
+ set when the number of bits in a maximum length single packet have
+ arrived, the IMP halts the HOST->IMP transmission line while it
+ determines whether space has been reserved at the dest. IMP. If
+ space (8 packets worth) has been reserved, the HOST->IMP line is re-
+ opened, and the message is sent out normally. If space has not been
+ reserved, the HOST->IMP line is kept closed while the source IMP
+ makes a request for multi-packet buffer storage at the destination
+ IMP. When 8 buffers are available, the destination IMP responds with
+ an ALL (8). The source IMP then transmits the message, and waits for
+ a combination RFNM and ALL (8) from the destination IMP. The
+ destination IMP will delay its RFNM, if necessary, until it has
+ another 8 buffers available for the next multipacket message.
+
+ This sequence is illustrated below:
+
+ Source IMP Destination IMP
+ ---------- ---------------
+
+H-> I line
+----------> First packet of multipacket
+ arrives. Halt H->I line and
+ send REQ (8) -------------->
+ start 30 sec. Time-out
+
+ If time-out, resend
+ REQ (8) and restart -------->
+ time-out.
+ <--------ALL (8) when available. Start
+ long term (2 min.) time-out.
+ On time-out, reset all
+ outstanding reservations.
+
+ Send the message:
+ | ----------->
+ Start 30 sec. time-out
+ for INComplete transmission.
+ If time-out, send INC?----->
+
+
+
+
+
+
+
+Cerf [Page 2]
+
+RFC 442 The Current Flow-Control Scheme for IMPSYS January 1973
+
+
+ <------On recept of message, send
+ RFNM + implicit ALL (8). On
+ receipt of INC? send RFNM +
+ ALL(8) if MSG(8) received,
+ or send INC! if MSG(8) not
+ received. Start 2 min. time-out
+ on ALL(8).
+
+ Queue ALL(8); start 125 ms.
+ time-out when it reaches
+ head of queue. If time-out
+ on ALL(8), send GVB(8)----->
+ <----- Ack.
+ else send next message ----->
+
+
+ A key point in this protocol is that a source IMP, after receipt of a
+ RFNM and implicit ALL(8) from the destination IMP, has 125 msec. in
+ which to initiate the transfer of at least the first packet of a
+ multi-packet message to the destination IMP. The source IMP may have
+ several allocate responses queued up in which case these time-outs
+ occur one after the other (one has to time-out before the next 125
+ msec time-out starts).
+
+ Time-outs exist in the source IMP which cause it to send INC?
+ messages to the destination IMP if it has received no response from
+ some earlier message.
+
+Buffer Allocation
+
+ A total of 40 buffers are available for store/forward and re-assembly
+ purposes. At most 32 can be allocated for re-assembly, and at most
+ 24-25 can be allocated for store and forward use. This prevents
+ either kind of traffic from completely shutting out the other kind.
+
+Message Ordering (Source IMP-to-Destination IMP).
+
+ As an aid to congestion control, an IMP can have at most 4 messages
+ outstanding (un-RFNMed) for each other IMP. Link numbers in the
+ message leader are ignored by the IMPs. Instead, IMPs mark messages
+ leaving for other destinations with an 8-bit message number. In
+ addition, a 2-bit priority number is also used in case a HOST has
+ marked a message as a priority message. The key notion here is that
+ the IMPs treat all HOSTs on a given IMP as if they were a single
+ HOST. A single sequence of message and priority numbers is used in
+ each direction between each pair of sites.
+
+
+
+
+
+Cerf [Page 3]
+
+RFC 442 The Current Flow-Control Scheme for IMPSYS January 1973
+
+
+ The receiving IMP remembers the message number of the last message
+ delivered, as well as the priority number of the last priority
+ message delivered. It uses this information to correctly sequence
+ messages out the IMP-HOST line (s). Since there is only one sequence
+ of numbers for each pair of sites, messages for one HOST at a site
+ may get in the way of messages for another HOST at the same site. In
+ fact, if some message, m, is the next in line to go to some HOST, and
+ that HOST delays receipt for 30 seconds, any messages for another
+ HOST may be delayed that long also. However, only the first message
+ is lost, since the second one could not even start into its
+ destination HOST until the first one had been delivered. There is a
+ tighter coupling between HOSTs sharing an IMP than before, but not
+ much tighter.
+
+ An example of the use of message and priority numbers is given below.
+
+Order sent by Order received by Order received by
+Source IMP Dest. IMP HOST
+---------- --------- ----
+
+11,12P(1),13P(2),14 --> 13P(2),12P(1),14,11 --> 12P(1),13P(2),11,14
+
+11,12P(1),13P(2),14 --> 13P(2),11,14,12P(1) --> 11,12P(1),13P(2),14
+
+
+where 13P(2) is interpreted to mean message #13, priority number(2).
+
+ Note that there are only 2 classes of messages, priority and non-
+ priority, and that the priority numbers simply allow ordering at the
+ destination of multiple outstanding priority transmissions from the
+ same site.
+
+ If HOSTs use link numbers to de-multiplex messages to processes, then
+ it would be a mistake to arbitrarily assign short messages priority.
+ If a file transmission were carried out such that the last short
+ message had priority, the file might not enter the receiving HOST in
+ the same order it was sent!
+
+ACK Mechanism
+
+ IMPs treat their physical channels (phone lines) as if they were
+ pairs of simplex communications paths. Each IMPSYS has a sender and
+ receiver module for each full duplex channel. Each module has an
+ "ODD/EVEN" bit which is used to keep track of the state of the last
+ packet on the line. The object is for the sender module to "block" a
+ channel until the corresponding receiver has received a packet
+ indicating that the send packet was received on the other end (i.e.
+ an acknowledgment).
+
+
+
+Cerf [Page 4]
+
+RFC 442 The Current Flow-Control Scheme for IMPSYS January 1973
+
+
+ In the present system, acknowledgments are separate IMP-IMP packets.
+ In the new system, they are a single bit in a packet flowing in the
+ opposite direction on the reverse path of a full duplex channel.
+
+ Every packet sent between IMPs has an ACK bit and an OE bit, as shown
+ below.
+
+
+ P A
+ O C
+ E K
+ +-------+-----+------------------------+-----+----------+
+typical packet | | | | | |
+ | | | | | |
+ +-------+-----+------------------------+-----+----------+
+
+ We need some terminology: Let POE be the packet OE bit, and SOE, ROE
+ be the send module OE bit and Receive module OE bit respectively.
+ For two IMPs, A and B, we distinguish SOE/A and SOE/B as the two send
+ module OE bits at IMPs A and B respectively.
+
+ The rules of operation are as follow:
+
+ Sender
+ ------
+ if ACK != SOE then do nothing
+ --
+ else SOE <- !SOE (i.e. flip SOE bit) and free channel.
+ ----
+
+ Receiver
+ --------
+ if POE = ROE then packet is a duplicate so throw it away.
+ --
+ else ROE <- !ROE
+ ----
+
+ Whenever a packet is sent by the sent module, its two bits, POE and
+ ACK are set up by:
+
+ POE <- SOE
+ ACK <- ROE
+
+ The mechanism is designed to use real traffic to accomplish the
+ acknowledgment protocol by piggy-backing the ACK bits in the header
+ of real packets. If there is no real packet waiting for transmission
+ in the opposite direction, a fake packet is assembled which carries
+ the ACK, but which is not acknowledged by the receiving side.
+
+
+
+Cerf [Page 5]
+
+RFC 442 The Current Flow-Control Scheme for IMPSYS January 1973
+
+
+ We give an example of the operation of this mechanism between two
+ IMPs.
+
+ IMP A IMP B
+ ----- -----
+ ROE | SOE ROE | SOE
+ | POE ACK |
+ | +-----------+ |
+IMP A blocks send 1 | 0 (1)| 0 1 |-> 1 | 0 IMP B NOPS,
+channel. | +-----------+ | flips ROE
+ | |
+ | POE ACK |
+ | +-----------+ |
+IMP A frees send 0 | 1 <-| 0 0 |(2) 0 | 0 IMP B blocks
+channel, | +-----------+ | channel for
+Flips SOE | | new traffic
+ | POE ACK |
+IMP A blocks send | +-----------+ crashes|
+channel | (3)| 1 0 |->or gets|
+ | +-----------+ lost |
+ | |
+ | POE ACK |
+IMP A detects packet | +-----------+ |
+duplicate (POE=ROE) 0 | 1 <-| 0 0 |(2) 0 | 0 IMP B
+so does not change | +-----------+ | retransmits no
+SOE bit. | | ACK received
+ | POE ACK |
+IMP A retransmits | +-----------+ | IMP B flips
+packet 3 | (3)| 1 0 |-> 1 | 1 SOE, unblocks
+ | +-----------+ | channel, and
+ | | flips ROE.
+ | POE ACK |
+IMP A flips ROE, | +-----------+ |
+ flips SOE 1 | 0 <-| 1 1 |(4) |
+ | +-----------+ |
+ | |
+
+ In fact each send/receive module has 8 OE bits, so up to 8 packets
+ can be outstanding in either direction.
+
+How things really work
+
+ Actually, a single send module is responsible for trying to transmit
+ packets out on the 8 pseudo-channels. Each channel has a two-bit
+ state (in addition to an OE bit). Each channel is either FREE or IN
+ USE and if IN USE, it may be sending OLD or NEW packet.
+
+
+
+
+
+Cerf [Page 6]
+
+RFC 442 The Current Flow-Control Scheme for IMPSYS January 1973
+
+
+ start state F = free
+ | I = in use
+ V X = don_t care
+ +-----+ +------+ N = new packet
+ | FX | --------------> | I, N | O = old packet
+ +-----+ +------+
+ ^ |
+ | |
+ | |
+ | |
+ ACK | |
+ received | |
+ | V
+ | +------+
+ +-------------------| I, O |---+
+ +------+ |
+ ^ | re-transmissions
+ +------+
+
+ Between IMPs, packets are sent repeatedly, until they are
+ acknowledged. However, the choice of what to send is ordered by
+ priority as follows:
+
+ 1. Priority Packets (as marked by HOST)
+
+ 2. Non-Priority Packet
+
+ 3. Unacknowledged packets (on I,O state channels)
+
+ 4. Others
+
+ It was pointed out that a heavy load of type (1) and (2) traffic
+ might prevent retransmissions from occurring at all, and W. Crowther
+ responded that the bug would be fixed by a 125 ms time-out which
+ forces retransmission of old packets in class (3).
+
+ Note that each packet must carry a "pseudo-channel" number to
+ identify the POE-to-channel association, and 8 ACK bits (which are
+ positionally associated with the pseudo-channels). Thus a single
+ packet can ACK up to 8 packets at once.
+
+
+
+
+ [This RFC was put into machine readable form for entry]
+ [into the online RFC archives by Helene Morin, Via Genie, 12/99]
+
+
+
+
+
+Cerf [Page 7]
+