Annotation of 43BSDReno/share/doc/smm/15.net/e.t, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1983, 1986 The Regents of the University of California.
                      2: .\" All rights reserved.
                      3: .\"
                      4: .\" Redistribution and use in source and binary forms are permitted
                      5: .\" provided that the above copyright notice and this paragraph are
                      6: .\" duplicated in all such forms and that any documentation,
                      7: .\" advertising materials, and other materials related to such
                      8: .\" distribution and use acknowledge that the software was developed
                      9: .\" by the University of California, Berkeley.  The name of the
                     10: .\" University may not be used to endorse or promote products derived
                     11: .\" from this software without specific prior written permission.
                     12: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                     13: .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                     14: .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     15: .\"
                     16: .\"    @(#)e.t 6.4 (Berkeley) 3/7/89
                     17: .\"
                     18: .nr H2 1
                     19: .\".ds RH "Trailer protocols
                     20: .br
                     21: .ne 2i
                     22: .NH
                     23: \s+2Trailer protocols\s0
                     24: .PP
                     25: Core to core copies can be expensive.
                     26: Consequently, a great deal of effort was spent
                     27: in minimizing such operations.  The VAX architecture
                     28: provides virtual memory hardware organized in
                     29: page units.  To cut down on copy operations, data
                     30: is kept in page-sized units on page-aligned
                     31: boundaries whenever possible.  This allows data
                     32: to be moved in memory simply by remapping the page
                     33: instead of copying.  The mbuf and network
                     34: interface routines perform page table manipulations
                     35: where needed, hiding the complexities of the VAX
                     36: virtual memory hardware from higher level code. 
                     37: .PP
                     38: Data enters the system in two ways: from the user,
                     39: or from the network (hardware interface).  When data
                     40: is copied from the user's address space
                     41: into the system it is deposited in pages (if sufficient
                     42: data is present).
                     43: This encourages the user to transmit information in
                     44: messages which are a multiple of the system page size.
                     45: .PP
                     46: Unfortunately, performing a similar operation when taking
                     47: data from the network is very difficult.
                     48: Consider the format of an incoming packet.  A packet
                     49: usually contains a local network header followed by
                     50: one or more headers used by the high level protocols. 
                     51: Finally, the data, if any, follows these headers.  Since
                     52: the header information may be variable length, DMA'ing the eventual
                     53: data for the user into a page aligned area of
                     54: memory is impossible without
                     55: \fIa priori\fP knowledge of the format (e.g., by supporting
                     56: only a single protocol header format).
                     57: .PP
                     58: To allow variable length header information to
                     59: be present and still ensure page alignment of data,
                     60: a special local network encapsulation may be used.
                     61: This encapsulation, termed a \fItrailer protocol\fP [Leffler84],
                     62: places the variable length header information after
                     63: the data.  A fixed size local network
                     64: header is then prepended to the resultant packet. 
                     65: The local network header contains the size of the
                     66: data portion (in units of 512 bytes), and a new \fItrailer protocol
                     67: header\fP, inserted before the variable length
                     68: information, contains the size of the variable length
                     69: header information.  The following trailer
                     70: protocol header is used to store information
                     71: regarding the variable length protocol header:
                     72: .DS
                     73: ._f
                     74: struct {
                     75:        short   protocol;       /* original protocol no. */
                     76:        short   length; /* length of trailer */
                     77: };
                     78: .DE
                     79: .PP
                     80: The processing of the trailer protocol is very
                     81: simple.  On output, the local network header indicates that
                     82: a trailer encapsulation is being used.
                     83: The header also includes an indication
                     84: of the number of data pages present before the trailer
                     85: protocol header.  The trailer protocol header is
                     86: initialized to contain the actual protocol identifier and the
                     87: variable length header size, and is appended to the data
                     88: along with the variable length header information.
                     89: .PP
                     90: On input, the interface routines identify the
                     91: trailer encapsulation
                     92: by the protocol type stored in the local network header,
                     93: then calculate the number of
                     94: pages of data to find the beginning of the trailer. 
                     95: The trailing information is copied into a separate
                     96: mbuf and linked to the front of the resultant packet.
                     97: .PP
                     98: Clearly, trailer protocols require cooperation between
                     99: source and destination.  In addition, they are normally
                    100: cost effective only when sizable packets are used.  The
                    101: current scheme works because the local network encapsulation
                    102: header is a fixed size, allowing DMA operations
                    103: to be performed at a known offset from the first data page
                    104: being received.  Should the local network header be
                    105: variable length this scheme fails. 
                    106: .PP
                    107: Statistics collected indicate that as much as 200Kb/s
                    108: can be gained by using a trailer protocol with
                    109: 1Kbyte packets.  The average size of the variable
                    110: length header was 40 bytes (the size of a
                    111: minimal TCP/IP packet header).  If hardware
                    112: supports larger sized packets, even greater gains
                    113: may be realized.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.