rfc935.txt
来自「RFC 的详细文档!」· 文本 代码 · 共 774 行 · 第 1/3 页
TXT
774 行
For point-point operation, the address is clearly superfluous (except
to distinguish commands and replies in bit-oriented protocols); one
might imagine dispensing with it.
The Asynchronous Environment
Which of these protocols is best for the asynchronous environment?
This depends on the definition of "best", of course. One means of
judging is to compare the amount of overhead that each protocol would
add to each frame sent.
We will examine the overhead costs in two groups:
framing/transparency/error checking,
and addressing/control.
The two groups of functions are independent of each other, even
though the protocols mentioned above use specific combinations of
techniques from these two groups. Also, hardware available on
minicomputer-class and larger machines today supports the first group
of functions completely for these standard protocols; this fact
should allow for far greater performance from the gateway machine.
Robinson [Page 5]
RFC 935 January 1985
Reliable Link Layer Protocols
To the extent that such hardware becomes available for personal
computers, it can also be used there to reduce the protocol
processing overhead. Here's a breakdown of framing costs in
characters. RATP is also included for comparison.
Protocol Frame Check Transp. Total F+C
char-or. 4 2 2 8 6
bit-or. 1 2 2 5 3
DDCMP 4 4 0 8 8
RATP 2 3 0 5 5
The transparency column indicates the anticipated cost in inserted
characters to achieve transparency across a 256-byte frame. The
figure for bit-oriented protocols is a pessimistic guess, because I
don't know the exact answer; it is between 0 and 8 characters, with
the worst case occurring when the data is all one bits. For
character-oriented protocols, we would expect on average one DLE
character in a 256-byte frame; the worst case overhead (256 DLEs) is
256 bytes.
Because transparency is so much a function of the user data, and
because we have ignored the cost of loss of frame synchronization in
the counting protocols (DDCMP and RATP), I argue that we should base
the comparison on the frame and checksum costs only. For these two
columns, character-oriented framing costs one more character per
frame than RATP. This, plus its wide use and hardware chip support,
create a strong case for its use in preference to RATP for framing.
Bit-oriented framing, as noted previously, is appropriate only on
synchronous links. The character oriented variant I postulated above
would have the same costs, but as it is not a standard, it is not
proposed here. So we now have constructed the following frame
format:
DLE STX <control and data ...> DLE ETX CRC CRC
One objection to using character-oriented protocols as opposed to
character-count protocols is that it is necessary to examine every
character as it arrives. I respond to this objection as follows:
1. Under some circumstances, such as when a header has been hit
with an error, it will be necessary for the receiver to look at
every character anyway.
2. The environment for this protocol is a 1200 baud link; thus
Robinson [Page 6]
RFC 935 January 1985
Reliable Link Layer Protocols
120 characters per second need to be examined at a maximum. Even
on a relatively slow personal computer, this should not present a
problem.
We now turn our attention to the content and format of the control
information preceding each link frame. There are three components to
this cost, control, address, and acknowledgment. The address field
allows multipoint configurations and is superfluous for the
point-to-point environment proposed, but it is present in the public
standards and we restrict ourselves to those.
Acknowledgments are shown if they are required explicitly by the
protocol. A "0" indicates that the acknowledgments may be included
in the control information for traffic in the opposite direction, and
only need be sent explicitly when no reverse traffic is present (and
thus are assumed to take no required overhead). Only
character-oriented protocols have required acknowledgments.
Cont. Addr. Ack Total
char-or. 0 3 2 5
bit-or. 1 1 0 2
DDCMP 3 1 0 4
RATP 1 0 0 1
Again, the bit-oriented procedures provide the lowest overhead among
the public standards, but in this case there is no conflict in using
them in the asynchronous environment. In fact, even if all the other
aspects of RATP were to be adopted, I believe the control field
codings of the bit- oriented procedures represent a more efficient
use of the channel, are widely implemented, and allow for addition of
more functions later if desired. As stated above, there are several
protocols in the bit-oriented family. I would recommend use of LAPB,
since this is the most widely known of the family.
For those not familiar with bit-oriented control procedures, I have
included a quick summary of these procedures in Appendix A. Refer to
the standards listed at the end of this note for more detail.
Robinson [Page 7]
RFC 935 January 1985
Reliable Link Layer Protocols
RATP Compared to Public Protocols
As can be seen from the above tables, RATP does not represent a
significant savings compared to other widely-used protocols.
Given frame lengths of 13 bytes, which appears to be the minimum for
Thinwire II (RFC 914), 8 characters' overhead using the public
standards represents 61% versus 46% for RATP's 6 characters. On a
1200 baud line, the bandwidth available assuming only such short
frames is thus 74 versus 82 characters per second, respectively.
Since 1/13 of these are actually user data, the typing rates
supported by these protocols using TCP/IP are pretty low, like 5.6
versus 6.3 characters per second. Clearly a bigger cost is still
found in the 12 characters overhead in Thinwire II (or 40 for TCP/IP
with no compression).
The costs improve dramatically when the number of user characters per
frame increases. Thus, file transfer, or even line-blocked typing,
should perform adequately. As frame size grows, the cost of the
extra 2 characters per frame to use standard protocols rapidly drops
to a few percent or less.
RATP does allow one optimization which cannot be achieved in the
standard protocols - the use of a one-character format that reduces
the per-frame overhead to 3 characters (or 4 if a 16-bit CRC is
used). However, in the scenario wherein single-character messages
make sense, a user typing characters (with no higher layer
protocols), the extra overhead is probably not a problem since the
link is still lightly enough loaded that the extra overhead is still
a small percentage of the available bandwidth. Also, allowing
multiple frames in flight helps reduce the bottleneck caused by
having one frame at a time outstanding.
On Check Sequences
Both RFCs 914 and 916 propose to use relatively simple check
sequences, which can be easily computed in a general-purpose
processor. In one case, this is an additive check and in the other
it is an exclusive-or (or parity) check. Although the additive check
is slightly more powerful than the exclusive-or, both are relatively
weak compared to CRC techniques.
Since the intended network-layer protocol (IP) provides for similar
checks on its header, and the transport layer (TCP) checksums its
header and data, one might question whether the protection should
also be provided at the link layer at all, or if it should, then are
these checks good enough? Providing for recovery at the TCP layer
Robinson [Page 8]
RFC 935 January 1985
Reliable Link Layer Protocols
leads to slow recovery times, so this approach will probably yield
too poor a level of service for noisy links. More importantly, the
link layer control field needs a certain degree of protection to
prevent needless loss or duplication of frames in the face of line
errors.
A CRC check, in combination with the additive checks provided by IP
and TCP, yield an error-protection that is greater than that afforded
by either check by itself. This is because the two techniques
address fundamentally different characteristics of the possible
errors. The degree of increase is substantial compared to that of
two additive checks. That is, if two additive checks are cascaded,
there are many types of two-bit failures that will pass both the link
layer and TCP/IP checking.
Although I don't wish to include a detailed error analysis in this
note, I would support the use of a CRC type of error check because of
the far greater level of protection it affords. As I pointed out,
the cost per character is roughly 5-6 instructions, assuming the use
of a 256 by 16-bit lookup table. Again, at 120 characters per
second, the increased cost is not deemed to be too great.
Moreover, use of a standard CRC allows for the possibility that the
serial line chip's own CRC generation and checking hardware may be
used. Although such chips may not be present in the PCs in the
environment envisioned, they are likely to be available in the
gateway machine to which the PCs talk.
Data Compression: An Aside
I find the proposed methods of data compression of RFC 914
particularly interesting. I see these as independent of the choice
of the underlying link layer protocol, as it is in RFC 914. I am
aware of no such character-oriented compression that is in common use
in the communication world. The only techniques that come close are
in statistical multiplexing devices, which sometimes also include an
adaptive Huffman-coding to reduce link bandwidth. Since the Thinwire
II approach can recognize much longer repeated sequences than a
Huffman code, I expect that the potential savings are correspondingly
greater.
I would like to see a version of the Thinwire protocols which allows
for the template idea, but which keeps it independent of the higher
layer protocols in use. One way to achieve this is to allow
templates to be encoded and exchanged between the communicating
parties when they start up, and perhaps adaptively as conditions
warrant. I would anticipate that this sort of approach might well
Robinson [Page 9]
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?