RFC 947 UNKNOWN CORE · NETWORKING · ARCHITECTURE

Multi-network broadcasting within the Internet

A broadcast repeater mechanism that extends broadcast messages across multiple physical networks.

On rfc-editor.org ↗
PUBLISHED
June 1985
AUTHORS
K. Lebowitz, D. Mankins
STREAM
Legacy
REPEATER PROCESSES
2 (forwarder and repeater)
PROTOCOL FOR FORWARDING
TCP
TEST PLATFORM
VAX, 4.2 BSD Unix
REPEATER ROLE
Selective broadcast relay
DOI
10.17487/RFC0947

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                       Ken Lebowitz
Request for Comments: 947                                  David Mankins
                                                        BBN Laboratories
                                                               June 1985

             Multi-network Broadcasting within the Internet


1. Status of this Memo

   This RFC describes the extension of a network's broadcast domain to
   include more than one physical network through the use of a broadcast
   packet repeater.

   The following paper will present the problem of multi-network
   broadcasting and our motivation for solving this problem which is in
   the context of developing a distributed operating system.  We discuss
   different solutions to extending a broadcast domain and why we chose
   the one that has been implemented.  In addition, there is information
   on the implementation itself and some notes on its performance.

   It is hoped that the ideas presented here will help people in the
   Internet who have applications which make use of broadcasting and
   have come up against the limitation of only being able to broadcast
   within a single network.

   The information presented here is accurate as of the date of
   publication but specific details, particularly those regarding our
   implementation, may change in the future.  Distribution of this memo
   is unlimited.

2. The Problem

   Communication between hosts on separate networks has been addressed
   largely through the use of Internet protocols and gateways. One
   aspect of internetwork communication that hasn't been solved in the
   Internet is extending broadcasting to encompass two or more networks.
   Broadcasting is an efficient way to send information to many hosts
   while only having to transmit a single packet.  Many of the current
   local area network (LAN) architectures directly support a broadcast
   mechanism.  Unfortunately, this broadcast mechanism has a shortcoming
   when it is used in networking environments which include multiple
   LANs connected by gateways such as in the DARPA Internet.  This
   shortcoming is that broadcasted packets are only received by hosts on
   the physical network on which the packet was broadcast.  As a result,
   any application which takes advantage of LAN broadcasting can only
   broadcast to those hosts on its physical network.

   We took advantage of broadcasting in developing the Cronus
   Distributed Operating System [1].  Cronus provides services and
   communication to processes distributed among a variety of different

Multi-network Broadcasting within the Internet


   types of computer systems.  Cronus is built around logical clusters
   of hosts connected to one or more high-speed LANs.  Communication in
   Cronus is built upon the TCP and UDP protocols.  Cronus makes use of
   broadcasting for dynamically locating resources on other hosts and
   collecting status information from a collection of servers.  Since
   Cronus's broadcast capabilities are not intended to be limited to the
   boundaries of a single LAN, we needed to find some way to extend our
   broadcasting domain to include hosts on distant LANs in order to
   experiment with clusters that span several physical networks.  Cronus
   predominantly uses broadcasting to communicate with a subset of the
   hosts that actually receive the broadcasted message.  A multicast
   mechanism would be more appropriate, but was unavailable in some of
   our network implementations, so we chose broadcast for the initial
   implementation of Cronus utilities.

3. Our Solution

   The technique we chose to experiment with the multi-network
   broadcasting problem can be described as a "broadcast repeater".  A
   broadcast repeater is a mechanism which transparently relays
   broadcast packets from one LAN to another, and may also forward
   broadcast packets to hosts on a network which doesn't support
   broadcasting at the link-level.  This mechanism provides flexibility
   while still taking advantage of the convenience of LAN broadcasts.

   Our broadcast repeater is a process on a network host which listens
   for broadcast packets.  These packets are picked up and
   retransmitted, using a simple repeater-to-repeater protocol, to one
   or more repeaters that are connected to distant LANs.  The repeater
   on the receiving end will rebroadcast the packet on its LAN,
   retaining the original packet's source address.  The broadcast
   repeater can be made very intelligent in its selection of messages to
   be forwarded.  We currently have the repeater forward only broadcast
   messages sent using the UDP ports used by Cronus, but messages may be
   selected using any field in the UDP or IP headers, or all IP-level
   broadcast messages may be forwarded.

