1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
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
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
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
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
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^L
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^L
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^L
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^L
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^L
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^L
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^L
|