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

  1.  
  2.  
  3. Network Working Group                                      Jeffrey Mogul Request for Comments: 922                    Computer Science Department                                                      Stanford University                                                             October 1984 
  4.  
  5.        BROADCASTING INTERNET DATAGRAMS IN THE PRESENCE OF SUBNETS 
  6.  
  7.  Status of this Memo 
  8.  
  9.    We propose simple rules for broadcasting Internet datagrams on local    networks that support broadcast, for addressing broadcasts, and for    how gateways should handle them. 
  10.  
  11.    This RFC suggests a proposed protocol for the ARPA-Internet    community, and requests discussion and suggestions for improvements.    Distribution of this memo is unlimited. 
  12.  
  13. Acknowledgement 
  14.  
  15.    This proposal here is the result of discussion with several other    people, especially J. Noel Chiappa and Christopher A. Kent, both of    whom both pointed me at important references. 
  16.  
  17. 1. Introduction 
  18.  
  19.    The use of broadcasts, especially on high-speed local area networks,    is a good base for many applications.  Since broadcasting is not    covered in the basic IP specification [12], there is no agreed-upon    way to do it, and so protocol designers have not made use of it. (The    issue has been touched upon before, e.g. [6], but has not been the    subject of a standard.) 
  20.  
  21.    We consider here only the case of unreliable, unsequenced, possibly    duplicated datagram broadcasts (for a discussion of TCP broadcasting,    see [10].) Even though unreliable and limited in length, datagram    broadcasts are quite useful [1]. 
  22.  
  23.    We assume that the data link layer of the local network supports    efficient broadcasting.  Most common local area networks do support    broadcast; for example, Ethernet [7, 5], ChaosNet [9], token ring    networks [2], etc. 
  24.  
  25.    We do not assume, however, that broadcasts are reliably delivered.    (One might consider providing a reliable datagram broadcast protocol    as a layer above IP.) It is quite expensive to guarantee delivery of    broadcasts; instead, what we assume is that a host will receive most    of the broadcasts that are sent.  This is important to avoid    excessive use of broadcasts; since every host on the network devotes    at least some effort to every broadcast, they are costly. 
  26.  
  27.  
  28.  
  29. Mogul                                                           [Page 1] 
  30.  
  31.  
  32.  RFC 922                                                     October 1984 Broadcasting Internet Datagrams in the Presence of Subnets 
  33.  
  34.     When a datagram is broadcast, it imposes a cost on every host that    hears it.  Therefore, broadcasting should not be used    indiscriminately, but rather only when it is the best solution to a    problem. 
  35.  
  36. 2. Terminology 
  37.  
  38.    Because broadcasting depends on the specific data link layer in use    on a local network, we must discuss it with reference to both    physical networks and logical networks. 
  39.  
  40.    The terms we will use in referring to physical networks are, from the    point of view of the host sending or forwarding a broadcast: 
  41.  
  42.    Local Hardware Network 
  43.  
  44.       The physical link to which the host is attached. 
  45.  
  46.    Remote Hardware Network 
  47.  
  48.       A physical network which is separated from the host by at least       one gateway. 
  49.  
  50.    Collection of Hardware Networks 
  51.  
  52.       A set of hardware networks (transitively) connected by gateways. 
  53.  
  54.    The IP world includes several kinds of logical network.  To avoid    ambiguity, we will use the following terms: 
  55.  
  56.    Internet 
  57.  
  58.       The DARPA Internet collection of IP networks. 
  59.  
  60.    IP Network 
  61.  
  62.       One or a collection of several hardware networks that have one       specific IP network number. 
  63.  
  64.    Subnet 
  65.  
  66.       A single member of the collection of hardware networks that       compose an IP network.  Host addresses on a given subnet share an       IP network number with hosts on all other subnets of that IP       network, but the local-address part is divided into subnet-number 
  67.  
  68.  
  69.  
  70.  Mogul                                                           [Page 2] 
  71.  
  72.  
  73.  RFC 922                                                     October 1984 Broadcasting Internet Datagrams in the Presence of Subnets 
  74.  
  75.        and host-number fields to indicate which subnet a host is on.  We       do not assume a particular division of the local-address part;       this could vary from network to network. 
  76.  
  77.    The introduction of a subnet level in the addressing hierarchy is at    variance with the IP specification [12], but as the use of    addressable subnets proliferates it is obvious that a broadcasting    scheme should support subnetting.  For more on subnets, see [8]. 
  78.  
  79.    In this paper, the term "host address" refers to the host-on-subnet    address field of a subnetted IP network, or the host-part field    otherwise. 
  80.  
  81.    An IP network may consist of a single hardware network or a    collection of subnets; from the point of view of a host on another IP    network, it should not matter. 
  82.  
  83. 3. Why Broadcast? 
  84.  
  85.    Broadcasts are useful when a host needs to find information without    knowing exactly what other host can supply it, or when a host wants    to provide information to a large set of hosts in a timely manner. 
  86.  
  87.    When a host needs information that one or more of its neighbors might    have, it could have a list of neighbors to ask, or it could poll all    of its possible neighbors until one responds.  Use of a wired-in list    creates obvious network management problems (early binding is    inflexible).  On the other hand, asking all of one's neighbors is    slow if one must generate plausible host addresses, and try them    until one works.  On the ARPANET, for example, there are roughly 65    thousand plausible host numbers.  Most IP implementations have used    wired-in lists (for example, addresses of "Prime" gateways.)    Fortunately, broadcasting provides a fast and simple way for a host    to reach all of its neighbors. 
  88.  
  89.    A host might also use a broadcast to provide all of its neighbors    with some information; for example, a gateway might announce its    presence to other gateways. 
  90.  
  91.    One way to view broadcasting is as an imperfect substitute for    multicasting, the sending of messages to a subset of the hosts on a    network.  In practice, broadcasts are usually used where multicasts    are what is wanted; datagrams are broadcast at the hardware level,    but filtering software in the receiving hosts gives the effect of    multicasting. 
  92.  
  93.    For more examples of broadcast applications, see [1, 3]. 
  94.  
  95.  Mogul                                                           [Page 3] 
  96.  
  97.  
  98.  RFC 922                                                     October 1984 Broadcasting Internet Datagrams in the Presence of Subnets 
  99.  
  100.  4. Broadcast Classes 
  101.  
  102.    There are several classes of IP broadcasting: 
  103.  
  104.       - Single-destination datagrams broadcast on the local hardware         net: A datagram is destined for a specific IP host, but the         sending host broadcasts it at the data link layer, perhaps to         avoid having to do routing.  Since this is not an IP broadcast,         the IP layer is not involved, except that a host should discard         datagram not meant for it without becoming flustered (i.e.,         printing an error message). 
  105.  
  106.       - Broadcast to all hosts on the local hardware net: A         distinguished value for the host-number part of the IP address         denotes broadcast instead of a specific host.  The receiving IP         layer must be able to recognize this address as well as its own.         However, it might still be useful to distinguish at higher         levels between broadcasts and non-broadcasts, especially in         gateways.  This is the most useful case of broadcast; it allows         a host to discover gateways without wired-in tables, it is the         basis for address resolution protocols, and it is also useful         for accessing such utilities as name servers, time servers,         etc., without requiring wired-in addresses. 
  107.  
  108.       - Broadcast to all hosts on a remote hardware network: It is         occasionally useful to send a broadcast to all hosts on a         non-local network; for example, to find the latest version of a         hostname database, to bootload a host on a subnet without a         bootserver, or to monitor the timeservers on the subnet.  This         case is the same as local-network broadcasts; the datagram is         routed by normal mechanisms until it reaches a gateway attached         to the destination hardware network, at which point it is         broadcast.  This class of broadcasting is also known as         "directed broadcasting", or quaintly as sending a "letter bomb"         [1]. 
  109.  
  110.       - Broadcast to all hosts on a subnetted IP network (Multi-subnet         broadcasts): A distinguished value for the subnet-number part of         the IP address is used to denote "all subnets".  Broadcasts to         all hosts of a remote subnetted IP network are done just as         directed broadcasts to a single subnet. 
  111.  
  112.       - Broadcast to the entire Internet: This is probably not useful,         and almost certainly not desirable. 
  113.  
  114.  
  115.  
  116.  
  117.  
  118. Mogul                                                           [Page 4] 
  119.  
  120.  
  121.  RFC 922                                                     October 1984 Broadcasting Internet Datagrams in the Presence of Subnets 
  122.  
  123.     For reasons of performance or security, a gateway may choose not to    forward broadcasts; especially, it may be a good idea to ban    broadcasts into or out of an autonomous group of networks. 
  124.  
  125. 5. Broadcast Methods 
  126.  
  127.    A host's IP receiving layer must be modified to support broadcasting.    In the absence of broadcasting, a host determines if it is the    recipient of a datagram by matching the destination address against    all of its IP addresses.  With broadcasting, a host must compare the    destination address not only against the host's addresses, but also    against the possible broadcast addresses for that host. 
  128.  
  129.    The problem of how best to send a broadcast has been extensively    discussed [1, 3, 4, 13, 14].  Since we assume that the problem has    already been solved at the data link layer, an IP host wishing to    send either a local broadcast or a directed broadcast need only    specify the appropriate destination address and send the datagram as    usual.  Any sophisticated algorithms need only reside in gateways. 
  130.  
  131.    The problem of broadcasting to all hosts on a subnetted IP network is    apparently somewhat harder.  However, even in this case it turns out    that the best known algorithms require no additional complexity in    non-gateway hosts.  A good broadcast method will meet these    additional criteria: 
  132.  
  133.       - No modification of the IP datagram format. 
  134.  
  135.       - Reasonable efficiency in terms of the number of excess copies         generated and the cost of paths chosen. 
  136.  
  137.       - Minimization of gateway modification, in both code and data         space. 
  138.  
  139.       - High likelihood of delivery. 
  140.  
  141.    The algorithm that appears best is the Reverse Path Forwarding (RPF)    method [4].  While RPF is suboptimal in cost and reliability, it is    quite good, and is extremely simple to implement, requiring no    additional data space in a gateway. 
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151. Mogul                                                           [Page 5] 
  152.  
  153.  
  154.  RFC 922                                                     October 1984 Broadcasting Internet Datagrams in the Presence of Subnets 
  155.  
  156.  6. Gateways and Broadcasts 
  157.  
  158.    Most of the complexity in supporting broadcasts lies in gateways.  If    a gateway receives a directed broadcast for a network to which it is    not connected, it simply forwards it using the usual mechanism.    Otherwise, it must do some additional work. 
  159.  
  160.    6.1. Local Broadcasts 
  161.  
  162.       When a gateway receives a local broadcast datagram, there are       several things it might have to do with it.  The situation is       unambiguous, but without due care it is possible to create       infinite loops. 
  163.  
  164.       The appropriate action to take on receipt of a broadcast datagram       depends on several things: the subnet it was received on, the       destination network, and the addresses of the gateway. 
  165.  
  166.          - The primary rule for avoiding loops is "never broadcast a            datagram on the hardware network it was received on". It is            not sufficient simply to avoid repeating datagram that a            gateway has heard from itself; this still allows loops if            there are several gateways on a hardware network. 
  167.  
  168.          - If the datagram is received on the hardware network to which            it is addressed, then it should not be forwarded.  However,            the gateway should consider itself to be a destination of the            datagram (for example, it might be a routing table update.) 
  169.  
  170.          - Otherwise, if the datagram is addressed to a hardware network            to which the gateway is connected, it should be sent as a            (data link layer) broadcast on that network.  Again, the            gateway should consider itself a destination of the datagram. 
  171.  
  172.          - Otherwise, the gateway should use its normal routing            procedure to choose a subsequent gateway, and send the            datagram along to it. 
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  Mogul                                                           [Page 6] 
  185.  
  186.  
  187.  RFC 922                                                     October 1984 Broadcasting Internet Datagrams in the Presence of Subnets 
  188.  
  189.     6.2. Multi-subnet broadcasts 
  190.  
  191.       When a gateway receives a broadcast meant for all subnets of an IP       network, it must use the Reverse Path Forwarding algorithm to       decide what to do.  The method is simple: the gateway should       forward copies of the datagram along all connected links, if and       only if the datagram arrived on the link which is part of the best       route between the gateway and the source of the datagram.       Otherwise, the datagram should be discarded. 
  192.  
  193.       This algorithm may be improved if some or all of the gateways       exchange among themselves additional information; this can be done       transparently from the point of view of other hosts and even other       gateways.  See [4, 3] for details. 
  194.  
  195.    6.3. Pseudo-Algol Routing Algorithm 
  196.  
  197.       This is a pseudo-Algol description of the routing algorithm a       gateway should use.  The algorithm is shown in figure 1.  Some       definitions are: 
  198.  
  199.       RouteLink(host) 
  200.  
  201.          A function taking a host address as a parameter and returning          the first-hop link from the gateway to the host. 
  202.  
  203.       RouteHost(host) 
  204.  
  205.          As above but returns the first-hop host address. 
  206.  
  207.       ResolveAddress(host) 
  208.  
  209.          Returns the hardware address for an IP host. 
  210.  
  211.       IncomingLink 
  212.  
  213.          The link on which the packet arrived. 
  214.  
  215.       OutgoingLinkSet 
  216.  
  217.          The set of links on which the packet should be sent. 
  218.  
  219.       OutgoingHardwareHost 
  220.  
  221.          The hardware host address to send the packet to. 
  222.  
  223.  
  224.  
  225.  Mogul                                                           [Page 7] 
  226.  
  227.  
  228.  RFC 922                                                     October 1984 Broadcasting Internet Datagrams in the Presence of Subnets 
  229.  
  230.        Destination.host 
  231.  
  232.          The host-part of the destination address. 
  233.  
  234.       Destination.subnet 
  235.  
  236.          The subnet-part of the destination address. 
  237.  
  238.       Destination.ipnet 
  239.  
  240.          The IP-network-part of the destination address. 
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  Mogul                                                           [Page 8] 
  279.  
  280.  
  281.  RFC 922                                                     October 1984 Broadcasting Internet Datagrams in the Presence of Subnets 
  282.  
  283. BEGIN    IF Destination.ipnet IN AllLinks THEN       BEGIN          IF IsSubnetted(Destination.ipnet) THEN             BEGIN                IF Destination.subnet = BroadcastSubnet THEN                   BEGIN      /* use Reverse Path Forwarding algorithm */                      IF IncomingLink = RouteLink(Source) THEN                         BEGIN IF Destination.host = BroadcastHost THEN                               OutgoingLinkSet <- AllLinks -                            IncomingLink;                            OutgoingHost <- BroadcastHost;                            Examine packet for possible internal use;                         END                      ELSE  /* duplicate from another gateway, discard */                         Discard;                   END                ELSE                   IF Destination.subnet = IncomingLink.subnet THEN                      BEGIN           /* forwarding would cause a loop */                         IF Destination.host = BroadcastHost THEN                            Examine packet for possible internal use;                         Discard;                      END                   ELSE BEGIN    /* forward to (possibly local) subnet */                         OutgoingLinkSet <- RouteLink(Destination);                         OutgoingHost <- RouteHost(Destination);                      END             END          ELSE BEGIN         /* destined for one of our local networks */                IF Destination.ipnet = IncomingLink.ipnet THEN                   BEGIN              /* forwarding would cause a loop */                      IF Destination.host = BroadcastHost THEN                         Examine packet for possible internal use;                      Discard;                   END                ELSE BEGIN                     /* might be a broadcast */                      OutgoingLinkSet <- RouteLink(Destination);                      OutgoingHost <- RouteHost(Destination);                   END             END       END    ELSE BEGIN                    /* forward to a non-local IP network */          OutgoingLinkSet <- RouteLink(Destination);          OutgoingHost <- RouteHost(Destination);       END    OutgoingHardwareHost <- ResolveAddress(OutgoingHost); END 
  284.  
  285. Figure 1: Pseudo-Algol algorithm for routing broadcasts by gateways 
  286.  
  287. Mogul                                                           [Page 9] 
  288.  
  289.  
  290.  RFC 922                                                     October 1984 Broadcasting Internet Datagrams in the Presence of Subnets 
  291.  
  292.  7. Broadcast IP Addressing - Conventions 
  293.  
  294.    If different IP implementations are to be compatible, there must be    convention distinguished number to denote "all hosts" and "all    subnets". 
  295.  
  296.    Since the local network layer can always map an IP address into data    link layer address, the choice of an IP "broadcast host number" is    somewhat arbitrary.  For simplicity, it should be one not likely to    be assigned to a real host.  The number whose bits are all ones has    this property; this assignment was first proposed in [6].  In the few    cases where a host has been assigned an address with a host-number    part of all ones, it does not seem onerous to require renumbering. 
  297.  
  298.    The "all subnets" number is also all ones; this means that a host    wishing to broadcast to all hosts on a remote IP network need not    know how the destination address is divided up into subnet and host    fields, or if it is even divided at all.  For example, 36.255.255.255    may denote all the hosts on a single hardware network, or all the    hosts on a subnetted IP network with 1 byte of subnet field and 2    bytes of host field, or any other possible division. 
  299.  
  300.    The address 255.255.255.255 denotes a broadcast on a local hardware    network that must not be forwarded.  This address may be used, for    example, by hosts that do not know their network number and are    asking some server for it. 
  301.  
  302.    Thus, a host on net 36, for example, may: 
  303.  
  304.       - broadcast to all of its immediate neighbors by using         255.255.255.255 
  305.  
  306.       - broadcast to all of net 36 by using 36.255.255.255 
  307.  
  308.    without knowing if the net is subnetted; if it is not, then both    addresses have the same effect. A robust application might try the    former address, and if no response is received, then try the latter.    See [1] for a discussion of such "expanding ring search" techniques. 
  309.  
  310.    If the use of "all ones" in a field of an IP address means    "broadcast", using "all zeros" could be viewed as meaning    "unspecified".  There is probably no reason for such addresses to    appear anywhere but as the source address of an ICMP Information    Request datagram.  However, as a notational convention, we refer to    networks (as opposed to hosts) by using addresses with zero fields.    For example, 36.0.0.0 means "network number 36" while 36.255.255.255    means "all hosts on network number 36". 
  311.  
  312.  Mogul                                                          [Page 10] 
  313.  
  314.  
  315.  RFC 922                                                     October 1984 Broadcasting Internet Datagrams in the Presence of Subnets 
  316.  
  317.     7.1. ARP Servers and Broadcasts 
  318.  
  319.       The Address Resolution Protocol (ARP) described in [11] can, if       incorrectly implemented, cause problems when broadcasts are used       on a network where not all hosts share an understanding of what a       broadcast address is.  The temptation exists to modify the ARP       server so that it provides the mapping between an IP broadcast       address and the hardware broadcast address. 
  320.  
  321.       This temptation must be resisted.  An ARP server should never       respond to a request whose target is a broadcast address.  Such a       request can only come from a host that does not recognize the       broadcast address as such, and so honoring it would almost       certainly lead to a forwarding loop.  If there are N such hosts on       the physical network that do not recognize this address as a       broadcast, then a datagram sent with a Time-To-Live of T could       potentially give rise to T**N spurious re-broadcasts. 
  322.  
  323. 8. References 
  324.  
  325.    1.   David Reeves Boggs.  Internet Broadcasting.  Ph.D. Th., Stanford         University, January 1982. 
  326.  
  327.    2.   D.D. Clark, K.T. Pogran, and D.P. Reed.  "An Introduction to         Local Area Networks".  Proc. IEEE 66, 11, pp1497-1516,         November 1978. 
  328.  
  329.    3.   Yogan Kantilal Dalal.  Broadcast Protocols in Packet Switched         Computer Networks.  Ph.D. Th., Stanford University, April 1977. 
  330.  
  331.    4.   Yogan K. Dalal and Robert M. Metcalfe.  "Reverse Path Forwarding         of Broadcast Packets".  Comm. ACM 21, 12, pp1040-1048,         December 1978. 
  332.  
  333.    5.   The Ethernet, A Local Area Network: Data Link Layer and Physical         Layer Specifications.  Version 1.0, Digital Equipment         Corporation, Intel, Xerox, September 1980. 
  334.  
  335.    6.   Robert Gurwitz and Robert Hinden.  IP - Local Area Network         Addressing Issues.  IEN-212, BBN, September 1982. 
  336.  
  337.    7.   R.M. Metcalfe and D.R. Boggs.  "Ethernet: Distributed Packet         Switching for Local Computer Networks".  Comm. ACM 19, 7,         pp395-404, July 1976.  Also CSL-75-7, Xerox Palo Alto Research         Center, reprinted in CSL-80-2. 
  338.  
  339.  
  340.  
  341.  Mogul                                                          [Page 11] 
  342.  
  343.  
  344.  RFC 922                                                     October 1984 Broadcasting Internet Datagrams in the Presence of Subnets 
  345.  
  346.     8.   Jeffrey Mogul.  Internet Subnets.  RFC-917, Stanford University,         October 1984. 
  347.  
  348.    9.   David A. Moon.  Chaosnet.  A.I. Memo 628, Massachusetts         Institute of Technology Artificial Intelligence Laboratory,         June 1981. 
  349.  
  350.    10.  William W. Plummer.  Internet Broadcast Protocols.  IEN-10, BBN,         March 1977. 
  351.  
  352.    11.  David Plummer.  An Ethernet Address Resolution Protocol.         RFC-826, Symbolics, September 1982. 
  353.  
  354.    12.  Jon Postel.  Internet Protocol.  RFC-791, ISI, September 1981. 
  355.  
  356.    13.  David W. Wall.  Mechanisms for Broadcast and Selective         Broadcast.  Ph.D. Th., Stanford University, June 1980. 
  357.  
  358.    14.  David W. Wall and Susan S. Owicki.  Center-based Broadcasting.         Computer Systems Lab Technical Report TR189, Stanford         University, June 1980. 
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  Mogul                                                          [Page 12] 
  387.  
  388.