4. Alternatives to the Broadcast Repeater

   We explored a few alternatives before deciding on our technique to
   forward broadcast messages.  One of these methods was to put
   additional functions into the Internet gateways.  Gateways could
   listen at the link-level for broadcast packets and relay the packets
   to one or more gateways on distant LANs.  These gateways could then
   transmit the same packet onto their networks using the local
   network's link-level broadcast capability, if one is available.  All
   gateways participating in this scheme would have to maintain tables

Multi-network Broadcasting within the Internet


   of all other gateways which are to receive broadcasts.  If the
   recipient gateway was serving a network without a capacity to
   broadcast it could forward the messages directly to one or more
   designated hosts on its network but, again, it would require that
   tables be kept in the gateway.  Putting this sort of function into
   gateways was rejected for a number of reasons: (a) it would require
   extensions to the gateway control protocol to allow updating the
   lists gateways would have to maintain, (b) since not all messages
   (e.g., LAN address- resolution messages) need be forwarded, the need
   to control forwarding should be under the control of higher levels of
   the protocol than may be available to the gateways, (c) Cronus could
   be put into environments where the gateways may be provided by
   alternative vendors who may not implement broadcast propagation, (d)
   as a part of the underlying network, gateways are likely to be
   controlled by a different agency from that controlling the
   configuration of a Cronus system, adding bureaucratic complexity to
   reconfiguration.

   Another idea which was rejected was to put broadcast functionality
   into the Cronus kernel.  The Cronus kernel is a process which runs on
   each host participating in Cronus, and has the task of routing all
   messages passed between Cronus processes.  The Cronus kernel is the
   only program in the Cronus system which directly uses broadcast
   capability (other parts of Cronus communicate using mechanisms
   provided by the kernel).  We could either entirely remove the Cronus
   kernel's dependence on broadcast, or add a mechanism for emulating
   broadcast using serially-transmitted messages when the underlying
   network does not provide a broadcast facility itself.  Either
   solution requires all Cronus kernel processes to know the addresses
   of all other participants in a Cronus system, which we view as an
   undesirable limit on configuration flexibility.  Also, this solution
   would be Cronus-specific, while the broadcast-repeater solution is
   applicable to other broadcast-based protocols.

5. Implementation

   The broadcast repeater is implemented as two separate processes - the
   forwarder and the repeater.  The forwarder process waits for
   broadcast UDP packets to come across its local network which match
   one or more specific port numbers (or destination addresses).  When
   such a packet is found, it is encapsulated in a forwarder-repeater
   message sent to a repeater process on a foreign network.  The
   repeater then relays the forwarded packet onto its LAN using that
   network's link-level broadcast address in the packet's destination
   field, but preserving the source address from the original packet.

   When the forwarder process starts for the first time it reads a

Multi-network Broadcasting within the Internet


   configuration file.  This file specifies the addresses of repeater
   processes, and selects which packets should be forwarded to each
   repeater process (different repeaters may select different sets of
   UDP packets).  The forwarder attempts to establish a TCP connection
   to each repeater listed in the configuration file.  If a TCP link to
   a repeater fails, the forwarder will periodically retry connecting to
   it.  Non-repeater hosts may also be listed in the configuration file.
   For these hosts the forwarder will simply replace the destination
   broadcast address in the UDP packet with the host's address and send
   this new datagram directly to the non-repeater host.

   If a repeater and a forwarder co-exist on the same LAN a problem may
   arise if the forwarder picks up packets which have been rebroadcast
   by the repeater.  As a precaution against rebroadcast of forwarded
   packets ("feedback" or "ringing"), the forwarder does not connect to
   any repeaters listed in its configuration file which are on the same
   network as the forwarder itself.  Also, to avoid a broadcast loop
   involving two LANs, each with a forwarder talking to a repeater on
   the other LAN, forwarders do not forward packets whose source address
   is not on the forwarder's LAN.

