[e2e] where end-to-end ends

Eric A. Hall ehall at ehsco.com
Wed May 23 14:57:39 PDT 2001

> If the fact that clients are "not exchange data directly" means that
> there is no end-to-end, then what is the definition of "exchanging
> data directly" and what feature of my example violates that definition?

To be more precise (which I should have been earlier), end-to-end exists
between the IMAP clients and the server, but it does not exist between the
two clients because the clients do not maintain any connectivity. It is
not possible for there to be an end if there is no middle. Conversely,
where there is a middle (the TCP session, as marked by the tuple) then
there are ends. In this case there are two end-to-end sessions.

You could (and it seems that you are) argue that the message data is the
process, and that the IMAP nodes are some sort of virtual end-points in
the process. I would argue in a friendly sort of way that this is not
precise thinking; the server can change the data, it can delete an
attachment, it can convert the data, or do any number of other things.
Once that occurred, the "middle" would have become an end, and it would
also become a beginning for the next hop.

> Some possibilities, all of which are true of this example:
> 1. the sender and reciever are not participating in the communication
> at the same time (asynchrony)

That's my main argument, coupled with (potential or real) changes to the
data by a middle entity.

> Data that passes over the Internet is never exchanged directly between
> sender and reciever, it always passes through intermediate nodes (at a
> minimum, routers).  The issue here is what sort of functions those
> intermediate nodes can have and the communication can still be
> considered end-to-end.

They don't become active ingredients of the application though. Contrast
that to a store-and-forward relay, which becomes an active agent.
Moreover, a mail server is the active termination point for what matters
to the Internet, which is the tuple.

> I would argue that mail delivery can be considered "maximally
> end-to-end" as long as it performs at intermediate nodes only the
> functions that cannot be correctly and efficiently performed at the
> end-nodes.  Thus, maximally end-to-end mail delivery would not
> include virus checking performed by an intermediate mail server if
> that can be done at an end-node.

Would it also not include writing headers in the mail? If it's mucking
with the data (or if it's expicitly given the opportunity) then my
argument is that it has become an active end-point for the process. The
data has been waylaid and is being molested by a designed-in end-point, so
in this case the server is absolutely the end of the link. The "virtual"
end-points have no choice in the matter (except by way of direct
delivery), and thus are not end-points where it matters.

> The question of what is necessary mail delivery functionality is a
> subjective one.  From this point of view the degree of functionality
> that can be performed at an intermediary while still being maximally
> end-to-end depends on the notion of "necessary functionality".

Many of the multi-hop application protocols explicitly design-in serial
end-to-end behavior. I put in-line caching, store-and-forward, active
proxies and others in this camp.

Is "maximally" the same as "most efficient"? Store-and-forward provides
its own efficiencies which are separate from timely delivery. DNS caching
provides its own efficiencies which are separate from data validity.

Eric A. Hall                                        http://www.ehsco.com/
Internet Core Protocols          http://www.oreilly.com/catalog/coreprot/

More information about the end2end-interest mailing list