PDA

View Full Version : [Jingle] transport fallbacks for stream transports


Robert McQueen
07-23-2008, 02:55 AM
At the summit we discussed how to fall back between things like SOCKS 5,
direct TCP connections[1] and IBB in order to find the most desirable
working stream transport between the two parties. Note that this is not
the same problem as negotiation (knowing before calling which transports
you have in common with the endpoint). We've got a separate idea for that.

My personal opinion is that "content-replace" action which is included
in XEP-0166, and shown in XEP-0234 is overkill, as well as having pretty
complicated/unclear semantics. It requires re-signalling the file
transfer metadata, when really all you're doing is trying to find a
working transport.

The proposal is to remove the "content-replace" action, and instead add
"transport-replace" to replace the transport *only* for an already
accepted content, and "transport-accept" so that the other party can
agree to this change.

Regards,
Rob

1: I think we want a Jingle transport description for direct TCP
connections, because we'll need it on link-local XMPP, and if we have
working fallbacks then trying a direct connection first isn't going to
cost much.
2: I think we should rename "reliable" and "unreliable" in XEP-0166 to
"stream" and "datagram", in the same vein as BSD socket type. I wanted
to talk about the dependability (whether the transport can be expected
to work at all, ie direct TCP is undependable, but IBB is very
dependable) separate to the reliability guarantees, without ending up
saying "reliable unreliable" or "unreliable reliable" transports. :)

Peter Saint-Andre
07-28-2008, 03:50 AM
Robert McQueen wrote:
> At the summit we discussed how to fall back between things like SOCKS 5,
> direct TCP connections[1] and IBB in order to find the most desirable
> working stream transport between the two parties. Note that this is not
> the same problem as negotiation (knowing before calling which transports
> you have in common with the endpoint). We've got a separate idea for that.
>
> My personal opinion is that "content-replace" action which is included
> in XEP-0166, and shown in XEP-0234 is overkill, as well as having pretty
> complicated/unclear semantics. It requires re-signalling the file
> transfer metadata, when really all you're doing is trying to find a
> working transport.
>
> The proposal is to remove the "content-replace" action, and instead add
> "transport-replace" to replace the transport *only* for an already
> accepted content, and "transport-accept" so that the other party can
> agree to this change.

As discussed at the XMPP Summit, I'm +1 on this change.

> 1: I think we want a Jingle transport description for direct TCP
> connections, because we'll need it on link-local XMPP, and if we have
> working fallbacks then trying a direct connection first isn't going to
> cost much.

Like "raw-tcp"?

> 2: I think we should rename "reliable" and "unreliable" in XEP-0166 to
> "stream" and "datagram", in the same vein as BSD socket type. I wanted
> to talk about the dependability (whether the transport can be expected
> to work at all, ie direct TCP is undependable, but IBB is very
> dependable) separate to the reliability guarantees, without ending up
> saying "reliable unreliable" or "unreliable reliable" transports. :)

+1, will fix.

/psa

Dirk Meyer
07-28-2008, 10:44 AM
Peter Saint-Andre wrote:
> Robert McQueen wrote:
>> At the summit we discussed how to fall back between things like SOCKS 5,
>> direct TCP connections[1] and IBB in order to find the most desirable
>> working stream transport between the two parties. Note that this is not
>> the same problem as negotiation (knowing before calling which transports
>> you have in common with the endpoint). We've got a separate idea for that.

That separate idea could be ice-tcp except that ice uses TURN and not
SOCKS as one fallback. But the basic ideas of ice-tcp to detect where
we are and what kind of firewall/NAT we have is important.

>> The proposal is to remove the "content-replace" action, and instead add
>> "transport-replace" to replace the transport *only* for an already
>> accepted content, and "transport-accept" so that the other party can
>> agree to this change.
>
> As discussed at the XMPP Summit, I'm +1 on this change.

I was neither on the summit nor have I a vote but the content-replace
also bothered me we implementing jingle-streams. transport-replace
sounds much better.

>> 1: I think we want a Jingle transport description for direct TCP
>> connections, because we'll need it on link-local XMPP, and if we have
>> working fallbacks then trying a direct connection first isn't going to
>> cost much.
>
> Like "raw-tcp"?

Sounds good to me.


Dischi

--
ACK and you shall receive.

Peter Saint-Andre
07-28-2008, 04:06 PM
Dirk Meyer wrote:
> Peter Saint-Andre wrote:
>> Robert McQueen wrote:
>>> The proposal is to remove the "content-replace" action, and instead add
>>> "transport-replace" to replace the transport *only* for an already
>>> accepted content, and "transport-accept" so that the other party can
>>> agree to this change.
>> As discussed at the XMPP Summit, I'm +1 on this change.
>
> I was neither on the summit nor have I a vote but the content-replace
> also bothered me we implementing jingle-streams. transport-replace
> sounds much better.

FYI, we tend to use "+1" in an informal way to indicate support for an
idea. In fact only the XMPP Council members have an official vote on
advancing specifications to Draft/Final/etc., but on this list we're not
officially voting, just providing our opinions.

/psa