My initial thoughts are pretty similar to Bruce's but more
importantly, I think routing is one of the things we need to hash out
as a WG and figure out what is best. I'm imagining a WG meeting where
we had a few people talk about the various possibilities, the pros and
cons of them, then made a sound engineering choice. I really look
forward to meetings like that - designing the RELOAD as an individual
draft is like working in a vacuum, which is fine other than you blood
boils and your head explodes.
One general strategy the authors have been taking is keep the base
protocol having the simplest of possible solutions but make sure that
one could allow extensions that allow better performance. The type of
suggestion you are talking about here of forking responses so they are
sent back on both a symmetric and direct path seems like something
that could be added as extension. There be a lot of things to consider
such as how much it improved the situation, congestion control, and
the security issues around it contributing to DOS attacks - typically
it is nice to design things to they don't have message amplification
but perhaps there would be some way to mitigate that in the scheme you
proposed.
Cullen <with my individual contributor hat on>
On Jun 20, 2008, at 9:11 AM, Bruce Lowekamp wrote:
jiangxingfeng 36340 wrote:
As for partition, what I see the peer could do after he knows
that is to
restart a join-like operation. The direct response and relay peer
work in
the partition situation in the same way as in other situations.
Am I missing
something?
You're right in that they work just as well as they do any other
time---when they work they work fine, but if they don't work (due
to NAT
filtering, etc), you still need the fallback to symmetric routing.
It seems that symmetric routing could work in all cases. In chord
algorithm, if the number of the nodes in the system above 1000, the
possible largest hops for a request would be larger than 10 hops.
IMO, symmetric routing will have lower success rate as the number
of hops increases, although I have no real data to support my
concern. On the other hand, the data to be looked up is distributed
around the overlay, so the number of hops will h
ave an appropriate even distribution within (0, log(N)]. Are you
sure symmetric routing could work well if the request need traverse
long hops? Are you sure the end-2-end retransmission mechanism
could make the transaction successful in the end?
The question comes down to whether the return path is likely to fail
over the interval of the response latency.
But before you answer that question, you have to consider whether
the outbound path is likely to work. That depends on the churn rate
of the overlay and the refresh/keepalive rate used by the peers.
Regardless of the answer to those questions, the response latency of
the return path is going to be lower than the keepalive rate*.
Therefore the outbound path is more likely to fail than the return
path.
From my survey of the literature, nearly all sources suggest that if
the churn rate is sufficiently high that the outbound query is
likely to be lost, the best solution is to fall back to iterative
routing so that the querying peer can ensure that at least some
progress is made in resolving the query.
So my answer to your question is that if the combination of churn
rate, path length, and path latency is high enough that symmetric
routing is likely to fail, you would already be having problems with
recursive forwarding of requests regardless of the return method
being used.
*I've seen some work on using incredibly fast keepalive timers to
try to improve overlay stability. I'm not convinced that the
benefits of building an overlay with unstable peers is worth the
benefit. I would much rather use an overlay algorithm that is more
careful in selecting which nodes can serve as peers.
What I suggest is to integrate symmetric routing mode, direct
response,
relay peer into an integral routing mechanism and could work more
efficient
than using a single candidate mechanism.
The decision the WG will have to make is whether the complexity of
additional routing mechanisms is worth the increased performance
(removing a few hops on the return path).
The benefit to me from direct response and relay peer alternatives
is not only removing a few hops. The more important one is to
improve the success rate of the transaction if the request need to
be traversed with large hops.
We tried to apply Occam's
Razor rather aggressively in evaluating features, and adding
additional
complexity to the protocol for these features seemed a bit
questionable,
at least for right now.
I don't see other alternatives introduce too much complexity. The
simplest way to integrate the three routing mechanisms is: the
original peer carries the relay peer and local interface address
information in the request and sends the request; the intermediate
peers record the via-list. When the destination receives the
request, it could compute how many hops the request traversed. If
the number of hops is large, it not only returns the res
ponse by using the symmetric routing, but also sends the response
by using the direct response or relay peer respectively.
I'm not suggesting that this is monumentally complex (actually, I
think locating a relay peer is very complex and needs a standalone
draft). Merely that I think the WG needs to look at what the
requirements for the protocol are and where it is worth adding
additional complexity/message size. This particular issue imposes
some additional message size and some additional processing on the
part of the responder, but it is merely one of quite a few such
issues.
Bruce
Now if you work in a world where NATs and firewalls don't exist, the
world would be different, of course.
_______________________________________________
P2PSIP mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/p2psip