Comments on a proffered official ICP: RFCs 123, 127
Comments on message ordering and protocol boundaries in a proposed Initial Connection Protocol.
Shoshani, A., "Comments on a proffered official ICP: RFCs 123, 127", RFC 151, DOI 10.17487/RFC0151, May 1971, <https://www.rfc-editor.org/info/rfc151>.
@misc{rfc151,
series = {Request for Comments},
number = 151,
howpublished = {RFC 151},
publisher = {RFC Editor},
doi = {10.17487/RFC0151},
url = {https://www.rfc-editor.org/info/rfc151},
author = {A. Shoshani},
title = {{Comments on a proffered official ICP: RFCs 123, 127}},
pagetotal = 2,
year = 1971,
month = may,
} RFC text
Contents
NWG/RFC # 151 A. Shoshani
SDC
NIC #6755 May 10, 1971
COMMENTS ON A PROFERRED OFFICIAL ICP
(RFCs 123, 127)
Bob Long at SDC noticed that the order in which messages go out to the
network depend on the local NCP. In particular commands may be given
priority over data and therefore in the sequence specified for server in
RFC 123 (top of Page 3), the last two INIT commands may go out before the
data = S on socket = L is sent. (This is the case in the current
implementation of SDC's NCP.) The implication is that the user's NCP should
be prepared to keep the INIT's it received from the server until the user
process gets the data = S and issues two INITs in response.
This case is brought up now so that people will think about it before the
Atlantic City meeting and comment whether their NCP can tolerate it. It may
be necessary to make it explicit in the ICP that the two INITs sent by the
server should go out only after the data = S is sent, or even after the
user process acknowledges its receipt.
I have a more general remark about the ICP. This is a third level protocol
and therefore should not alter or ignore procedures of the second level
protocol (Host-Host protocol). In particular three remarks seem
appropriate:
1. In RFC 123 (bottom of Page 2) it is suggested that the byte size for the
connection to the server socket L is 32. However, in the modifications
to second level protocol (RDC 107) it is specified that it is up to the
sending process to chose the byte size. According to the Host-Host
protocol, NCPs should be prepared to accept messages in any byte size
(1<= size <=255); therefore there is no need to impose a size of 32 in
this case. Furthermore, since it is up to the sender to choose the byte
size, some Hosts may choose a particular byte size (for simplicity and
convenience) and their NCP may not be geared to transmit in an imposed
byte size.
2. In RFCs 66 and 80, an ALL is expected on the connection to the server
socket before data can be sent. In RFCs 123 and 127 the ALL requirement
disappeared. But the ALL is a Host-Host protocol requirement and not
requiring it creates special case. A particular NCP implementation may
cause the ALL to be sent internally when a connection is created,
without the user process having control of it. Relaxing this requirement
will create a special case for the receiving NCP not to send the ALL and
for the sending NCP to send the data = S without first receiving an ALL.
3. In RFC 127, I disagree with the comment "send 32 bits of data in one
message" because it is a second level protocol decision that a message
can be sent in any size pieces and the size is to be specified through
the ALL mechanism. In particular, there may be hosts which are not
prepared to accept more than few bytes at a time (TIPs).
In general we should not make second level decisions in a third level
protocol.
[ This RFC was put into machine readable form for entry ]
[ into the online RFC archives by BBN Corp. under the ]
[ direction of Alex McKenzie. 12/96 ]
ISO Plain Language
On this page
§1A Possible Message-Ordering Problem
Bob Long at SDC noticed that the order in which messages leave a host depends on its local Network Control Program. In SDC's implementation, commands can receive priority over data.
As a result, the server's final INIT commands in the sequence described by RFC 123 might leave before the data marked S on socket L. The RFC says the user's NCP should be ready to hold those INITs until the data arrives and the user process replies.
A host may send a command before the data that another host expects first. The receiver may need to hold that command until the data arrives.
§2Keeping Protocol Levels Separate
Shoshani says the ICP is a third-level protocol and should not alter or ignore procedures of the second-level Host-Host Protocol. One example is byte size: RFC 123 suggests 32 bits for a connection, while the Host-Host rules leave the choice to the sender and say NCPs should accept sizes from 1 through 255 bits.
He also questions removing the ALL requirement and specifying that 32 bits be sent in one message, because he sees those as decisions for the lower protocol level.
The connection protocol should use the lower-level rules instead of changing them. Different hosts need room to choose the byte sizes their systems can handle.
§3Implementation Consequences
The note points out that some hosts, including TIPs, may not be prepared to handle a fixed byte size or a particular message size. It argues that a higher-level protocol should avoid creating special cases that NCP implementations cannot support.
Shoshani presents these comments so network participants can consider them before the Atlantic City meeting.
Small or specialized hosts may have limits that larger hosts do not. The proposal should account for those differences before it is finalized.