XSF Discussion - 2018-10-19


  1. pep.

    > -- XHTML-IM probably I laughed

  2. pep.

    Come on conversations, let me copy the whole message

  3. Maranda pats pep. consolingly.

  4. Yagiza

    Hello!

  5. Yagiza

    How do you feel about writing a XEP for file transfer via UDP?

  6. SamWhited

    Why UDP?

  7. Zash

    Isn't there a Jingle UDP transport already?

  8. Zash

    Might be meant for real time media I guess

  9. Zash

    TFTP over XMPP?

  10. Link Mauve

    I’ve already used it for a video game.

  11. Link Mauve

    But it can lose or reorder packets, you’d need an additional protocol on top of it to make it behave like TCP.

  12. Link Mauve

    At which point, why don’t you use TCP instead?

  13. flow

    Yagiza, https://xmpp.org/extensions/xep-0176.html ?

  14. Yagiza

    flow, yes

  15. Yagiza

    flow, right now it can't be used for file transfer. But we can write a XEP for it.

  16. flow

    Yagiza, why can't it be used for file transfer?

  17. Yagiza

    flow, because we need a way to provide reliability when using UDP.

  18. Zash

    SCTP over DTLS over UDP?

  19. Zash

    Like ... WebRTC?

  20. SamWhited

    Yagiza: what use case do you ahve for using UDP with some application level reliability stuff that you couldn't just use TCP for?

  21. fippo

    zash: old fashioned, quic is the next big thing ther

  22. fippo

    xep-0343 provides a mapping of the sdp stuff to jingle

  23. Yagiza

    SamWhited, when entities are behind NAT (common case) the need a relay to use TCP. Using a relay make them depend on the realy. UDP could be used directly without a relay.

  24. Zash

    Why isn't there a XEP for bittorrent?

  25. Zash

    Yagiza: DUP hole punching stuff?

  26. fippo

    yagiza: that is true only ~70% of the time.

  27. Zash

    Didn't that need an outside 3rd party anyway?

  28. Link Mauve

    Zash, you know I’ve wanted to write one? :D

  29. Yagiza

    Zash, there is no problem in finding a public STUN server over internet. There are hundreds of them. But it's a real problem to find TURN or even SOCKS5 server.

  30. fippo

    because those things are expensive.

  31. Zash

    Don't a lot of XMPP servers provide a XEP-0065 SOCKS5 proxy for this?

  32. Yagiza

    Zash, there are not so many people, who want to run a server, which channels are used by unknown people.

  33. Zash

    Yagiza: [citation needed]

  34. Yagiza

    Zash, yes. Nowadays it's hard to find a public working XEP-0065 server.

  35. Zash

    Only because everyone's using HTTP upload instead

  36. fippo

    because xep-65 proxies are expensive to run too?

  37. Zash

    Link Mauve: Do it. I think I've even got a mod_bittorrent tracker somewhere.

  38. Link Mauve

    Zash, but as a XEP or as a BEP, or both?

  39. Zash

    :D

  40. Yagiza

    fippo, yes. Unlike a STUN server.

  41. Maranda

    Yagiza: "public"?

  42. Yagiza

    Maranda, yes.

  43. Maranda has proxy65 runnin' on his service 🤔

  44. Yagiza

    Maranda, most of working XEP-065 servers caould be used only with accounts, registered on the server where it hosted.

  45. Maranda

    Ah of course

  46. Yagiza

    Maranda, so, they re private.

  47. Zash

    But then they don't get the green checkmark on https://compliance.conversations.im/

  48. fippo

    yagiza: stun servers cost < 1000 bytes per call.

  49. Yagiza

    fippo, yeah.

  50. Yagiza

    fippo, that's why they could be preferred over relays.

  51. Maranda

    Yagiza: well it would be not very *cool* to have an open socks5 proxy either tbh

  52. Yagiza

    Maranda, yes. And that's why it's a good idea to transfer files over UDP.

  53. fippo

    yagiza: that is what ice (rfc 5245 / xep-0176) does. try everything, prefer the cheapest

  54. Yagiza

    fippo, I didn't find a way of using UDP thru NAT without a relay described in RFC 5245.

  55. fippo

    yagiza: that is what stun does in that context. you gather public ips, then do holepunching. works 70% of the time

  56. Zash

    70% of the time it works every time

  57. fippo

    unless you are in chrome where it depends on the direction of the connection -- but google folks won't bother investigating :-)

  58. Yagiza

    fippo, hey! Don't mix srflx and relay addresses. You won't be able to establish a TCP connection with srflx candidates and UDP do not provide reliability!

  59. fippo

    yagiza: ice-tcp doesn't work for p2p, that is well-known.

  60. Yagiza

    fippo, yes! So we go back to my first sentence.

  61. fippo

    yagiza: FYI: i am running a hundreds of turn servers all around the world.

  62. Yagiza

    fippo, we need a XEP for using UDP for file transfer.

  63. Zash

    Oh, can you anycast such?

  64. fippo

    yagiza: run it over ice if you want it to work. jingle also has a raw udp mode but i doubt anyone bothers anymore

  65. Yagiza

    fippo, are they free to use?

  66. fippo

    yagiza: no.

  67. Yagiza

    fippo, and that's enough to think they are not exist.

  68. fippo

    yagiza: would you please explain that to the people sending me bills for datatransfer over their network?

  69. Yagiza

    fippo, why do I need that?

  70. fippo

    i would prefer not to pay those bills :-)

  71. Yagiza

    fippo, yes. That's why I tell that we need a way to perform file transfer over UDP.

  72. Zash

    There is no such thing as a free byte

  73. fippo

    yagiza: https://www.twilio.com/stun-turn/pricing -- just to give you an impression of cost. they make a good margin on that...

  74. Yagiza

    Zash, yes. That's why we need to save traffic thru servers. 'cause their owners do not want pay for other people's traffic.

  75. Zash

    Yagiza: *networks*

  76. Zash

    Bandwidth usage costs too

  77. fippo

    yes. that is why using TURN is only a fallback in ice.

  78. Yagiza

    fippo, yes. But it's impossible to use TCP in ICE without TURN when entities are behind their NAT's.

  79. Yagiza

    fippo, so once again: we need a way to perform file transfer with UDP.

  80. Zash

    Yagiza: Write the XEP then? :)

  81. fippo

    yagiza: use xep-0343 which runs over ice.

  82. Yagiza

    Zash, yes. That's what I suggest.

  83. fippo

    https://github.com/legastero/jingle-interop-demos/ -- the stanza.io demo allowed that five years ago.

  84. Yagiza

    fippo, thanx. I'll investigate it.

  85. fippo

    i wouldn't be surpised if that particular version was broken due to changes in webrtc.

  86. Yagiza

    fippo, but I guess relying on things like WebRTC is not a good idea at all. We can just create a simple transport protocol just to provide reliability when sending data stream over UDP.

  87. fippo

    yagiza: people didn't come up with RFC 5245 (or its successor) for fun.

  88. Link Mauve

    edhelas, have you tested Movim against these five clients, btw?

  89. Link Mauve

    Yagiza, another benefit of WebRTC is that you suddenly are compatible with web clients too.

  90. Link Mauve

    Of which there are actually quite a few already.

  91. Yagiza

    fippo, what do you mean?

  92. fippo

    yagiza: NATs are a bit more complicated to traverse than you expect

  93. Yagiza

    fippo, NATs are easily traversed by ICE. Do I suggest not to use ICE for NAT traversing or something?

  94. fippo

    yes.

  95. Yagiza

    fippo, please, sho me the place where I told such things.

  96. fippo

    if you don'T like browsers, there are libs like https://github.com/rawrtc/rawrtc or https://github.com/jlaine/aiortc/

  97. fippo

    yagiza: ah... i missed a "not". but you keep saying "udp" and ice is not just udp

  98. Yagiza

    fippo, I strongly suggest using ICE for NAT traversing. And that's why I suggest to make a XEP for file transfer over UDP.

  99. fippo

    yagiza: 0343 + 0234

  100. fippo

    (0234 can use 0176, 0343 provides datachannels for reliability)

  101. Yagiza

    fippo, ok. If you think WebRTC is the best way to provide reliability over UDP, let's agree on this.

  102. fippo

    technically what provides reliability is sctp over dtls over sctp but saying its webrtc leaves a hole for quic to sneak in :-)

  103. Yagiza

    I just don't like so many unfamiliar abbreviations. It suggests me that each of them add some overhead.

  104. fippo

    it was easier in the old days of ircs DCC

  105. Yagiza

    fippo, yeah. I used DCC, but never thought about how it works.

  106. Ge0rG

    DCC was notoriously broken with NAT. And then you had mod_conntrack_irc and then you connected to a non standard port and it was all bad again.