pipe-net
Zenaan Harkness
zen at freedbms.net
Mon Oct 28 17:27:43 PDT 2019
> On Mon, Oct 28, 2019 at 05:19:08PM -0300, Punk - Stasi 2.0 wrote:
> > http://www.weidai.com/pipenet.txt
(I won't focus on errors in this paper, e.g.:
- the description of the return path packet encryption (dest to
origin) appears in error - but that's not interesting afaics.
- "Anonymity in this scheme is asymmetric - the caller is
anonymous, but not the receiver" seems an incorrect assertion,
since N0 is known to N1 at least, albeit N0's content may well
not be known to N1, and N0's destination point may not be known
to N1.
)
This design doc is most useful conceptually for pondering possible
elements of our network design, since it's an origin document,
usefully laying out some concepts at issue:
It introduces the onion concept (if not by name), where node N0
requests N1 to link to N2 on behalf of N0, and key establishment
between N0 and N2 is (presumably) hidden from N1:
"4. Establish a key (K2) with N2 through N1."
It introduces link negotiation:
"3. Request that N1 establish a link id (S2) with N2."
It also introduces the packet switching concept, where in at least
one version of such switching, N1 (or N2 etc) could randomize routing
on behalf of N0:
"The second node shuffles the packets it receives during a time
unit and forwards them in random order to others."
Exactly how this is achieved is not yet clear. Possibles:
A. N0 establishes with N1 (by usual request/ contract proto)
multiple links from N1 to nodes N2, N3, N4 etc., and N0 also or
thereafter requests of N1, randomized outgoing packet shuffling
for N0's packets (sent from N0 to N1).
- this leaves ultimate logical routing control in the hands of N0
- latency escalation (over a multi hop route) should be estimable
by N0
- ultimate (effective) network topology may be simpler to reason
about, control and analyze
B. N0 links to N1, and simply hands off all routing decisions for
all packets to N1.
- This might be viable if N1 is a known friend node.
- In this routing protocol, N0 still needs to nego QoS requests
with N1, to establish what total volume (in and/ or out) and
what b/w rates, N1 is willing to make available to N0, and for
what durations.
- We must always keep in mind that meat space 'known friends',
may well be using hardware/ software which is compromised
(unknown to the friend).
- These protocols don't have to operate mutually exclusively to one
another - they can be used in parallel, along with other routing
protocols, such as strict N0 controlled end to end routes.
- We must not mistake the feeling of control ("ACKed requests"),
with actual control.
When we say N0 ultimately makes and therefore "controls" all
routing decisions/ routing types used, what we really mean is, N0
"specifies" all routing types it is willing to use, within each
of its respective "link establishment requests".
- We of course must also always keep in mind that we are talking
virtual links, not physical links, and also quite possibly
adversarial peer nodes.
In the virtual (let alone phys) networking space, a node N1 (at
least for suitable QoS link requests if non adversarial) may of
its own accord make "randomized" routing decisions or aka
"routing decisions, for N0's packets, outside of any specific
requests by N0", and such "N1 primary authority" decisions may be
adversarial to N0, supportive of N0, or have some other basis.
Of course, iqnets core does the right/ assumed best thing by
default - we simply consider all possibilities which may be
ultimately faced in any actual network.
Re randomized fan outs, here is a bit of a conundrum/ potential
opportunity - in the balance between various options available to us:
- Does it make sense for N0 to leave certain routing decisions to
another node in its route?
- Is the "fan out + randomize" concept identifiably useful for
certain use cases?
- For say N2 to do a randomized fan out in on incoming packets from
N0 (say via N1), N2 will have to buffer the incoming packets over
time period units of T, so that it has > 1 packet to on- send in
a randomized fashion;
this naturally introduces latency - which of course is
acceptable, even desirable, depending on use case - we're now
conceptually heading into random latency/ high latency mix net
design territory.
Latency
- an important consideration which the above paper effectively
raises is:
- the latency effect on route establishment, and
- the latency effect on packet traversal through established
routes,
for different switching/ routing models.
This consideration needs more thought, especially in relation to
various networking (i.e. end user app) use cases.
--------------------------
Alert: incoming thought, must get it down before it flees my lonely
neurone.
Headroom, or rather resource, reservation requests:
- N0 could make "headroom" reservation requests of another node.
- Is this the same as simply a chaff filled link? No.
A resource reservation request is an "in advance of being used"
request for a node to reserve or keep aside some resource, on my
behalf until I need to use that resource, according to params
e.g. "reserve for T time period", resource magnitude X, etc
E.g.:
- bandwidth reservation (I want to d/l a 4GiB movie, I just don't
have time right now, please reserve that for me, which I would
like to use in the next 5 days)
- low latency link reservation (I want you to always reserve at
least 1 telephone call worth of low latency link, on my behalf,
for when I want to make phone calls (and of course hand out the
rest as you choose)
- cache reservation, although without further thought, I prefer
the undertaking/promise model
- such reservation requests perhaps make most sense between meat
space friends, but there's of course no reason to limit such
reservation requests to any particular node type
More information about the cypherpunks
mailing list