rfc1036 December 1987

[< Prev] [TOC]
5.  The News Propagation Algorithm

    This section describes the overall scheme of USENET and the
    algorithm followed by hosts in propagating news to the entire
    logical network.  Since all hosts are affected by incorrectly
    formatted messages and by propagation errors, it is important
    for the method to be standardized.

    USENET is a directed graph.  Each node in the graph is a host
    computer, and each arc in the graph is a transmission path from
    one host to another host.  Each arc is labeled with a newsgroup
    pattern, specifying which newsgroup classes are forwarded along
    that link.  Most arcs are bidirectional, that is, if host A
    sends a class of newsgroups to host B, then host B usually sends
    the same class of newsgroups to host A.  This bidirectionality
    is not, however, required.

    USENET is made up of many subnetworks.  Each subnet has a name, such
    as comp or btl.  Each subnet is a connected graph, that is, a path
    exists from every node to every other node in the subnet.  In
    addition, the entire graph is (theoretically) connected.  (In
    practice, some political considerations have caused some hosts to be
    unable to post messages reaching the rest of the network.)

    A message is posted on one machine to a list of newsgroups. That
    machine accepts it locally, then forwards it to all its neighbors
    that are interested in at least one of the newsgroups of the
    message.  (Site A deems host B to be "interested" in a newsgroup if
    the newsgroup matches the pattern on the arc from A to B.  This
    pattern is stored in a file on the A machine.)  The hosts receiving
    the incoming message examine it to make sure they really want the
    message, accept it locally, and then in turn forward the message to
    all their interested neighbors.  This process continues until the
    entire network has seen the message.

    An important part of the algorithm is the prevention of loops.  The
    above process would cause a message to loop along a cycle forever.
    In particular, when host A sends a message to host B, host B will
    send it back to host A, which will send it to host B, and so on.
    One solution to this is the history mechanism.  Each host keeps
    track of all messages it has seen (by their Message-ID) and
    whenever a message comes in that it has already seen, the incoming
    message is discarded immediately.  This solution is sufficient to
    prevent loops, but additional optimizations can be made to avoid
    sending messages to hosts that will simply throw them away.

    One optimization is that a message should never be sent to a machine
    listed in the "Path" line of the header.  When a machine name is
    in the "Path" line, the message is known to have passed through the
    machine.  Another optimization is that, if the message originated
    on host A, then host A has already seen the message.  Thus, if a
    message is posted to newsgroup misc.misc, it will match the pattern
    misc.all (where all is a metasymbol that matches any string), and
    will be forwarded to all hosts that subscribe to misc.all (as
    determined by what their neighbors send them).  These hosts make up
    the misc subnetwork.  A message posted to btl.general will reach all
    hosts receiving btl.all, but will not reach hosts that do not get
    btl.all.  In effect, the messages reaches the btl subnetwork.  A
    messages posted to newsgroups misc.misc,btl.general will reach all
    hosts subscribing to either of the two classes.

Notes

    <1>  UNIX is a registered trademark of AT&T.
[< Prev] [TOC]
#Diff to first older
NewerOlder



Documents were processed to this format by Forrest J. Cavalier III