The problem is that this will collapse (say) 10 times sooner than in a non-P2P network (assuming 10 hops).

Plus, getting the round-trip time estimation right is going to be that much harder the more hops there are, leading to spurious retransmission. After all, each hop is likely, on average, to transit a fair chunk of the Internet if the P2P network is global. With hop-by- hop RTT estimation, you at least have a chance to re-use the same set of "links" reasonably frequently, e.g., to finger table neighbors, so that RTT estimates are at least plausible. Each end-to-end path will be one-off, so that the RTT can only be worst-case, and that has to be significantly larger than the initial TCP estimate, given that you're traversing good spans of the Internet several (but unknown number of) times.

Betting that all messages are small seems like a dangerous gamble. We lost that one before. (Not just SIP - who would have thought that DNS messages could become fairly substantial?)

Dropping messages mid-stream is a great way to design a protocol that doesn't meet the reliability requirements that "competition" with client-server mechanisms requires, and makes diagnosis really hard, as you could have failures that depend on who is asking the question, and other random behavior (e.g., which replica is being asked for). P2P systems are hard enough to debug without adding more obscure failure modes.

My opinion is to either to do it right or not to do it at all. Trying to cut corners now, to show how "simple" designing transport is, will just lead to regret later. We've been there, and some of us don't care to re-visit that place.

In general, we're in great danger of designing a protocol that is far more complicated than needed for the simple URL-to-IP address mapping (you don't need "kinds" and customizable policies for that...), yet insufficient to handle anything more demanding.

Henning

On Apr 7, 2009, at 10:09 PM, Bruce Lowekamp wrote:

I think that if messages are typically only a few (<= 3) fragments, we
can safely ignore this issue.  If the loss rate is high enough that it
matters, the network will collapse anyway.  Also remember that what
happens is there's a retransmission of all of the fragments, which
might waste some traffic, but the receiver can still have the other
fragments waiting, so they're not completely useless.

OTOH, if messages are going to typically be even larger (or need to
deal with higher loss rates), I would favor fixing the problem
end-to-end, not through hop-by-hop reliability.   I hesitated adding
the minimal semi-reliability to the proposal I wrote up.  It's just a
lot of complexity and latency added for something that I'm not sure is
a good addition to the overall stability of the network.

It's important to be willing to drop traffic mid-network.  That's the
only way the network can shed load.  The senders will back off.
(Currently they back off in a per-transaction question.  It's an
interesting question whether they should do more.)

Bruce


On Mon, Apr 6, 2009 at 11:16 PM, Salman  Abdul Baset
<[email protected]> wrote:
Are you saying hop-by-hop reliability is not needed? A received message is
useless unless all fragments are reliably received.

If indeed hop-by-hop reliability is needed, then the link layer analogy is
unfortunately not right.

-s

On Mon, 6 Apr 2009, Bruce Lowekamp wrote:

Fortunately, reliability is not important for the overlay link
protocol.  It's a link layer.

Bruce


On Mon, Apr 6, 2009 at 2:02 PM, Salman Abdul Baset <[email protected] >
wrote:

TFRC is a congestion control protocol. What is intended is a reliable
congestion control protocol over UDP, which does not exist as a
specification. Reliability cannot merely be sprinkled on top of TFRC or
any
congestion control protocol.

-s

On Mon, 6 Apr 2009, Bruce Lowekamp wrote:

Yes, that's a valid option. Probably the right one at this point. In
fact, the solution space as I last sent it out looks like:

- stop and wait
- simplified AIMD
- TFRC
- (TCP over UDP might go here if a draft existed)
- TCP

The argument has mostly been about the simplified AIMD.  I kind of
hate to lose it, but you're right, it will be a lot less controversial if we do. Actually, TFRC is a pretty flexible protocol itself, so we can probably just do something a bit more within that framework if we
want to have options.

stop and wait was always intended as maybe a development-type
protocol, not a real deployable protocol (although it would work OK in
a small office environment)

Bruce


On Mon, Apr 6, 2009 at 9:18 AM, Brian Rosen <[email protected]> wrote:

Is "use TCP when it works, and TRFC when it doesn't" an answer?
Arguments like "it's too complex" don't work for me when we're talking
transport protocols that have to do congestion control, etc.
 Congestion
control is complex.

Brian

-----Original Message-----
From: [email protected] [mailto:[email protected]] On
Behalf
Of
Lars Eggert
Sent: Monday, April 06, 2009 5:20 AM
To: Bruce Lowekamp
Cc: Salman Abdul Baset; [email protected]
Subject: Re: [P2PSIP] Solution space for fragmentation, congestion
control
and reliability

Hi,

On 2009-4-6, at 6:07, Bruce Lowekamp wrote:

We have the option of simpy saying "use TFRC." That will be good enough performance, and require relatively little specification since
TSV has already put a lot of work into it.  It's also a bit
complicated. A lot more complicated than is really needed for most
p2psip implementations/deployments.

So the motivation of the other options was to provide simpler options
that are going to provide enough performance for many/most
deployments.

I'd strongly urge you to use TFRC rather than rolling your own scheme. Don't underestimate the validation effort that is required to ensure
that
a
congestion control scheme is safe to deploy. This has all been done for
TFRC, and it must be done for any new scheme.

Lars






_______________________________________________
P2PSIP mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/p2psip

_______________________________________________
P2PSIP mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/p2psip

Reply via email to