- From: Peter Thatcher <pthatcher@google.com>
- Date: Mon, 9 Dec 2013 11:00:58 -0800
- To: Roman Shpount <rshpount@turbobridge.com>
- Cc: Robin Raymond <robin@hookflash.com>, public-orca <public-orca@w3.org>
- Message-ID: <CAJrXDUFdew333SDj0+vHiA6z4ax6fjsEjBT7GVqdyFm4NjesNg@mail.gmail.com>
On Fri, Dec 6, 2013 at 8:35 AM, Roman Shpount <rshpount@turbobridge.com>wrote: > Few questions/comments: > > Plumbing of objects: > > a) Would this allow plain RTP and SCTP? If we can wire plain transports, > can we wire SCTP and RTP directly to ICE? > I think the answer to that is "no" for browsers. DTLS would still be required. Mobile apps and other endpoints could, of course, do whatever they want. > b) There is a current discussion going on about changing ICE consent with > DTLS consent. How would this work in ORTC if DTLS is optional? > > In general, ability to remove DTLS from the transport path would cause a > substantial security debate. It might be better to have ICE/DTLS transport > and provide new replacement transports in the future when they are > available and deemed secure. > > Again, I think the answer to that is "DTLS is not optional". > Sockets: I am not thrilled with the name (endpoint might be better) but I > think the concept is sound. I prefer this to fork/clone since it is closer > to what in happening under the hood and provides the more accurate > representation of what's going on. > > Shims: Having a shim on top of PeerConnection is nice as a proof of concept > but it always seemed of little value to me. Having a PeerConnection shim on > top of ORTC always seemed more important since it proved that all the same > functionality can be provided via ORTC. > > P.S. You ended up with two number 3 topics.... > > _____________ > Roman Shpount > > > On Fri, Dec 6, 2013 at 10:31 AM, Robin Raymond <robin@hookflash.com>wrote: > >> >> We have received some feedback / ideas on the current ORTC API that I >> wanted to run past this list based upon the last specification published. >> >> >> 1) plumbing of objects >> >> One of the main ideas that have been asked is if this API can become more >> of a wire plumbing API. Meaning instead of hiding the ICE transport or DTLS >> transport you could plumb them together. This is valuable for some features >> like having hot swappable backup transports, etc. >> >> They are not asking for ability to control packet level things as >> possible with CU-RTCWeb but more "attach this sender to that object" kind >> of stuff. >> >> The change proposed is instead of having a "RTCConnection", you'd have an >> ICE transport and a DTLS transport and you associate the two objects >> together and optionally re-wire the plumbing as you see fit. Likewise you'd >> have an SCTP object you'd wire to the transport where you could create data >> channels. The same object separation would apply to RTC sender / receiver >> doohickies as described below. >> >> >> 2) sender / receiver doohickies alignment >> >> Another issue is alignment with the current "sender / receiver >> Doohickies" in the 1.0. We could easily make RTC sender / receiver objects >> where you can wire their RTP stream outputs to the DTLS transport used. I'd >> like to see us move towards a common ground where possible (without >> triggering a hidden SDP negotiation obviously). One important note is to >> ensure we never add sender-exclusive controls to the receiver's doohickie >> thus allow a developer to use their own negotiation patterns (including but >> not limited to SDP). >> >> The change proposed is instead of adding / sending / receiving tracks >> directly from the "RTC Connection" you would create rtc sender / receiver >> objects, change any default parameters like SSRC and wire those objects to >> the DTLS transport. >> >> >> 3) socket objects - needed? >> >> There is still some debate if we need an "socket" level object or not >> that would be fed into the ICE transport object. As defined in ORTC, A >> "socket" object (perhaps poorly named) is an object that listens on all >> local socket interfaces for a given port and establishes virtual sockets on >> remote TURN transports to provide a list of local ICE candidates for the >> ICE transport. >> >> One factor in this debate is that allowing for forking scenarios you >> either need "socket"-like object to share across ICE transport or you need >> the ICE transport to have a "clone()" or "fork()" method where a hidden >> shared "socket" conceptual object is shared. I'm not sure which is more >> desirable considering the semantics of "clone()" / "fork()" don't really >> apply exactly 100% perfectly since any remote candidates on a forked ICE >> transport would not be cloned/forked to the copy as well. This could be >> argument to maintain the "socket" object, although perhaps making it >> auto-created for the simple case if the ICE transport is not provided one >> externally. >> >> >> 3) capabilities / simple negotiation helpers - need some work >> >> As generally noted before, we still have to work on the capabilities, >> constraints and negotiations. Anyone with proposals in this area are >> welcome but some ideas will be proposed in the next ORTC update. >> >> >> 4) rtc track descriptions with multiple SSRCs >> >> There is a desire to allow for various layering, FEC like features by >> describing each SSRC inside the track descriptions. >> >> >> 5) implications of plumbing on shims >> >> When the ORTC API was originally proposed, one of the key tenants was >> being able to have a dual shim with maximum compatibility possible. There >> was a desire to have a PeerConnection 1.0 to ORTC shim and an ORTC to >> PeerConnection 1.0 shim. This would allow ORTC to work on top of a current >> PeerConnect 1.0 implementation (as best possible simulated) and >> PeerConnection 1.0 API on work top of ORTC API to provide SDP like >> negotiation API backwards compatibility with the current 1.0 spec (as much >> as feasible or standardized). >> >> If we allow for plumbing/wiring feature, these 'wiring' features may not >> be possible it make the ORTC API shim work on top of the PeerConnection 1.0 >> API since these inner features are likely hidden even beyond the SDP >> manipulations possible. >> >> Questions: >> >> How important is having an ORTC API where every feature supported must >> work on 1.0 API? >> >> Can we live with a shim where some features are supported but other >> things are just not possible? (Meaning many use-cases will work but some >> things like hot-swapping DTLS to a new ICE transport) would not and these >> would be labelled "known limitations". >> >> >> If anyone has any feedback (or request for clarification) on any of these >> points, please provide them! >> >> Regards, >> Robin >> >> >> >
Received on Monday, 9 December 2013 19:02:07 UTC