XMPP Council - 2017-09-28

  1. moparisthebest

    dwd, so are you saying we should drop ALPN from the spec or just change it into a MAY ?

  2. moparisthebest

    because I'm opposed to the first and fine with the second :)

  3. dwd

    What does ALPN provide that is required for interop?

  4. moparisthebest

    when you want to easily multiplex a port

  5. moparisthebest

    a big corporation has IPs to spare, maybe, and doesn't need it, for personal servers you do

  6. dwd

    Yes, sure. ALPN is useful for multiplexing ports. Why is it required for interop with direct TLS?

  7. dwd

    Or to put it another way, why is it specifically useful for direct TLS?

  8. moparisthebest

    if you remove it from the spec then as a server operator I cannot multiplex easily

  9. dwd

    What does multiplexing have to do with direct TLS?

  10. moparisthebest

    because alpn is built into direct TLS and specifically for multiplexing?

  11. dwd

    Well, put it this way - right now, nobody much seems to be implementing it, and yet it works fine.

  12. dwd

    Lots of TLS options and extensions might be useful in XMPP. But we don't specify many of them - so what makes ALPN something we want to call people out for non-conformance on?

  13. Zash

    What is the purpose of direct tls?

  14. moparisthebest

    conversations implements it which is why it works so well

  15. Zash

    Is it to get through your company firewall?

  16. moparisthebest

    I don't think you call them non-conformant, but as a server operator I need to be able to run nginx and prosody on the same port, so I need alpn

  17. dwd

    Zash, That's an interesting question, yes.

  18. moparisthebest

    the odd client that doesn't send alpn is ok because of SRV records they just fall back

  19. Zash

    To me it looks way too much like a premature squeezing of all services into port 443 because ... reasons.

  20. moparisthebest

    everyone else is doing it :)

  21. moparisthebest

    I agree it's crappy we have to run everything over TLS on 443 to connect

  22. moparisthebest

    but also not supporting that won't change anything, people just won't use XMPP

  23. dwd

    I really doubt that. But even if not, it's not clear that ALPN belngs in *this* spec.

  24. peter shakes his fist at the evil NATs along with all the other Internet purity people and then returns back to reality

  25. Zash

    Nice things be unattainable.

  26. peter

    These days if you want just about anything to work, you have to (sometimes) run it on 443. Same for TURN servers etc.

  27. Zash

    So therefore we must embrace it and put everything on 443.

  28. moparisthebest

    dwd, at least for me the spec is 100% useless without alpn

  29. daniel

    I'm very much for keeping alpn as may

  30. moparisthebest

    I have to multiplex on 443, and so do lots of other servers

  31. daniel

    Otherwise you can only differentiate on domain basis

  32. Zash

    moparisthebest: which leads back to the question of its purpose

  33. daniel

    And that's not good enough in some scenarios

  34. moparisthebest

    it has multiple purposes, my personal purpose is to evade shitty firewalls I encounter

  35. moparisthebest

    now someone else might only want it for 0-RTT or something, in which case maybe alpn isn't needed

  36. Zash

    What is the problem statement? Does this require ALPN to solve?

  37. moparisthebest

    but, if they need multiplexing, it still is

  38. dwd

    daniel, There's literally no difference between MAY and removing it entirely.

  39. dwd

    daniel, I mean, there's absolutely nothing in XMPP which rules ou using any TLS extension at all.

  40. Zash

    If you do direct TLS you need SNI, since you can't use the initial stream 'to' attr anymore to select certificates

  41. daniel

    dwd, ok optional then

  42. Zash

    Assuming name based certificate selection is a thing you do

  43. daniel


  44. SamWhited

    The current wording (SHOULD) seems perfectly reasonable to me. If the client sets it and it's not used by the server, no big deal. If the client doesn't set it and the server needs it though, that ends poorly. Just tell clients to set it and be done with it.

  45. dwd

    daniel, Right, "OPTIONAL" and "MAY" are equivalent terms.

  46. dwd

    SamWhited, If ALPN's a "SHOULD", I don't think we're in a position to advance it. That's fine if that's what we want.

  47. daniel

    may would have the benefit that if servers and client end up implementing it the at least use the same value. which would allow us to raise it to a should again if we see that people are using it

  48. moparisthebest

    I tend to prefer SHOULD, a server operator can feel more comfortable requiring it then

  49. daniel

    MAY over not specifing it at all i mean

  50. Zash

    MAY is the default? or like, inherited from all the TLS RFCs?

  51. moparisthebest

    daniel, I haven't checked but it's faster to just ask, does conversations.im require ALPN ?

  52. daniel

    moparisthebest, no

  53. SamWhited

    dwd: That seems fine to me. Is it just that we need another open source implementation? I think I have one I just never published that should be "production ready", I can probably push it this weekend if that's all that's needed.

  54. jonasw

    SamWhited, I think server-side support is also lacking

  55. SamWhited

    Server side support doesn't really matter, does it? I mean, this is just saying "clients SHOULD set it because it doesn't hurt them at all and then it provides information that servers can use if they want to"

  56. moparisthebest

    how do you define 'implementation' ? this spec has quite a few parts to implement

  57. daniel

    i think one of my customers requires it. because we are running an http server on the same ip with the same host name

  58. daniel

    but conversations.im has the http server on a different ip

  59. moparisthebest

    you've got client support, then server c2s support, then server s2s as client and server s2s as server support

  60. daniel

    but that's not an option everywhere. ipv4 is getting rare

  61. moparisthebest

    so I count 4, "parts"

  62. moparisthebest

    with alpn, I can host an xmpp server with full c2s and s2s support and http or whatever on a single port, with ipv4 getting harder to find that seems useful

  63. daniel

    I don't see the point of hosting s2s on the same port. but c2s + http is a valid argument

  64. moparisthebest

    so I could see a future host that sells you a dedicated server, but a shared IP and shared port 443, and you get to add your own alpn/sni rules for it

  65. moparisthebest

    sounds awful but without ipv6 also seems inevitable

  66. jonasw

    I see a future where we get IPv6

  67. jonasw rocks forward and backward in a corner

  68. Zash

    s/ipv6/ip/; s/ipv4/legacy ip/

  69. jonasw

    Zash, thank you

  70. dwd

    SamWhited, Right now it's saying all implementations, so clients, servers, C2S and S2S.

  71. moparisthebest

    jonasw, I *hope* for that future but, well, I also hope for a future where everything doesn't need shoved through TLS on 443

  72. moparisthebest

    I'm in the continue to hope, but also do what you can now camp :)

  73. moparisthebest

    dwd, I don't see a reason to have different rules for s2s and c2s, just overcomplicates things

  74. moparisthebest

    right now you can send it or not, I say leave it that way

  75. Zash

    moparisthebest: I'm not sure that writing a spec for shoving everything on 443 is the best way to make that come true

  76. daniel

    you don't need to handle alpn on an *incoming* s2s or c2s connection. but that's obvious I guess

  77. jonasw

    daniel, don’t you? what if s2s and c2s live on the same port?

  78. moparisthebest

    again Zash you really are much more of an optimist than me if you think not supporting that will push people to open other ports rather than to abandon xmpp :)

  79. daniel

    jonasw, fair enough

  80. jonasw

    moparisthebest, I don’t think that IPv4 depletion is an argument here

  81. Zash

    moparisthebest: optimist? "being draged kicking and screaming into a future I don't want" is what I was going for

  82. jonasw

    some corporate firewalls may very well be

  83. jonasw

    but I’m not confident that ALPN will help there in the long run

  84. moparisthebest

    user of public wifi in coffee shop: "hi owner-of-coffee-shop, my xmpp client can't connect from here, can you unblock port 5222?" owner of coffee shop: "what's xmpp and what's a port?"

  85. jonasw

    Zash, you just put how I feel in words better than I could have done it :-)

  86. Ge0rG

    moparisthebest: owner of coffee shop: "stop that dirty talk! I call the police"

  87. daniel

    moparisthebest, and that assumes the owner is even around…

  88. jonasw

    moparisthebest, as I said, c2s makes sense, s2s doesn’t too much

  89. jonasw

    and this doesn’t have anything to do with IPv4 depletion.

  90. moparisthebest

    right, more likely you are talking to the 16 year old behind the counter who's never met the owner

  91. moparisthebest

    jonasw, it's the same code and everything though, it seems more complicated to only support it for c2s and not s2s meh

  92. moparisthebest

    what if you are running your xmpp server on your laptop from a coffee shop???? >:)

  93. jonasw

    moparisthebest, the difference is that you don’t need to require support for ALPN from servers in that case. Since they will only ever be listening on a single port which would be a candidate for ALPN (the c2s-port), they don’t need to distinguish protocols.

  94. moparisthebest

    maybe your server doesn't, but maybe someone else's server does, what's the argument against it other than "I don't think it needs it" ?

  95. jonasw

    moparisthebest, is there an S2S-ALPN-capable XMPP server implementation?

  96. moparisthebest

    which of the 3 server side parts? haha

  97. moparisthebest

    sslh covers 2 of 3 parts

  98. moparisthebest

    dwd's metre could have alpn added rather easily I think

  99. jonasw

    moparisthebest, sslh isn’t an XMPP server, right?

  100. moparisthebest

    metre isn't either I guess

  101. Zash

    ssl/ssh multiplexer thingymajibber

  102. moparisthebest

    the combination implements it though, I don't see a difference really

  103. SamWhited

    dwd: that still seems perfectly fine to me. I don't see a problem with just setting it even if it's not used, and if there really is a serious problem (option to try and avoid firewalls that inspect that field or something) then that's why it's a SHOULD, they can ignore it if they *really* need too.

  104. moparisthebest

    that's basically it, it's super handy to have unless you are trying to evade firewalls, and then you can just not send it, and still be compliant with spec

  105. moparisthebest

    evade packet inspecting firewalls that don't seem to exactly exist yet, but no doubt will

  106. daniel

    Does http have an official alpn value?

  107. moparisthebest


  108. moparisthebest

    http2 iirc

  109. Zash


  110. daniel

    Does browsers set it?

  111. Zash

    or http/1.1

  112. moparisthebest


  113. moparisthebest

    yea h2, and yes browsers set it

  114. moparisthebest

    not sure if they set http/1.1 at all