6. Experience

   To date, the broadcast repeater has been implemented on the VAX
   running 4.2 BSD UNIX operating system with BBN's networking software
   and has proven to work quite well for our purposes.  Our current
   configuration includes two Ethernets which are physically separated
   by two other LANs.  For the past few months the broadcast repeater
   has successfully extended our broadcast domain to include both
   Ethernets even though messages between the two networks must pass
   through at least two gateways.  We were forced to add a special
   capability to the BBN TCP/IP implementation which allows privileged
   processes to send out IP packets with another host's source address.

   The repeater imposes a fair amount of overhead on the shared hosts
   that currently support it due to the necessity of waking the
   forwarder process on all UDP packets which arrive at the host, since
   the decision to reject a packet is made by user-level software,
   rather than in the network protocol drivers.  One solution to this
   problem would be to implement the packet filtering in the system
   kernel (leaving the configuration management and rebroadcast
   mechanism in user code) as has been done by Stanford/CMU in a UNIX
   packet filter they have developed.  As an alternative we are planning
   to rehost the implementation of the repeater function as a
   specialized network service provided by a microcomputer based

Multi-network Broadcasting within the Internet


   real-time system which is already part of our Cronus configuration.
   Such a machine is better suited to the task since scheduling overhead
   is much less for them than it is on a multi-user timesharing system.

7. Reference

   [1]  "Cronus, A Distributed Operating System: Phase 1 Final Report",
        R. Schantz, R. Thomas, R. Gurwitz, G. Bono, M. Dean,
        K. Lebowitz, K.  Schroder, M. Barrow and R. Sands, Technical
        Report No. 5885, Bolt Beranek and Newman, Inc., January 1985.
        The Cronus project is supported by the Rome Air Development
        Center.

8. Editors Note

   Also see RFCs 919 and 940 on this topic.

AI ELI5

On this page
PROBLEMLocal area network broadcasts only reach hosts on the same physical network. Applications like the Cronus distributed operating system need to broadcast across multiple LANs connected by gateways, but broadcast packets do not cross gateway boundaries.
MECHANISMA broadcast repeater is a user-level process on a network host that listens for broadcast packets, selectively forwards them over a TCP connection to repeaters on distant LANs, and rebroadcasts them locally while preserving the original source address. The repeater can filter packets by port number or other header fields.
WORKING IMPLEMENTATIONThe authors implemented and tested the broadcast repeater on VAX running 4.2 BSD Unix, extending the broadcast domain across two Ethernets separated by two other LANs. The mechanism proved useful but imposes overhead on the host running it.

§1The Broadcast Problem Across Networks

When multiple LANs are connected by Internet gateways, broadcast packets sent on one LAN do not reach hosts on the other LANs. This is by design: gateways forward individual unicast packets addressed to specific hosts but do not forward broadcast packets, which are addressed to everyone on a single physical network.

For the Cronus distributed operating system, this was a limitation. Cronus uses broadcasting to dynamically locate resources and collect status information from servers. The designers needed to extend broadcasting across multiple LANs without modifying gateways or the Cronus kernel itself. A multicast mechanism would have been more appropriate, but it was unavailable on some of their network implementations.

A message shouted on one network does not reach another network, even if a gateway connects them. Cronus needs shouts to reach everywhere, so the team invented a relay.

§2The Broadcast Repeater Solution

A broadcast repeater is a process on a network host that listens for broadcast packets matching certain criteria—for example, UDP packets destined to specific ports used by Cronus. When such a packet arrives, the forwarder process encapsulates it and sends it via TCP to repeater processes on foreign networks. Each remote repeater rebroadcasts the packet on its local LAN using that LAN's link-level broadcast address, preserving the original packet's source address.

The repeater reads a configuration file on startup specifying which repeater processes to contact and which packets to forward to each one. The forwarder also handles feedback prevention: it does not connect to repeaters on the same LAN, and it does not forward packets whose source is not on its own LAN. This prevents broadcast loops.

The repeater listens to broadcasts, picks the ones it should forward (like Cronus messages), wraps them up, sends them over TCP to another repeater far away, and that repeater unwraps and reshouts them locally.

§3Implementation and Performance

The broadcast repeater was implemented as two separate processes: a forwarder that listens for and captures packets, and a repeater that receives and rebroadcasts them. The implementation required a special capability in the BBN TCP/IP stack to send IP packets with another host's source address.

Testing on VAX running 4.2 BSD Unix proved successful: the repeater extended the broadcast domain to include two Ethernets physically separated by two other LANs. However, the repeater imposes significant overhead on the host running it because the forwarder is woken for every UDP packet arriving at the host, with filtering decisions made in user-level software. The authors suggest moving the implementation to a dedicated microcomputer as a better-suited platform.

It worked! Two separate computer groups could shout to each other across four networks. But waking up for every message was tiring for the computer, so moving it to a special box would be better.

§4References