XSF Discussion - 2019-06-26


  1. cc

    cc

  2. rion

    fippo: now I realize who you are. nice to meet you! :-D

  3. fippo

    not very active anymore but hey, small world :-)

  4. flow

    fippo, you write that "Now transport-replace is difficult... XEP-0260 uses this in odd ways to fallback from s5b to ibb.", But when I look at the sequence diagram in xep260 § 3. I don't see any oddities, seems perfectly reasonable to use transport-replace(IBB) for the IBB fallback. I would expect that this can also be applied to fallback from ICE (xep371) to IBB, or am I wrong?

  5. Ge0rG

    is xmpp.net melting down currently?

  6. Ge0rG

    jonas’: can you kick it gently?

  7. jonas’

    I don’t have any power there

  8. Zash

    Ge0rG: Melting?

  9. Ge0rG

    Zash: I'm running into a 504 Gateway Time-out

  10. Ge0rG

    ...when submitting 404.city s2s

  11. Ge0rG

    which my prosody also fails to connect to, apparently due to "connection closed"

  12. fippo

    flow: 0260 does a "try, determine failure, fallback" approach. ICE does the equivalent (even though not falling back to ibb) in parallel, potentially using a inferior transport (i.e. a relay) for some time. results in a better ux

  13. Zash

    works for me

  14. Ge0rG

    Zash: ah, it closes after/during TLS handshake

  15. Ge0rG

    hm. works from my desktop PC

  16. Zash

    Is that ejabberds way of telling you it doesn't like your cert?

  17. Ge0rG

    works with openssl s_client. doesn't work from prosody

  18. Zash

    https://xmpp.net/result.php?domain=404.city&type=server

  19. Ge0rG

    this is taking very long to load

  20. Ge0rG

    and also runs into the 504

  21. rion

    fippo: as @zinid said s5b has to be forgotten in favor of TURN/ICE

  22. Zash

    rion, why?

  23. fippo

    rion: well, ICE doesn't offer any ibb-fallback. Even though I would still be scared of any attempt to run a videochat over ibb :)

  24. rion

    Zash: it's mainstream now

  25. Zash

    And isn't it already forgotten in favor of HTTP upload?

  26. Daniel

    S5b meaning si file transfer or the jingle mechanism?

  27. rion

    Jingle allows to fallback from ice to ibb theoretically or to http or vice verca

  28. Daniel

    I don't see anything wrong with the jingle mechanism

  29. fippo

    zash: never declare a protocol obsolete, dead or forgotten. because what happens then is that people start using it

  30. rion

    Daniel: jingle is more or less fine but its s5b is not

  31. Zash

    fippo so dead == ready for enterprise deployment? 🙂

  32. Daniel

    rion: what's wrong with s5b?

  33. rion

    Daniel: read my remarks on wiki

  34. Daniel

    Link?

  35. rion

    https://wiki.xmpp.org/web/XEP-Remarks/XEP-0260:_Jingle_SOCKS5_Bytestreams_Transport_Method

  36. rion

    fippo: > ICE doesn't offer any ibb-fallback Do you mean ICE xep? I see transport-replace as more general purpose approach then transport specific. Currently in Psi I added kind of transport features. like if it's slow and/or reliable etc. And an application declares which features are compatible or preferable with it (still work in progress though). So jingle core mechanism can build kind of transports priority list from just compatible transports and do replace properly.

  37. rion

    IBB will never be selected for the RTP application :)

  38. fippo

    rion: more correctly, ice doesn't specify a candidate format for xmpp ibb. only udp and tcp transports

  39. rion

    fippo: in theory ibb allows to open substreams. so it can have one for RTP and one for RTCP. candidates are not needed.

  40. flow

    Daniel, TURN sould be used instead of (peseudo) socks5 proxies, no matter if legacy XMPP stream initiation, or jingle

  41. flow

    fippo, but from an XMPP jingle point-of-view, the jingle ICE transport chould be replaced with an IBB transport, no?

  42. flow

    fippo, Maybe I understand your statement wrong, so there is nothing odd with how xep260 specifies the fallback from S5B to IBB?

  43. flow

    (context for those who wonder: https://github.com/xsf/xeps/pull/793#issuecomment-505792574)

  44. fippo

    flow: i don't think this kind of scenario has seen much practical use otherwise the questions rion asked would have been asked earlier

  45. flow

    fippo, is that really so? If we consider a world with S5B replaced with TURN, and legacy SI replaced with Jingle, why not keep the door open for IBB fallback as last resort?

  46. flow

    I think the questions did not come up earlier because rion can be considered an early-adopter, at least of the FOSS community

  47. fippo

    flow: it ends up being a question of maintenance cost. ibb fallback is cool but do you need to implement it to be compliant?

  48. ralphm

    I think IBB for any kind of media transfer, real-time or not, results in unwanted pressure on servers' routing and interference with 'regular' stanzas. This starts hurting quickly with increasing numbers of users.

  49. fippo

    also IBB wreaks havoc with rate limiting mechanisms (i.e. jabberds karma)

  50. ralphm

    So although it might work, I'd explicitly strongly recommend against it.

  51. flow

    fippo, Isn't a transport-replace(IBB) replacing a previous ICE tranpsort compliant?

  52. fippo

    flow: it is. but do we have a spec saying "try transports in this order"?

  53. flow

    fippo, do we need one?

  54. fippo

    flow: how do you know whether ice is better than raw-udp or ibb?

  55. ralphm

    From XEP-0176: * In Jingle, lists of "preferred" candidates are typically sent in the Jingle session-initiate and session-accept messages, in a way that is consistent with the SDP offer / answer model described in RFC 3264 [5] and the process described in ICE-CORE. * Candidates can also be sent in separate transport-info messages either before sending the session-accept message (to expedite negotiation) or after media begins to flow (to find modify existing candidates, find superior candidates, or adjust to changing network conditions).

  56. rion

    btw fallback from S5B to IBB works perfectly in Psi. but it would be nice to have some recommendation in XEP. like if your file is bigger than 100kb please avoid the fallback to IBB. Or maybe even checking props via server disco about current speed limits, stanzas burst mode etc.

  57. ralphm

    I also would like the ability for a server to (ahem) "discourage" this beyond a certain size.

  58. flow

    fippo, I may be mistaken, but ICE would potentially include TURN as far as I can tell. So it appears to be the natural higher priority transport mechanism with IBB as fallback

  59. flow

    ralphm, I am not sure if xep176 is really important here, given that it xep371 is expected to supersede xep176

  60. fippo

    flow: but ibb is not part of ice (which has its internal rules/priorities) but a different transport

  61. flow

    fippo, I know, that's why I talking abut transport-replace(IBB), replacing the XMPP Jingle ICE transport with the XMPP Jingle IBB transport

  62. ralphm

    Well, hah, so far nobody's cared enough for XEP-0371 to move forward, but yes. I also don't think it changes the idea behind the quoted text.

  63. fippo

    flow: and we certainly agree that ice is better than ibb. but i don't see a spec for that

  64. ralphm

    And indeed I'd put IBB at priority 0, but the problem I see is that a server doesn't have an easy way to not want to support it.

  65. fippo

    ralphm: it can provide a terrible experience to any user that uses it? :-)

  66. Zash

    How complicated is ICE to implement for an XMPP server?

  67. jonas’

    STUN would be a good start

  68. ralphm

    fippo: as well as all other users

  69. Zash

    TURN STUN ICE so many acronyms!!!

  70. rion

    Zash: do you mean integrate with any existing turn server?

  71. fippo

    ralphm: I assume servers do provide rate limiting :-)

  72. ralphm

    Zash: you can use an existing TURN/STUN server. Like coturn.

  73. rion

    it's matter of providing proper authentication to turn. that's it

  74. Zash

    And now you doubled the complexity of the installation procedure.

  75. ralphm

    And then look at implementing Jingle Nodes

  76. fippo

    zash: in general you don't want that. IM servers have completly different deployment patterns (200ms latency due to centralization for the whole world) is ok but for turn servers you want them in many datacenters around the world

  77. rion

    fippo can tell a lot about turn auth :)

  78. Zash

    Auth stuff already exists afaik

  79. ralphm

    So indeed, don't reimplement a TURN server, but provide an easy way to use them (Jingle Nodes).

  80. rion

    Zash: yes. xmpp servers should tell turn server about auth keys.

  81. fippo

    zash: prosody even has a module for xep-0215 :-)

  82. ralphm

    I'm literally writing a blog post on how we did this at VEON.

  83. rion

    ralphm: waiting for a link :)

  84. ralphm

    rion: noted

  85. Zash

    fippo: Me, with my single user self-hosting in my basement, now need to deploy things to multiple data centers?

  86. ralphm

    What, no.

  87. fippo

    zash: send 1$ to twilio each month instead

  88. ralphm

    At VEON we had one in Russia and one for the rest of the world. As you scale up, you geographically (network wise) add more.

  89. ralphm

    Just run coturn next to prosody, and you'll be fine.

  90. Zash

    Is that going to work if it runs behind a NAT?

  91. fippo

    if you know your external ip that can be configured

  92. ralphm

    Also note that you don't provide TURN for others, it is for your (users) benefit. Your contacts should use their own.

  93. ralphm

    Zash: you need to be able to reach it, of course (single port), and for relaying you do need to open up additional ports so that your peer can connect to it.

  94. ralphm

    (typically a range of UDP ports)

  95. ralphm

    So, say you run this at home, you'd have your NAT pass on the traffic for that port range (udp, and 3478, udp and tcp).

  96. rion

    Is there any XEP like Last Message Correction but to delete a message including mam?

  97. Zash

    There's a proto-xep in the inbox I think

  98. Zash

    Inbox isn't rendered?

  99. Zash

    rion https://github.com/xsf/xeps/blob/master/inbox/message-retraction.xml

  100. rion

    thx.

  101. rion

    huh added almost 2 years ago. what's wrong with it?

  102. moparisthebest

    well Barbra Streisand tried it in 2003 and it didn't work out very well

  103. Zash

    Check standards archives and council logs from around that time?

  104. Zash

    Hm, was those logs lost in the crash?

  105. rion

    I see there is no notifications to other resources or muc participants about the retraction. So it's kind of incomplete

  106. Zash

    It should work the same as LMC?

  107. rion

    ah other resources will be notified with carbons.

  108. rion

    honestly I don't like the LMC idea. I'd prefer for changes to a message to be in place instead of a patch as it's for LMC.

  109. dwd

    moparisthebest, :-)

  110. pep.

    rion, what do you want to do exactly?

  111. Zash

    rion: It's not a patch, or do you mean that the old message is still in MAM for everyone? You know you can't really delete anything in an open system?

  112. Zash

    And that's probably why the retraction xep was not accepted.

  113. Zash

    You can't un-say something. Can't reverse time.

  114. pep.

    Does reversing time also reverse your actions?

  115. rion

    Just imagine I'm writing to my mistress something quite private and after sending a message I discover it's was a chat dialog with my wife! Fine, I can delete/correct the message. But fu** she can see the previous message from MAM. what??

  116. Zash

    Can't prevent clients from keeping the "deleted" message and sticking a blinking red border around it

  117. pep.

    rion, maybe she wouldn't be able to. Her client would

  118. Zash

    Same as if you say something to their face

  119. Zash

    Can't un-say something.

  120. Zash

    Stop trying to break the laws of physics and causality

  121. rion

    would be better if I could :)

  122. Zash

    You can't

  123. Zash

    Deal with it

  124. rion

    nooo!

  125. Zash

    Not in an open system.

  126. pep.

    Even then.. people take pictures of pictures nowadays..

  127. rion

    Zash: and yes I have to be honest with my wife..

  128. pep.

    good

  129. pep.

    Or you can claim plausible deniability

  130. Zash

    Claim temporary insanity

  131. dwd

    So it looks, to me, that message-deletion was almost accepted, but had its name changed as a result of council feedback - but I can't see it actually getting rejected.

  132. pep.

    Somebody not following up?

  133. dwd

    It was four years ago, though. But I think the general feel back then was that as long as we called it "retraction" and not "deletion", it'd be OK.

  134. dwd

    pep., Very hard to tell. I suspect it fell through the inter-council gap.

  135. pep.

    There was also a thread about something similar a few months ago iirc

  136. dwd

    pep., If by a few months ago, you mean 2016...

  137. pep.

    I'm not sure, I think it was by one of the russian fellows

  138. pep.

    Trying to copy signal or telegram or something like that

  139. pep.

    There was no XEP proposed, just a discussion

  140. dwd

    Oh, yeah, Andrew Nenakhov mentioned it I think.

  141. ralphm

    Even in Whatsapp, deleting a message at the remote party is a request, and if the remote app doesn't process it within (I think) 7 days, the request expires and the message stays.

  142. Zash

    How do you test TURN/STUN/STUFF/ICE?

  143. Lance

    Testing that connections work, or that candidates are generating?

  144. Lance

    There's https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ if you want to test candidate gathering is handing out the right things

  145. Zash

    Okay. It does something.

  146. ralphm

    Yay?

  147. Zash

    What's the state of XEP-0215 (client) implementations?

  148. Zash

    I see there was a version bump to :2 at some point

  149. fippo

    lance removed it from talky I think (boo lance!) and it seems jitsi uses :1

  150. ralphm

    Zash: were you trying to use it for discovering your TURN server?

  151. Zash

    ralphm: I'm wondering why I did this, what I can use it with.

  152. ralphm

    Well, you might want to look at XEP-0278 (Jingle Nodes), which besides discovery also handles authentication and requesting a channel.

  153. ralphm

    This is what we used in VEON, likely also because the author (Thiago) was one of the team members :-D

  154. Lance

    Talky will be getting 215 back soon. Have to finish writing patch for extdisco prosody mod first to generate service entries/credentials via an event instead of pulling from static config file

  155. Zash

    I went with https://modules.prosody.im/mod_turncredentials.html but it implements :1

  156. Zash

    Seems to magically Just Work tho

  157. Yagiza

    Daniel, is registration ID a local device ID?

  158. lovetox

    its a device ID

  159. lovetox

    im not sure what you mean by local

  160. lovetox

    you generate it for the user on first use

  161. fippo

    zash: sadly i don't remember why we bumped the namespace even

  162. Lance

    :2 added support for server pushing updated services/credentials to clients that had requested them

  163. lovetox

    where do you get the word registration ID from?

  164. lovetox

    lib signal?

  165. Yagiza

    lovetox, I mean that we have a local device ID, which we generated ourself and remote device IDs, generated by other devices, which we discover via PEP.

  166. lovetox

    yeah and libsignal has also something similar they call it registrationID

  167. lovetox

    in my lib i just set it to None and ignore it

  168. Yagiza

    lovetox, that's what my question was. If "registration ID" is local "device ID" in terms of libsignal-protocol.

  169. lovetox

    but maybe you can use that, if i look through the code its actually just a value stored in libsignals objects

  170. lovetox

    i dont see it doing somewhere something specific

  171. Yagiza

    lovetox, I need to specify it when calling session_pre_key_bundle_create() to create a pre key bundle.

  172. lovetox

    yes pass the device id there

  173. Yagiza

    lovetox, ok, thanx.

  174. Yagiza

    Well

  175. Yagiza

    What should be wrapped in <key/> elements? Serialized ciphertext_message?

  176. lovetox

    yes

  177. Yagiza

    And then I must deserialize it with signal_message_deserialize?

  178. lovetox

    maybe, in my python port of the lib this call loos like this PreKeyWhisperMessage(serialized=message)

  179. lovetox

    but yes you obviously have to deserialize it somehow

  180. Yagiza

    So, session_cipher is the only thing, which describes a session.

  181. Yagiza

    And I must use the only session_cipher for both encoding outgoing and decoding incoming messages?

  182. lovetox

    yes

  183. lovetox

    and as you before asked key element wraps the ciphertext serialized

  184. lovetox

    but of course you should not forget about base64 encoding it first

  185. lovetox

    signallib does not do this for you

  186. ralphm

    Lance: oh, right. But clients should already know when to update, cause of expiry. Is this for premature expiry, like a turn server restart?

  187. Lance

    :2 added expiration attribute too. It was for server restarts and forcing move to new instance, yes

  188. Zash

    https://cerdale.zash.se/upload/ylN-_jalmw_Dvpuh/xep-0215-diff.html

  189. Zash

    Gah, things detecting that stdout isn't a terminal and disabling color :(

  190. Zash

    https://cerdale.zash.se/upload/YxG91XYKo9S47ZSd/xep-0215-diff.html Now then?