Re: IM2000 RNASP -- identifying message stores to recipients

James Craig Burley <[email protected]> 12 Mar 2004 14:12:22 -0000
Newsgroups gmane.mail.im2000
Message-ID <[email protected]>
>JCB> OTOH, SMTP can more easily tie up offending site resources by
>JCB> tarpitting incoming SMTP connections, at the SMTP protocol 
>JCB> level as well as at the TCP level for each such connection.  
>
>On the gripping hand, the reason for this sort of Judo is that with SMTP-based
>Internet mail the malicious sender's end is the client and the protocol is
>client-driven.  With, say, MSRAP in IM2000, the protocol is similarly
>client-driven but the malicious sender's end is instead the server.  So the
>idea simply doesn't apply.

Exactly.  The IM2000 parallel to SMTP using spare resources to tarpit
clients is to make gratuitous requests for message contents from known
sources of spam and vermin, and tarpit the resulting packets (again,
using spare resources).  It's different in that it's more of a thrust
at an opponent's "store" than with SMTP, but it'd have a similar
overall effect, that of actively punishing purveyors of spam and
vermin, in ways that impinge on their ability to serve up their
malware to entities that aren't yet aware that such punishment is
warranted.

>JCB> It seems superfluous to demand that an outgoing message store
>JCB> also have a domain name, which would imply that every "pull"
>JCB> operation require a DNS lookup even when it isn't actually
>JCB> needed.
>
>Solutions to this have already been invented.  Every web page fetch (with a
>domain name in the URL) over HTTP 1.0 in theory requires a DNS lookup.  This
>is ameliorated both by local caching proxy DNS servers that cache the DNS data
>and by the ability of the web browser to employ HTTP 1.1 persistent
>connections.

Um, no, neither case is a "solution", merely an optimization with
limited benefit, *especially* in cases like this.

Caches work only in situations involving sufficient locality of
reference.  So they work for WWW (A records) and outgoing email (MX
records) only to the extent that the "working set" of domain names is
relatively small over time -- which is the usual case for such
references, since they're largely user-driven.

When locality of reference goes out the window, caches become little
more than mechanisms by which latencies are increased.  (As I "proved"
to a certain well-known workstation vendor, who thought the reason a
3rd-party digital-logic-simulation compiler's code didn't speed up as
much as expected on its new workstations was because the code
generator didn't utilize prefetching and related technologies.  Turns
out simulating digital logic often has poor locality of reference;
it's ultimately driven by test vectors, which are inherently hard to
predict.  When I added prefetching to the compiler and tried it out on
some code they believed would "obviously" benefit, it yielded little
more than a 2% improvement.  So the problem with the new workstations
certainly wasn't CPU and bus speed, which was great, or even cache
size, which was reasonable; it was memory latencies.  Seymour Cray,
RIP.  ;-)

For example, I think using SPF to determine whether arbitrary incoming
email might be forged runs afoul of this problem.  Even DomainKeys
poses some risks here, if every incoming email that does *not* use it
results in a DNS lookup to determine if the (claimed) originating
domain says it *always* uses it.  Paul Graham's (sp?) "Filters That
Fight Back" proposal had similar problems: doing HTTP lookups on
"http://..." URLs in incoming emails, even if just to soak up
bandwidth on spammer sites, would pollute the local DNS cache with all
sorts of stuff unrelated to what local users really wanted to work on
-- that, and, ultimately it just recursed on the whitelisting problem
for web pages.

Poor locality of reference in DNS lookups is therefore much more
likely with IM2000 than with SMTP (as message-delivery models),
because it's not the *local* user base that is determining the set of
domain names to look up, it's the rest of the world that is
essentially submitting arbitrary domain names for *your* system to
look up via *its* DNS cache.

Having a limited-size local cache for such lookups would be okay as
long as a) it doesn't impinge on the DNS cache used for more
locally-directed lookups and b) for cache misses, it doesn't inquire
of an upstream cache, rather it goes directly to the authoritative
sources for information, so *upstream* caches aren't burdened with
arbitrary lookups likely to have poor locality of reference, again,
leaving them free to serve local users with their more-directed
searches for information.

Of course, this would tend to make such lookups take longer.  At some
point, we're back to the fundamental objection to the IM2000 model:
people won't like the delays they often experience when they go to
read the contents of a message whose summary information their MUA has
already displayed for them, and such delays might be substantially due
to slow DNS lookups.


As to persistent connections:

>Indeed, MSRAP was designed with the capability for multiple transactions per
>session right from the start.

Certainly, IM2000 could use persistent connections to implement
parallel (unrelated) same-type transactions in a single connection, so
a bunch of notifications could be grouped together, as well as a bunch
of message fetches (in a different connection), as well as a bunch of
unpinning requests (in yet a different connection).

But if you're claiming that IM2000 is going to avoid the problem I see
with each "pull" operation -- triggered at an arbitrary time by any
real-live human reading an email, and directed at a message store with
an arbitrary domain name -- by utilizing persistent connections, well,
I fail to see how that's going to work in practice, sufficiently to
avoid the DNS-lookup-delay problems.

So I wonder how you can be so sure it'll avoid the problem of poor
locality of reference without ginning up some experiments and
measuring the results (e.g. use tiny caches in DNS simulations to go
along with presumably-tiny samples sizes in your message-exchange
simulations).

And if persistent connections will help IM2000, then the fact that
SMTP almost always involves (or should involve) a persistent
connection to implement most or all of the notification, content
transmission, and status report (at least as far as "unpinning" the
message) activities for any *single* message, avoiding any return DNS
lookup to transmit the content, suggests that SMTP already has the
upper hand in this regard, without the need for new caching-proxy
technology.

(Of course, SMTP already has the concept of multiple message exchange
within a connection, in that a single connection can be used to
transmit several unrelated messages.  Just because qmail doesn't use
it when sending messages doesn't mean it isn't useful, since,
presumably, other popular MTAs do make use of it; which makes me even
more curious as to how IM2000 is going to manage to use a single
connection, or even a single DNS lookup, to group together multiple
unrelated MSRAP transactions?)

One thing I'm fairly sure of: to the extent IM2000 *does* fulfill the
promise of making UBM a thing of the past, this will be *less* of a
problem, because UBM is a substantial source of message content coming
from arbitrary hosts.  So some of the poor locality of reference for
incoming SMTP messages is due to UBM.  (The pertinent questions being,
about how much is due to UBM, and, will IM2000 really knock this down
*enough* to remain usable as it hits sufficiently widespread
deployment?)

>A more compelling argument for preserving the ability to include raw IP
>addresses and port numbers in notifications is the "I've got a small
>organisation and I don't want to be bothered with DNS service when the machine
>on my network running my own private message store has a well known fixed IP
>address that I could just plug in directly and use." argument.  Of course, in
>such a situation one probably deals with private DNS service for other reasons
>(such as for a Microsoft Windows NT 2003 network) already anyway.  So the
>argument can often be a weak one.

Not weak enough, IMO, to rule out a reasonable use for it.  But that's
pretty much orthagonal to the performance issue, to the extent people
(especially spammers) will publish domain names anyway.

What publishing IP addresses allows is for sites with well-known,
mother-approved outgoing message stores to help reduce the load on
everyone else's DNS by forgoing its use to look up its messages.
Kinda like giving out your phone number instead of just your name and
address (which requires at least one phone-book lookup), it might be a
nice thing to do.

But I don't think a decision one way or the other will be what enables
or destroys the ability for IM2000 to succeed in the long run.

-- 
James Craig Burley
Software Craftsperson
<http://www.jcb-sc.com>