Annotation of 43BSDReno/share/doc/smm/15.net/c.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: .\"    @(#)c.t 6.4 (Berkeley) 3/7/89
                     17: .\"
                     18: .nr H2 1
                     19: .\".ds RH "Buffering and congestion control
                     20: .br
                     21: .ne 2i
                     22: .NH
                     23: \s+2Buffering and congestion control\s0
                     24: .PP
                     25: One of the major factors in the performance of a protocol is
                     26: the buffering policy used.  Lack of a proper buffering policy
                     27: can force packets to be dropped, cause falsified windowing
                     28: information to be emitted by protocols, fragment host memory,
                     29: degrade the overall host performance, etc.  Due to problems
                     30: such as these, most systems allocate a fixed pool of memory
                     31: to the networking system and impose
                     32: a policy optimized for ``normal'' network operation.  
                     33: .PP
                     34: The networking system developed for UNIX is little different in this
                     35: respect.  At boot time a fixed amount of memory is allocated by
                     36: the networking system.  At later times more system memory
                     37: may be requested as the need arises, but at no time is
                     38: memory ever returned to the system.  It is possible to
                     39: garbage collect memory from the network, but difficult.  In
                     40: order to perform this garbage collection properly, some
                     41: portion of the network will have to be ``turned off'' as
                     42: data structures are updated.  The interval over which this
                     43: occurs must kept small compared to the average inter-packet
                     44: arrival time, or too much traffic may
                     45: be lost, impacting other hosts on the network, as well as
                     46: increasing load on the interconnecting mediums.  In our
                     47: environment we have not experienced a need for such compaction,
                     48: and thus have left the problem unresolved.
                     49: .PP
                     50: The mbuf structure was introduced in chapter 5.  In this
                     51: section a brief description will be given of the allocation
                     52: mechanisms, and policies used by the protocols in performing
                     53: connection level buffering.
                     54: .NH 2
                     55: Memory management
                     56: .PP
                     57: The basic memory allocation routines manage a private page map,
                     58: the size of which determines the maximum amount of memory
                     59: that may be allocated by the network.
                     60: A small amount of memory is allocated at boot time
                     61: to initialize the mbuf and mbuf page cluster free lists.
                     62: When the free lists are exhausted, more memory is requested
                     63: from the system memory allocator if space remains in the map.
                     64: If memory cannot be allocated,
                     65: callers may block awaiting free memory,
                     66: or the failure may be reflected to the caller immediately.
                     67: The allocator will not block awaiting free map entries, however,
                     68: as exhaustion of the page map usually indicates that buffers have been lost
                     69: due to a ``leak.''
                     70: The private page table is used by the network buffer management
                     71: routines in remapping pages to
                     72: be logically contiguous as the need arises.  In addition, an
                     73: array of reference counts parallels the page table and is used
                     74: when multiple references to a page are present.
                     75: .PP
                     76: Mbufs are 128 byte structures, 8 fitting in a 1Kbyte
                     77: page of memory.  When data is placed in mbufs,
                     78: it is copied or remapped into logically contiguous pages of
                     79: memory from the network page pool if possible.
                     80: Data smaller than half of the size
                     81: of a page is copied into one or more 112 byte mbuf data areas. 
                     82: .NH 2
                     83: Protocol buffering policies
                     84: .PP
                     85: Protocols reserve fixed amounts of
                     86: buffering for send and receive queues at socket creation time.  These
                     87: amounts define the high and low water marks used by the socket routines
                     88: in deciding when to block and unblock a process.  The reservation
                     89: of space does not currently
                     90: result in any action by the memory management
                     91: routines.
                     92: .PP
                     93: Protocols which provide connection level flow control do this
                     94: based on the amount of space in the associated socket queues.  That
                     95: is, send windows are calculated based on the amount of free space
                     96: in the socket's receive queue, while receive windows are adjusted
                     97: based on the amount of data awaiting transmission in the send queue.
                     98: Care has been taken to avoid the ``silly window syndrome'' described
                     99: in [Clark82] at both the sending and receiving ends.
                    100: .NH 2
                    101: Queue limiting
                    102: .PP
                    103: Incoming packets from the network are always received unless
                    104: memory allocation fails.  However, each Level 1 protocol
                    105: input queue
                    106: has an upper bound on the queue's length, and any packets
                    107: exceeding that bound are discarded.  It is possible for a host to be
                    108: overwhelmed by excessive network traffic (for instance a host
                    109: acting as a gateway from a high bandwidth network to a low bandwidth
                    110: network).  As a ``defensive'' mechanism the queue limits may be
                    111: adjusted to throttle network traffic load on a host.
                    112: Consider a host willing to devote some percentage of
                    113: its machine to handling network traffic. 
                    114: If the cost of handling an
                    115: incoming packet can be calculated so that an acceptable
                    116: ``packet handling rate''
                    117: can be determined, then input queue lengths may be dynamically
                    118: adjusted based on a host's network load and the number of packets
                    119: awaiting processing.  Obviously, discarding packets is
                    120: not a satisfactory solution to a problem such as this
                    121: (simply dropping packets is likely to increase the load on a network);
                    122: the queue lengths were incorporated mainly as a safeguard mechanism.
                    123: .NH 2
                    124: Packet forwarding
                    125: .PP
                    126: When packets can not be forwarded because of memory limitations,
                    127: the system attempts to generate a ``source quench'' message.  In addition,
                    128: any other problems encountered during packet forwarding are also
                    129: reflected back to the sender in the form of ICMP packets.  This
                    130: helps hosts avoid unneeded retransmissions.
                    131: .PP
                    132: Broadcast packets are never forwarded due to possible dire
                    133: consequences.  In an early stage of network development, broadcast
                    134: packets were forwarded and a ``routing loop'' resulted in network
                    135: saturation and every host on the network crashing.

unix.superglobalmegacorp.com

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