Professional Documents
Culture Documents
Acknowledgement
1. Introduction
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.
Mogul [Page 1]
RFC 922 October 1984
Broadcasting Internet Datagrams in the Presence of Subnets
2. Terminology
The terms we will use in referring to physical networks are, from the
point of view of the host sending or forwarding a broadcast:
Internet
IP Network
Subnet
Mogul [Page 2]
RFC 922 October 1984
Broadcasting Internet Datagrams in the Presence of Subnets
3. Why Broadcast?
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.
Mogul [Page 3]
RFC 922 October 1984
Broadcasting Internet Datagrams in the Presence of Subnets
4. Broadcast Classes
Mogul [Page 4]
RFC 922 October 1984
Broadcasting Internet Datagrams in the Presence of Subnets
5. Broadcast Methods
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.
Mogul [Page 5]
RFC 922 October 1984
Broadcasting Internet Datagrams in the Presence of Subnets
Mogul [Page 6]
RFC 922 October 1984
Broadcasting Internet Datagrams in the Presence of Subnets
RouteLink(host)
RouteHost(host)
ResolveAddress(host)
IncomingLink
OutgoingLinkSet
OutgoingHardwareHost
Mogul [Page 7]
RFC 922 October 1984
Broadcasting Internet Datagrams in the Presence of Subnets
Destination.host
Destination.subnet
Destination.ipnet
Mogul [Page 8]
RFC 922 October 1984
Broadcasting Internet Datagrams in the Presence of Subnets
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
Mogul [Page 9]
RFC 922 October 1984
Broadcasting Internet Datagrams in the Presence of Subnets
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.
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.
8. References
5. The Ethernet, A Local Area Network: Data Link Layer and Physical
Layer Specifications. Version 1.0, Digital Equipment
Corporation, Intel, Xerox, September 1980.