summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc893.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc893.txt')
-rw-r--r--doc/rfc/rfc893.txt342
1 files changed, 342 insertions, 0 deletions
diff --git a/doc/rfc/rfc893.txt b/doc/rfc/rfc893.txt
new file mode 100644
index 0000000..d51af37
--- /dev/null
+++ b/doc/rfc/rfc893.txt
@@ -0,0 +1,342 @@
+
+
+Network Working Group Samuel J. Leffler
+Request for Comments: 893 Michael J. Karels
+ University of California at Berkeley
+ April 1984
+
+ Trailer Encapsulations
+
+
+Status of this Memo
+
+ This RFC discusses the motivation for use of "trailer encapsulations"
+ on local-area networks and describes the implementation of such an
+ encapsulation on various media. This document is for information
+ only. This is NOT an official protocol for the ARPA Internet
+ community.
+
+Introduction
+
+ A trailer encapsulation is a link level packet format employed by
+ 4.2BSD UNIX (among others). A trailer encapsulation, or "trailer",
+ may be generated by a system under certain conditions in an effort to
+ minimize the number and size of memory-to-memory copy operations
+ performed by a receiving host when processing a data packet.
+ Trailers are strictly a link level packet format and are not visible
+ (when properly implemented) in any higher level protocol processing.
+ This note cites the motivation behind the trailer encapsulation and
+ describes the trailer encapsulation packet formats currently in use
+ on 3 Mb/s Experimental Ethernet, 10 Mb/s Ethernet, and 10 Mb/s V2LNI
+ ring networks [1].
+
+ The use of a trailer encapsulation was suggested by Greg Chesson, and
+ the encapsulation described here was designed by Bill Joy.
+
+Motivation
+
+ Trailers are motivated by the overhead which may be incurred during
+ protocol processing when one or more memory to memory copies must be
+ performed. Copying can be required at many levels of processing,
+ from moving data between the network medium and the host's memory, to
+ passing data between the operating system and user address spaces.
+ An optimal network implementation would expect to incur zero copy
+ operations between delivery of a data packet into host memory and
+ presentation of the appropriate data to the receiving process. While
+ many packets may not be processed without some copying operations,
+ when the host computer provides suitable memory management support it
+ may often be possible to avoid copying simply by manipulating the
+ appropriate virtual memory hardware.
+
+ In a page mapped virtual memory environment, two prerequisites are
+ usually required to achieve the goal of zero copy operations during
+ packet processing. Data destined for a receiving agent must be
+
+
+Leffler & Karels [Page 1]
+
+
+
+RFC 893 April 1984
+
+
+ aligned on a page boundary and must have a size which is a multiple
+ of the hardware page size (or filled to a page boundary). The latter
+ restriction assumes virtual memory protection is maintained at the
+ page level; different architectures may alter these prerequisites.
+
+ Data to be transmitted across a network may easily be segmented in
+ the appropriate size, but unless the encapsulating protocol header
+ information is fixed in size, alignment to a page boundary is
+ virtually impossible. Protocol header information may vary in size
+ due to the use of multiple protocols (each with a different header),
+ or it may vary in size by agreement (for example, when optional
+ information is included in the header). To insure page alignment the
+ header information which prefixes data destined for the receiver must
+ be reduced to a fixed size; this is normally the case at the link
+ level of a network. By taking all (possibly) variable length header
+ information and moving it after the data segment a sending host may
+ "do its best" in allowing the receiving host the opportunity to
+ receive data on a page aligned boundary. This rearrangement of data
+ at the link level to force variable length header information to
+ "trail" the data is the substance of the trailer encapsulation.
+
+ There are several implicit assumptions in the above argument.
+
+ 1. The receiving host must be willing to accept trailers. As this
+ is a link level encapsulation, unless a host to host negotiation
+ is performed (preferably at the link level to avoid violating
+ layering principles), only certain hosts will be able to converse,
+ or their communication may be significantly impaired if trailer
+ packets are mixed with non-trailer packets.
+
+ 2. The cost of receiving data on a page aligned boundary should be
+ comparable to receiving data on a non-page aligned boundary. If
+ the overhead of insuring proper alignment is too high, the savings
+ in avoiding copy operations may not be cost effective.
+
+ 3. The size of the variable length header information should be
+ significantly less than that of the data segment being
+ transmitted. It is possible to move trailing information without
+ physically copying it, but often implementation constraints and
+ the characteristics of the underlying network hardware preclude
+ merely remapping the header(s).
+
+ 4. The memory to memory copying overhead which is expected to be
+ performed by the receiver must be significant enough to warrant
+ the added complexity in the both the sending and receiving host
+ software.
+
+ The first point is well known and the motivation for this note.
+
+
+Leffler & Karels [Page 2]
+
+
+
+RFC 893 April 1984
+
+
+ Thought has been given to negotiating the user of trailers on a per
+ host basis using a variant of the Address Resolution Protocol [2]
+ (actually augmenting the protocol), but at present all systems using
+ trailers require hosts sharing a network medium to uniformly accept
+ trailers or never transmit them. (The latter is easily carried out
+ at boot time in 4.2BSD without modifying the operating system source
+ code.)
+
+ The second point is (to our knowledge) insignificant. While a host
+ may not be able to take advantage of the alignment and size
+ properties of a trailer packet, it should nonetheless never hamper
+ it.
+
+ Regarding the third point, let us assume the trailing header
+ information is copied and not remapped, and consider the header
+ overhead in the TCP/IP protocols as a representative example [3]. If
+ we assume both the TCP and IP protocol headers are part of the
+ variable length header information, then the smallest trailer packet
+ (generated by a VAX) would have 512 bytes of data and 40+ bytes of
+ header information (plus the trailer header described later). While
+ the trailing header could have IP and/or TCP options included this
+ would normally be rare (one would expect most TCP options, for
+ example, to be included in the initial connection setup exchange) and
+ certainly much smaller than 512 bytes. If the data segment is
+ larger, the ratio decreases and the expected gain due to fewer copies
+ on the receiving end increases. Given the relative overheads of a
+ memory to memory copy operation and that of a page map manipulation
+ (including translation buffer invalidation), the advantage is
+ obvious.
+
+ The fourth issue, we believe, is actually a non-issue. In our
+ implementation the additional code required to support the trailer
+ encapsulation amounts to about a dozen lines of code in each link
+ level "network interface driver". The resulting performance
+ improvement more than warrants this minor investment in software.
+
+ It should be recognized that modifying the network (and normal link)
+ level format of a packet in the manner described forces the receiving
+ host to buffer the entire packet before processing. Clever
+ implementations may parse protocol headers as the packet arrives to
+ find out the actual size (or network level packet type) of an
+ incoming message. This allows these implementations to avoid
+ preallocating maximum sized buffers to incoming packets which it can
+ recognize as unacceptable. Implementations which parses the network
+ level format on the fly are violating layering principles which have
+ been extolled in design for some time (but often violated in
+ implementation). The problem of postponing link level type
+
+
+
+Leffler & Karels [Page 3]
+
+
+
+RFC 893 April 1984
+
+
+ recognition is a valid criticism. In the case of network hardware
+ which supports DMA, however, the entire packet is always received
+ before processing begins.
+
+Trailer Encapsulation Packet Formats
+
+ In this section we describe the link level packet formats used on the
+ 3 Mb/s Experimental Ethernet, and 10 Mb/s Ethernet networks as well
+ as the 10 Mb/s V2LNI ring network. The formats used in each case
+ differ only in the format and type field values used in each of the
+ local area network headers.
+
+ The format of a trailer packet is shown in the following diagram.
+
+ +----+-------------------------------------------------+----+
+ | LH | data | TH |
+ +----+-------------------------------------------------+----+
+ ^ ( ^ ) ^
+
+ LH:
+
+ The fixed-size local network header. For 10 a Mb/s Ethernet,
+ the 16-byte Ethernet header. The type field in the header
+ indicates that both the packet type (trailer) and the length of
+ the data segment.
+
+ For the 10 Mb/s Ethernet, the types are between 1001 and 1010
+ hexadecimal (4096 and 4112 decimal). The type is calculated as
+ 1000 (hex) plus the number of 512-byte pages of data. A
+ maximum of 16 pages of data may be transmitted in a single
+ trailer packet (8192 bytes).
+
+ data:
+
+ The "data" portion of the packet. This is normally only data
+ to be delivered to the receiving processes (i.e. it contains no
+ TCP or IP header information). Data size is always a multiple
+ of 512 bytes.
+
+ TH:
+
+ The "trailer". This is actually a composition of the original
+ protocol headers and a fixed size trailer prefix which defines
+ the type and size
+ of the trailing data. The format of a trailer is shown below.
+
+ The carats (^) indicate the page boundaries on which the receiving
+ host would place its input buffer for optimal alignment when
+
+
+Leffler & Karels [Page 4]
+
+
+
+RFC 893 April 1984
+
+
+ receiving a trailer packet. The link level receiving routine is able
+ to locate the trailer using the size indicated in the link level
+ header's type field. The receiving routine is expected to discard
+ the link level header and trailer prefix, and remap the trailing data
+ segment to the front of the packet to regenerate the original network
+ level packet format.
+
+Trailer Format
+
+ +----------------+----------------+------~...~----------+
+ | TYPE | HEADER LENGTH | ORIGINAL HEADER(S) |
+ +----------------+----------------+------~...~----------+
+
+ Type: 16 bits
+
+ The type field encodes the original link level type of the
+ transmitted packet. This is the value which would normally be
+ placed in the link level header if a trailer were not generated.
+
+ Header length: 16 bits
+
+ The header length field of the trailer data segment. This
+ specifies the length in bytes of the following header data.
+
+ Original headers: <variable length>
+
+ The header information which logically belongs before the data
+ segment. This is normally the network and transport level
+ protocol headers.
+
+Summary
+
+ A link level encapsulation which promotes alignment properties
+ necessary for the efficient use of virtual memory hardware facilities
+ has been described. This encapsulation format is in use on many
+ systems and is a standard facility in 4.2BSD UNIX. The encapsulation
+ provides an efficient mechanism by which cooperating hosts on a local
+ network may obtain significant performance improvements. The use of
+ this encapsulation technique currently requires uniform cooperation
+ from all hosts on a network; hopefully a per host negotiation
+ mechanism may be added to allow consenting hosts to utilize the
+ encapsulation in a non-uniform environment.
+
+
+
+
+
+
+
+
+Leffler & Karels [Page 5]
+
+
+
+RFC 893 April 1984
+
+
+References
+
+ [1] "The Ethernet - A Local Area Network", Version 1.0, Digital
+ Equipment Corporation, Intel Corporation, Xerox Corporation,
+ September 1980.
+
+ [2] Plummer, David C., "An Ethernet Address Resolution Protocol",
+ RFC-826, Symbolics Cambridge Research Center, November 1982.
+
+ [3] Postel, J., "Internet Protocol", RFC-791, USC/Information
+ Sciences Institute, September 1981.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Leffler & Karels [Page 6]
+