home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc0893.txt < prev    next >
Text File  |  1996-05-07  |  14KB  |  178 lines

  1.  
  2.  
  3. Network Working Group                                  Samuel J. Leffler Request for Comments: 893                              Michael J. Karels                                     University of California at Berkeley                                                               April 1984 
  4.  
  5.                          Trailer Encapsulations 
  6.  
  7.  Status of this Memo 
  8.  
  9.    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. 
  10.  
  11. Introduction 
  12.  
  13.    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]. 
  14.  
  15.    The use of a trailer encapsulation was suggested by Greg Chesson, and    the encapsulation described here was designed by Bill Joy. 
  16.  
  17. Motivation 
  18.  
  19.    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. 
  20.  
  21.    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 
  22.  
  23.  Leffler & Karels                                                [Page 1] 
  24.  
  25.  
  26.  RFC 893                                                       April 1984 
  27.  
  28.     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. 
  29.  
  30.    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. 
  31.  
  32.    There are several implicit assumptions in the above argument. 
  33.  
  34.       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. 
  35.  
  36.       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. 
  37.  
  38.       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). 
  39.  
  40.       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. 
  41.  
  42.    The first point is well known and the motivation for this note. 
  43.  
  44.  Leffler & Karels                                                [Page 2] 
  45.  
  46.  
  47.  RFC 893                                                       April 1984 
  48.  
  49.     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.) 
  50.  
  51.    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. 
  52.  
  53.    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. 
  54.  
  55.    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. 
  56.  
  57.    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 
  58.  
  59.  
  60.  
  61. Leffler & Karels                                                [Page 3] 
  62.  
  63.  
  64.  RFC 893                                                       April 1984 
  65.  
  66.     recognition is a valid criticism.  In the case of network hardware    which supports DMA, however, the entire packet is always received    before processing begins. 
  67.  
  68. Trailer Encapsulation Packet Formats 
  69.  
  70.    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. 
  71.  
  72.    The format of a trailer packet is shown in the following diagram. 
  73.  
  74.       +----+-------------------------------------------------+----+       | LH |                     data                        | TH |       +----+-------------------------------------------------+----+            ^                    (  ^  )                      ^ 
  75.  
  76.       LH: 
  77.  
  78.          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. 
  79.  
  80.          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). 
  81.  
  82.       data: 
  83.  
  84.          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. 
  85.  
  86.       TH: 
  87.  
  88.          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. 
  89.  
  90.    The carats (^) indicate the page boundaries on which the receiving    host would place its input buffer for optimal alignment when 
  91.  
  92.  Leffler & Karels                                                [Page 4] 
  93.  
  94.  
  95.  RFC 893                                                       April 1984 
  96.  
  97.     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. 
  98.  
  99. Trailer Format 
  100.  
  101.    +----------------+----------------+------~...~----------+    |      TYPE      |  HEADER LENGTH |  ORIGINAL HEADER(S) |    +----------------+----------------+------~...~----------+ 
  102.  
  103.    Type:        16 bits 
  104.  
  105.       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. 
  106.  
  107.    Header length:       16 bits 
  108.  
  109.       The header length field of the trailer data segment.  This       specifies the length in bytes of the following header data. 
  110.  
  111.    Original headers: <variable length> 
  112.  
  113.       The header information which logically belongs before the data       segment.  This is normally the network and transport level       protocol headers. 
  114.  
  115. Summary 
  116.  
  117.    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. 
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  Leffler & Karels                                                [Page 5] 
  126.  
  127.  
  128.  RFC 893                                                       April 1984 
  129.  
  130.  References 
  131.  
  132.    [1]  "The Ethernet - A Local Area Network", Version 1.0, Digital    Equipment Corporation, Intel Corporation, Xerox Corporation,    September 1980. 
  133.  
  134.    [2]  Plummer, David C., "An Ethernet Address Resolution Protocol",    RFC-826,  Symbolics Cambridge Research Center, November 1982. 
  135.  
  136.    [3]  Postel, J., "Internet Protocol", RFC-791, USC/Information    Sciences Institute, September 1981. 
  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. Leffler & Karels                                                [Page 6] 
  177.  
  178.