XSF Discussion - 2013-05-06


  1. Lance

    was there any consensus at the last summit about how to go about dealing with jingle and webrtc? i dont remember

  2. Lance

    i'm remaking conversat.io using stanza.io instead of socket.io, and im at the point of having to parse and translate SDP. ick

  3. stpeter

    ah

  4. stpeter

    Lance: interesting topic

  5. stpeter

    Lance: there are several possible approaches

  6. stpeter

    (1) Jingle as-is, with server-side gateway or translation to SDP

  7. stpeter

    (2) a new content-type that would allow us to place SDP directly into a Jingle message (instead of the current payload types)

  8. stpeter

    (3) SIP/SDP over XMPP, a.k.a. SOX (where the SIP headers are probably minimal, what we care about is the SDP)

  9. Lance

    I'd prefer #2, except SDP combines the content and transport description, so we wouldn't be able to use the normal jingle pattern

  10. stpeter

    right

  11. stpeter

    it gets ugly

  12. Lance

    #1 isn't bad IF you have access to the raw data

  13. stpeter

    no matter which way you go

  14. Lance

    but the browser doesn't expose that

  15. Lance

    i'm probably just going to parse the stuff myself and do the translation

  16. stpeter

    I lean toward #3 despite the fact that it's perhaps the ugliest of the bunch, because I think it would work in all cases (just use XMPP as the transport layer for SIP/SDP)

  17. Lance

    true

  18. Lance

    but ugh, so ugly

  19. stpeter

    yeah

  20. stpeter

    believe me, I know

  21. Lance

    and then we're going to want to do data channels over webrtc

  22. Lance

    so jingle file transfers will have the same problem/solution

  23. stpeter

    data channels as in screen sharing and the like?

  24. Lance

    as in sharing raw data

  25. stpeter

    ah

  26. stpeter

    ok

  27. stpeter

    bytestreamy things

  28. Lance

    you can already do screen sharing via video

  29. stpeter

    yes

  30. Lance

    so if we go with SOX to solve the video problem for now, we've doomed jingle to obsolescence

  31. stpeter

    pretty much, yes :(

  32. stpeter

    which is why I haven't written it up for general consumption yet

  33. stpeter

    on the other hand, you can't exactly say that Jingle has taken the world by storm

  34. stpeter

    and everyone has moved to using SDP, despite the fact that it's icky

  35. stpeter

    in WebRTC etc.

  36. stpeter

    so the question is, what do we do?

  37. stpeter

    server-side gateways and translators have their own challenges

  38. stpeter

    with state management and such

  39. stpeter

    so that leaves us with <jingle> wrappers around SDP, or SoX

  40. stpeter

    #2 does away with most of what is good about Jingle (separation of description from transport)

  41. stpeter

    and leaves only the barest of the state machine

  42. stpeter

    and that state machine might not even really apply very well if the payload of the <jingle/> element is SDP

  43. stpeter

    I haven't worked out that model, but it worries me a bit

  44. stpeter

    I grant that SOX is utterly ugly, but it's pragmatic

  45. stpeter shrugs

  46. Lance

    at this point, minting a <sdp /> element sounds reasonable. and just iq set back and forth, leaving the state management to whatever SDP processor is in use

  47. Lance

    which is pretty much exactly the pattern in use for webrtc

  48. stpeter

    I lean toward <message/> so it can be forked if needed, but right

  49. stpeter

    IMHO we might need or want to include some minimal SIP headers (e.g., if there's a gateway or translator in the middle it can add a Via header)

  50. stpeter

    but the SIP headers would pretty much be dummied up

  51. Lance

    would that really be needed in the content going over xmpp? not added by the receiver?

  52. stpeter

    I grant that we might want separate <sip/> and <sdp/> elements under the <sox/> element

  53. Lance

    or

  54. Lance

    use shim

  55. stpeter

    well, if we look at SOX as a pure tunneling solution then yes, I think we'd want both SIP and SDP in there

  56. stpeter

    I freely grant that it's even uglier than sending plain SDP :P

  57. stpeter

    I need to think about it a bit more

  58. Lance

    maybe, but it's already there. depends on how many headers you expect to be adding

  59. Lance

    ^ referring to shim

  60. stpeter

    ah

  61. stpeter

    I admit that I haven't thought about using SHIM here

  62. Lance

    I think I'd prefer it, just to keep the sip an extra arm length's away

  63. stpeter

    heehee

  64. stpeter

    in practice, do folks have a standalone SDP library to call, or would they just hand the SIP/SDP off to an RTC library of some kind?

  65. Lance

    that's what i'm looking up now

  66. stpeter

    GMTA!

  67. stpeter

    my sense has been the latter

  68. stpeter

    but I haven't researched it

  69. Lance

    not seeing anything noteworthy in python to process SDP

  70. Lance

    maybe gstreamer

  71. stpeter

    yeah

  72. stpeter

    I think most libs bundle SIP and SDP together

  73. Lance

    yep

  74. stpeter

    that's what I saw and heard

  75. stpeter

    which also has led me down the SoX road

  76. stpeter

    the SoX road is paved with good intentions :-)

  77. Lance

    certainly

  78. stpeter

    unfortunately we know where such roads lead ;-)

  79. Lance

    but it's just a short step to it being SIMPLEoX

  80. stpeter

    no!

  81. stpeter

    I disagree

  82. stpeter

    SoX for audio/video and XMPP for everything else - messaging, presence, etc.

  83. Lance

    if we can keep it constrained to that, then great

  84. stpeter

    and that's if you have an XMPP-only endpoint

  85. Lance

    i just have nightmares of, we're already including these sip headers, just add this other one

  86. stpeter

    I see the world going to CUSAX -- combined use of SIP and XMPP, with SIP for audio/video and XMPP for messaging, presence, groupchat, etc. -- that's why I've been working on https://datatracker.ietf.org/doc/draft-ivov-xmpp-cusax/

  87. stpeter

    IMHO, SOX is only for XMPP-only endpoints

  88. Lance

    right

  89. stpeter

    Lance: think about it some more and let me know what conclusions you reach

  90. stpeter

    Lance: I might need to write up the SoX idea here soon...

  91. Lance

    stpeter: do you have any examples for what a typical payload would be for sox?

  92. stpeter

    maybe :-)

  93. stpeter fishes around

  94. stpeter

    sorry, IRL interrupt

  95. stpeter

    ok

  96. stpeter

    where was I? ;-)

  97. stpeter

    Lance, you'd probably have something like this... <message from='romeo@example.net/orchard' to='juliet@example.com'> <sox xmlns='urn:xmpp:sox:0'> INVITE sip:juliet@example..com sip/2.0 Via: SIP/2.0/tcp example.net;branch=z9hG4bK1602341dcb7 From: <sip:romeo@example.net>;tag=0019 To: <sip:juliet@example.com> Contact: <sip:romeo@example.net>;gr=orchard Call-Info: <xmpp:romeo@example.net>;purpose=impp Call-ID: 0019aa04-50550007-660c7034-529a811b Date: Mon, 6 May 2013 21:27:24 GMT User-Agent: foo CSeq: 101 INVITE Max-Forwards: 70 Expires: 180 Allow: ACK,BYE,CANCEL,INVITE Content-Type: application/sdp Content-Length: nnnn v=0 o=<username> <ntp> <ntp> IN IP4 <client_ip> s=SoX Media Setup c=IN IP4 <client_ip> t=0 0 m=audio 9000 RTP/AVP 105 106 121 a=rtpmap:105 opus/48000/2 a=fmtp:105 maxplaybackrate=16000; sprop-maxcapturerate=16000; maxaveragebitrate=24000; stereo=1; useinbandfec=1; usedtx=0 a=rtpmap:106 iLBC/8000 a=ptime:40 a=maxptime:40 a=recv-source 1,2,3 a=rtpmap:121 mix/90000/1 a=fmtp: 121 105/106 a=sendrecv </sox> </message>

  98. Lance

    thanks!

  99. stpeter

    not sure about the SIP and SDP details

  100. stpeter

    I'll need to review those more carefully

  101. stpeter

    might need to at least write up a document this evening, for my own thinking if nothing else

  102. stpeter

    but for now I need to jet home in time for my next conference call

  103. stpeter

    well, not *literally* jet of course ;-)

  104. Lance

    have fun!

  105. stpeter

    always! ;-)

  106. stpeter disappears in a puff of smoke