InterNetNews... Salz
recent articles in memory has its appeal. Adding
outgoing transfer to innd would take a moderate
effort.

Conclusions and Comparisons

The InterNetNews architecture works. Profiling
a production installation for 24 hours showed that
open (2) accounted for 10% of the run time. Since
the server only does one open (2) per article, it is not
clear if any other performance tuning is needed.
The profiling overhead accounted for 5% of the run-
time.

Several optimizations are available because
there is only one process, and because it is always
running. For example, avoiding duplicates is an
integral part of the server. If a second site offers an
article while a first site is sending it, the NNTP code
will put the channel to ``sleep'' for a short while
before replying to the second offer. This is usually
enough time to have the first site finish sending the
article, reducing the number of duplicates from hun-
dreds to nearly none, with no external programs.

Since the server is always running, the system
has a much smoother performance curve. As a
result, it ``feels'' much faster to users.

Another unexpected benefit is that articles are
accepted or rejected synchronously. A user can post
an article, and by the time their posting agent has
returned, it has been written to the spool directory
and queued for remote transfer. If there is a prob-
lem such as having an illegal newsgroup specified,
the user founds out immediately.

The design of the server seems to be very
good, split into abstractions that are very indepen-
dant. For example, sites have no knowledge of
incomming NNTP connections. Using callbacks lets
each portion of the server safely do I/O without wor-
rying that it might affect other parts. Much of the
Usenet processing becomes trivial when serialized,
such as access to the history file.

The design has also led to a fairly small pro-
gram: it is under 13,000 lines, and about 20% of
them are comments. This compares favorable to the
7,400 lines in the equivalent C News program and
the 7,600 lines in the NNTP reference implementa-
tion.

Availability

The INN package is freely redistributable , and
is available for anonymous FTP from ftp.uu.net as
~ftp/news/inn.tar.Z. It is discussed in the Usenet
newsgroups news.software.nntp and news.software.b.

References

[Adams87] Rick Adams, Mark Horton, Standard for
Interchange of USENET Messages , Request For
Comments 1036, Marina del Rey, CA: Infor-
mation Sciences Institute, 1987.
[Adams92] Rick Adams, Total traffic through uunet
for the last 2 weeks , Usenet message
<1992Apr8.193050.8963@uunet.uu.net> in
news.lists , April, 1992.

[Collyer87] Geoff Collyer and Henry Spencer, News
Need not be Slow , Usenix Winter Conference, 1987.

[Crocker82] David H. Crocker, Standard for the For-
mat of ARPA Internet Text Messages , Request
For Comments 822, Marina del Rey, CA:
Information Sciences Institute, 1982.

[Kantor86] Brian Kantor, Phil Lapsley, Network
News Transfer Protocol: A Proposed Standard
for the Stream -Based Transmission of News ,
Request for Comments 977, Marina del Rey,
CA: Information Sciences Institute, 1986.

[Postel82] Jonathan B. Postel, Simple Mail Transfer
Protocol , Request For Comments 821, Marina
del Rey, CA: Information Sciences Institute,
1982.

[Reid91] Brian Reid, Usenet Readership Summary
Report for May 91 , Usenet message
<1991Jun2.141124.12753@pa.dec.com> in
news.lists , June, 1991.

[Torek91] Chris Torek, Hash function for text in C,
Usenet message <27038@mimsy.umd.edu> in
comp.lang.c , October, 1990.

Author Information

Rich Salz is a Senior Software Engineer at the
Open Software Foundation, where is a member of
the DCE group. His current areas of concentration
are RPC and the distributed time service. He joined
OSF after working at BBN for nearly five years,
working on the Cronus Distributed Programming
Environment. Rich attended MIT. He can be
reached via U.S. Mail at Open Software Foundation;
11 Cambridge Center; Cambridge, MA 02142.
Reach him electronically at rsalz@osf.org.
Summer '92 USENIX -- June 8 -June 12, 1992 -- San Antonio, TX