Open backkem opened 11 months ago
Here's some thoughts on making OSP-C open to other uses:
agent-capability
for send-data
and receive-data
(or just a symmetric exchange-data
). To allow an agent to support only simple message passing. E.g.: ibelem/local-peer-to-peer#13.agent-capability
for protocol-handoff
and an accompanying message that allows the entire QUIC connection to be handed off for tunneling another protocol once agent authentication is complete, E.g.: a QuicWebTransport. Either using the same connection or opening a new one with a different ALPN (as done in p2p-webtransport). Though, the latter may not require negotiation at all.Some notes on the "OSP Connection" side of things:
I opened this ticket to continue the exploration of splitting the OSP protocol up into parts: a Connection spec and a Messaging spec.
OSP Connection (OSP-C) The connection spec would contain mDNS discovery and the authentication step to exchange TLS.
It may be worth exploring if the OSP-C protocol can be defined independent from OSP use. Pushing all OSP specific pieces to the OSP-M spec, such as the values used for
_openscreen._udp.local
mDNS queries.OSP Messaging (OSP-M) The messaging spec would contain the CBOR message delivery, presentation, remote playback and streaming protocols. The spec should probably define a normative way of layering OSP-M on top of OSP-C + QUIC. Likewise, this spec would likely define how a potential OSP-over-Matter is wired up.
OSP stack overview I made an overview of what the stack may look like after such a split:
Local Peer-to-Peer (LP2P) considerations Since the group is exploring synergies with the Local Peer-to-Peer proposal, I wanted to quickly touch on that. One way to see the LP2P proposal is also in two pieces: A connection establishment between devices and a transport/messaging API. This is quite similar to the above. I explore this below.
Browser P2P connection I made an overview of what the stack may look like after such a split:
Browser P2P networking I made an overview of what the stack may look like after such a split:
For this overview I used the suggestion from ibelem/local-peer-to-peer#11 to use the WebTransport API and layered a simple messaging protocol on top for ease-of-use.
Sidenote: I think it would be great if the QUIC + WebTransport approach extended to WebRTC as once proposed by p2p-webtransport.