INN feed autonegotation
Kristian Köhntopp
kris at koehntopp.de
Tue Sep 13 13:49:08 UTC 2005
I am running a INN server on a typical dedicated server. The
machine (Celeron 2400 with 512 MB RAM and 6.5 GB cycbuff
storage) has a traffic limit of 300 GB/month (120 KB/sec), which
is plenty if you do not carry binaries, and at the moment I have
50+ news peers. The machine is usually in the <200 of the top
1000.
Cycbuffs are great if you want to run a maintenance free news
server - the system is essentially self-servicing and does not
need the constant care and feeding that I was used to when I
last played around with USENET news, which was about 10 years
ago.
Maintaining and debugging 50+ peers is work, though, and I
beliebe a great bit of this need not be there.
For example, I have a incoming.conf, where I can specify
acceptance patterns for all feeds, groups of feeds or individual
feeds, as well as the number of connections and similar stuff.
The peer connecting me has matching parameters, a newsfeeds
entry, a max-connection setting, an article size limit and the
like.
Unfortunately, these parameters often do not actually match. For
the last two weeks, I have been burning 250+ KB/sec, with peak
rates of 1250 KB/sec and more, because some of my feeds did not
honor my article size limits, and the NNTP protocol provides
insufficient feedback to the upstream. Also, I have dropped the
it.* and it-alt.* hierarchies, because I do not read Italian and
these hierarchies are much traffic. I have plenty of feeds still
feeding me it.* and it-alt.*, because there is no in-band way to
notify them of the change.
Gup is not a solution to this problem, because it is an
out-of-band solution and an optional install. Many of my peers
do not run Gup, and for those that do, I have to manage
passwords, send mail, and manually reintegrate the results.
I propose a better, in-band solution and want to hear what you
think about this. That solution is a NNTP extension, perhaps as
an extended answer to "MODE STREAM" or as a separate command
such as "FEEDPARMS" or "FEEDPARMS pattern|max-connections|
article-size".
Upon receiving that command, the downstream server deliers a set
of feed configuration parameters to the upstream server. The
upstream server intersects that parameter set with its local
configuration and generates an effective configuration from
this. Thus, a downstream server can maintain and control what it
is being fed simply by changing its local incoming.conf and
reloading the configuration. Parameters negotiated are:
- the pattern of newsgroups that is being accepted at downstream
("pattern")
- the maxmimum number of connections ("max-connections")
- the maximum article size (to be introduced parameter
"articles-size" in incoming.conf).
The upstream server receives this parameters and creates an
effective configuration by intersecting (minimizing) these
parameters with its local configuration. That is:
- effective feed pattern is the intersection of what is
configured in newsfeeds and what the downstream announced it
accepts.
- effective max-connections is the minimum of what is configured
in innfeed.conf and what the downstream announced it accepts.
- effective article-size limit is the minimum of what is
configured in newsfeeds and what the downstream announced it
accepts.
Security implications of this are nil, because the exchange is
done inband within a connection that both parties already agreed
to trust, and because the negotation is intersecting/minimizing
parameters.
What do you think of this idea? Is this useful? Can it be
implemented?
Kristian
More information about the inn-workers
mailing list