[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

#1416 Reinjection - an attempted summary, and a suggested resolution




So far, my buffer shows:

42 postings on the "#1416" thread, Jan 19 to Feb 7, including Charles' initial issue mail
Active participants:
- Charles Lindsey
- Russ Allbery
- Forrest J. Cavalier
- Frank Ellermann
- Harald Tveit Alvestrand
- Richard Clayton

Relevant technical information from the thread:

- Injecting a message (with an unique Message-ID:) several times into a single Usenet network is supported, and it's important that it remains supported ("multipoint injection"). - Current USENET servers (when acting as relaying agents) check Date: for staleness (rejecting articles that have a Date: that is so old that their history files won't cover the message-ID). - Injection of articles into USENET where the client posting agent sends to someone acting as an injecting agent, and the article then ending up with someone acting as a posting agent towards another injecting agent ("reinjection from an isolated network"), is quite common. - No technical means exists today for verifyng whether a network is truly isolated.
- No existing mail-to-news gateways modify Date:

There was some report of an experiment on propagation with different Date: headers, but I've not been able to find that in my archive. Bad choice of keywords to search for, I assume.

Suggested hacks include:
- Changing Date: at injection to be within a short distance from the current time - Allowing posting agent to set Injection-Date:, to ensure it's consistent between injected copies
- Drop Injection-Date: from the spec

I've probably dropped some important pieces of information, but I've seen the above.

--------------------------------------------------------------------------------------------------------------------------
PROPOSED RESOLUTION:

This is very much on the "Keep It Simple" approach to protocol design.

- Date: identifies the date of composition. Don't change it, ever.
- Injection-Date: identifies the date of injection, by the last agent that identifies itself as an injecting agent. Proto-articles don't have it. Relaying and serving agents never, ever change it. - "Reinjection" doesn't exist. There is only multipoint injection. The means by which a proto-article (including message-ID, but NOT including Injection-Date:) gets from wherever it started out to the posting agent is not defined by the protocol; if the protocol happens to be NNTP, that's not an issue for this specification. (we can add warnings...) - When doing multipoint injection, Message-ID: MUST be consistent in all copies. Date: SHOULD be consistent, if it's not, Bad Things Can Happen.

On the stale article problem:

- We state that existing implementations use Date: to check for staleness, and that will cause discarding of articles that are too old. Period, end of story, accepted. - We recommend (require?) that injecting agents refuse posting of "too old" articles by Date: - the exact acceptable Date: range should be a local decision. - We recommend that the staleness check use Injection-Date: if present, otherwise Date: - We state that if stale article rejection is an issue for people, they should:
 - Ensure that their injecting agent adds Injection-Date:
 - Put pressure on the discarding agent to check Injection-Date: if present

Case analysis:
If a message has Date: on day 0, and is injected on day 7, into a network where anything older than 3 days is considered stale, but the injecting agents accept 14-day-old proto-articles, this will happen:

- Servers that check Injection-Date: will relay the message. More propagation than today.
- Servers that check Date: will reject the message. Unchanged from today.
- Servers that feed from a server that checks Date: will not get the message in the normal feed; they may get it offered from feeds that go via Injection-Date: checking servers.

If a message has Date: on day 0, gets injected on day 1 into the network, and gets injected again on day 7 into the same network, the following will happen:

- Servers that check Date: will see the first copy.
- Servers that check Injection-Date: will relay the message twice, possibly causing users to see it twice.

The last looks like a loop, but can be solved by sysadmins beating up on the injecting agent to enforce stricter policing of posting of old articles.
Is the latter a Big Deal?

                           Harald