summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc919.txt
blob: 55c760bf19c481d2ad96c2dbe3fd97ba3a243b26 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
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
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
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
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
Network Working Group                                      Jeffrey Mogul
Request for Comments: 919                    Computer Science Department
                                                     Stanford University
                                                            October 1984

                     BROADCASTING INTERNET DATAGRAMS


Status of this Memo

   We propose simple rules for broadcasting Internet datagrams on local
   networks that support broadcast, for addressing broadcasts, and for
   how gateways should handle them.

   This RFC suggests a proposed protocol for the ARPA-Internet
   community, and requests discussion and suggestions for improvements.
   Distribution of this memo is unlimited.

Acknowledgement

   This proposal 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.

1. Introduction

   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 [13], 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.)

   We consider here only the case of unreliable, unsequenced, possibly
   duplicated datagram broadcasts (for a discussion of TCP broadcasting,
   see [11].) Even though unreliable and limited in length, datagram
   broadcasts are quite useful [1].

   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 [10], token ring
   networks [2], etc.

   We do not assume, however, that broadcasts are reliably delivered.
   (One might consider providing a reliable 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.



Mogul                                                           [Page 1]
^L


RFC 919                                                     October 1984
Broadcasting Internet Datagrams


   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.

   Note: some organizations have divided their IP networks into subnets,
   for which a standard [8] has been proposed.  This RFC does not cover
   the numerous complications arising from the interactions between
   subnets and broadcasting; see [9] for a complete discussion.

2. Terminology

   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.

   The terms we will use in referring to physical networks are, from the
   point of view of the host sending or forwarding a broadcast:

   Local Hardware Network

      The physical link to which the host is attached.

   Remote Hardware Network

      A physical network which is separated from the host by at least
      one gateway.

   Collection of Hardware Networks

      A set of hardware networks (transitively) connected by gateways.

   The IP world includes several kinds of logical network.  To avoid
   ambiguity, we will use the following terms:

   Internet

      The DARPA Internet collection of IP networks.

   IP Network

      One or a collection of several hardware networks that have one
      specific IP network number.






Mogul                                                           [Page 2]
^L


RFC 919                                                     October 1984
Broadcasting Internet Datagrams


3. Why Broadcast?

   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.

   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.

   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.

   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; packets are broadcast at the hardware level, but
   filtering software in the receiving hosts gives the effect of
   multicasting.

   For more examples of broadcast applications, see [1, 3].

4. Broadcast Classes

   There are several classes of IP broadcasting:

      - Single-destination datagram broadcast on the local IP net: A
        datagrams 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
        datagrams not meant for it without becoming flustered (i.e.,
        printing an error message).

      - Broadcast to all hosts on the local IP 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.


Mogul                                                           [Page 3]
^L


RFC 919                                                     October 1984
Broadcasting Internet Datagrams


        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.

      - Broadcast to all hosts on a remote IP 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 an IP network without a
        bootserver, or to monitor the timeservers on the IP network.
        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 IP 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].

      - Broadcast to the entire Internet: This is probably not useful,
        and almost certainly not desirable.

   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.

5. Broadcast Methods

   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.

   The problem of how best to send a broadcast has been extensively
   discussed [1, 3, 4, 14, 15].  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.








Mogul                                                           [Page 4]
^L


RFC 919                                                     October 1984
Broadcasting Internet Datagrams


6. Gateways and Broadcasts

   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.

   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.

   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.

      - 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 datagrams that a gateway
        has heard from itself; this still allows loops if there are
        several gateways on a hardware network.

      - 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.)

      - 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.

      - Otherwise, the gateway should use its normal routing procedure
        to choose a subsequent gateway, and send the datagram along to
        it.

7. Broadcast IP Addressing - Proposed Standards

   If different IP implementations are to be compatible, there must be a
   distinguished number to denote "all hosts".

   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.


Mogul                                                           [Page 5]
^L


RFC 919                                                     October 1984
Broadcasting Internet Datagrams


   The address 255.255.255.255 denotes a broadcast on a local hardware
   network, which 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.

   Thus, a host on net 36, for example, may:

      - broadcast to all of its immediate neighbors by using
        255.255.255.255

      - broadcast to all of net 36 by using 36.255.255.255

   (Note that unless the network has been broken up into subnets, these
   two methods have identical effects.)

   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".

   7.1. ARP Servers and Broadcasts

      The Address Resolution Protocol (ARP) described in [12] 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.

      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.








Mogul                                                           [Page 6]
^L


RFC 919                                                     October 1984
Broadcasting Internet Datagrams


8. References

   1.   David Reeves Boggs.  Internet Broadcasting.  Ph.D. Th., Stanford
        University, January 1982.

   2.   D.D. Clark, K.T. Pogran, and D.P. Reed.  "An Introduction to
        Local Area Networks".  Proc. IEEE 66, 11, pp1497-1516, 1978.

   3.   Yogan Kantilal Dalal.  Broadcast Protocols in Packet Switched
        Computer Networks.  Ph.D. Th., Stanford University, April 1977.

   4.   Yogan K. Dalal and Robert M. Metcalfe.  "Reverse Path Forwarding
        of Broadcast Packets".  Comm. ACM 21, 12, pp1040-1048, December
        1978.

   5.   The Ethernet, A Local Area Network: Data Link Layer and Physical
        Layer Specifications.  Version 1.0, Digital Equipment
        Corporation, Intel, Xerox, September 1980.

   6.   Robert Gurwitz and Robert Hinden.  IP - Local Area Network
        Addressing Issues.  IEN-212, Bolt Beranek and Newman, September
        1982.

   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.

   8.   Jeffrey Mogul.  Internet Subnets.  RFC-917, Stanford University,
        October 1984.

   9.   Jeffrey Mogul.  Broadcasting Internet Packets in the Presence of
        Subnets.  RFC-922, Stanford University, October 1984.

   10.  David A. Moon.  Chaosnet.  A.I. Memo 628, Massachusetts
        Institute of Technology Artificial Intelligence Laboratory, June
        1981.

   11.  William W. Plummer.  Internet Broadcast Protocols.  IEN-10, Bolt
        Beranek and Newman, March 1977.

   12.  David Plummer.  An Ethernet Address Resolution Protocol.
        RFC-826, Symbolics, September 1982.

   13.  Jon Postel.  Internet Protocol.  RFC 791, ISI, September 1981.




Mogul                                                           [Page 7]
^L


RFC 919                                                     October 1984
Broadcasting Internet Datagrams


   14.  David W. Wall.  Mechanisms for Broadcast and Selective
        Broadcast.  Ph.D. Th., Stanford University, June 1980.

   15.  David W. Wall and Susan S. Owicki.  Center-based Broadcasting.
        Computer Systems Lab Technical Report TR189, Stanford
        University, June 1980.











































Mogul                                                           [Page 8]
^L