[e2e] About the primitives and their value (was: What if there were no well known numbers?)
pekka.nikander at nomadiclab.com
Tue Aug 8 21:49:44 PDT 2006
> Receivers are inherently passive. To do otherwise makes them senders,
> subject to sender rules. To plug their inputs renders them deaf,
A communication network is as transparent as it is made to be. It is
not necessarily like "ether", open to anyone's noise. Agreed, the
original Internet used to be open for anyone to send anything to
anyone, and that had great _value_ for the community. However, that
is only _one_ example of network design.
If I take your "ether"-like fully transparent network, then I must
agree with you. In such a network a receiver is simply passive and
must receive whatever any sender sends to it.
However, put the first bridge or router there, and you have to make
the choice of making the box fully transparent or _not_. You can
make the box a "firewall", allowing the "receiver" instruct the box
of what information it wants to receive, by default, and what not.
Hence, once you give up your fully-open network abstraction, stating
that "receivers are inherently passive" becomes a mere tautology.
I have seen network designs where "to receive" is an active
primitive: the "senders" are "passively" offering data or services
in the network, and a "receiver" must actively ask for such a piece
of data or service in order to get it. The point is that the
"receiver" can only send the request to the "network", not to the
"sender". End-to-end data transfer will only take place if there is
both a willing sender and a willing receiver. That is, unless there
is already someone willing to provide the piece of data or service,
the request to receive will go nowhere. In other words, such a
network is _not_ designed to support the "send this datagram to this
recipient" primitive, but on two primitives like: "I am willing to
send/offer/distribute this <whatever>" and "I want to receive/get/
consume this <whatever>".
[You can argue that in the previous paragraph I've got the roles
wrong, that the data or service providers are "receivers" willing to
receive requests and the clients are "senders" sending the requests.
Sure, one can see the situation as such if one wills, but it doesn't
change the point: the requests are only delivered if there is
someone actively willing to act upon them.]
Sure, such a design would not be the Internet as we used to know it
nor as we know it today. So, the question goes to the relative
values. What is the relative value of network based on the "send
datagram to recipient" primitive vs. other types of networks, based
on other primitives. Since there _are_ active boxes in the network,
we do have the choice of selecting the primitives. We should not be
bound to the "receivers are inherently passive" thinking; while true
in an ether-like shared medium, such thinking is meaningless as soon
as you put an active box between the "sender" and the "receiver".
Hence, IMHO, what is needed is some kind of (micro)economic
understanding of the different systems. There will be at least three
different types of parties (senders, receivers, network elements),
with different interests and incentives. The communication
primitives, and the protocols implementing the primitives, will
regulate what kind of agreements the parties will be able to
negotiate and will affect the relative negotiating power of the
parties (cf. Lessig's "Code".) It would be great if we got the
"regulation-through-protocol-design" right enough.
The only thing that is somewhat clear to me at this time is that the
current primitive, "send this datagram to this recipient",
independent of the recipient's stated willingness or unwillingness of
receiving it, gets the incentives wrong, i.e., results in an
undesirable dynamic Nash equilibrium.
More information about the end2end-interest