Repository navigation
Partially address #342 and #343. - #378
markafoltz wants to merge 3 commits into
Conversation
| who are in phyiscal proximity to both agents (i.e., browser and receiver | ||
| device). For that reason, discovery mechanisms that rely on phyical proximity | ||
| such as WiFi or the display of a QR Code are good candidates to implement these | ||
| mechanisms. If an [=OSP agent=] is discovered by another solely by communicaiton |
There was a problem hiding this comment.
Nit: spelling (communicaiton).
| provides one such implementation using multicast DNS (mDNS). | ||
|
|
||
| [=OSP agents=] are intended to support interactive media experiences to users | ||
| who are in phyiscal proximity to both agents (i.e., browser and receiver |
| Application Protocol should meet the following functional requirements: | ||
|
|
||
| 1. Support the bi-directional sending and receiving of [=OSP messages=]. | ||
| 1. Support the simultaneous and bi-directional [=OSP message streams=]. There |
There was a problem hiding this comment.
Nit: "the" is superfluous in this first sentence IIUC.
| Screen Network Protocol, which provides a way for browsers and devices to | ||
| discover, connect, and authenticate each other on a local area network. | ||
| connection technologies between browsers and devices. There are guidelines on | ||
| how allow browsers and devices should discover one another, and requirements |
There was a problem hiding this comment.
Typo:
| how allow browsers and devices should discover one another, and requirements | |
| how browsers and devices should discover one another, and requirements |
|
|
||
| Issue(342): Define Discovery Requirements | ||
| Discovery mechanisms between [=OSP agents=] should provide sufficient information to | ||
| initiate an network data transport between them, typically by obtaining an IP |
There was a problem hiding this comment.
| initiate an network data transport between them, typically by obtaining an IP | |
| initiate a network data transport between them, typically by obtaining an IP |
| connection alive for the purposes of sending or receiving messages, the | ||
| connection should be closed. | ||
|
|
||
| In order to keep a [=OSP connection=] alive, an agent may send an |
There was a problem hiding this comment.
| In order to keep a [=OSP connection=] alive, an agent may send an | |
| In order to keep an [=OSP connection=] alive, an agent may send an |
| [=agent-status-request=] message, and any agent that receives an | ||
| [=agent-status-request=] message should send an [=agent-status-response=] | ||
| message. Such messages should be sent with enough frequency to prevent the | ||
| underlying transport from closing from inactivity. |
There was a problem hiding this comment.
The QUIC-specific parts removed here (close with error code 5139, 25 s idle_timeout transport parameter, do not use QUIC PING frames, reset the idle timer on every stream write) are not in network.bs. network.bs lines 393-395 only say "periodically sending data". Can these move to the Network Protocol so implementers still have them?
| underlying transport from closing from inactivity. | ||
|
|
||
| Note: An idle timeout of 25 seconds is recommended. If an [=OSP agent=] does | ||
| not send or receive a message within that period, it shoul send an an |
There was a problem hiding this comment.
| not send or receive a message within that period, it shoul send an an | |
| not send or receive a message within that period, it should send an |
| If an [=OSP agent=] suspends its [=OSP connections=] (e.g. for power saving | ||
| reasons), it should attempt to resume [=OSP connections=] to the [=OSP agents=] | ||
| to which it was previously connected when possible. Once reconnected, it should | ||
| send `agent-status-request` messages to those agents. |
There was a problem hiding this comment.
| send `agent-status-request` messages to those agents. | |
| send [=agent-status-request=] messages to those agents. |
| [=OSP messages=] in order, they must be sent in one [=OSP message stream=]. | ||
| Independent groups of [=OSP messages=] (with no ordering dependency across | ||
| groups) should be sent in different [=OSP message streams=]. In order to put | ||
| multiple CBOR-serialized messages into the the same [=OSP message stream=], the |
There was a problem hiding this comment.
| multiple CBOR-serialized messages into the the same [=OSP message stream=], the | |
| multiple CBOR-serialized messages into the same [=OSP message stream=], the |
|
Some notes, beyond the points @baylesj raised:
|
|
FWIW, I happened to do an experimental version of the Application Protocol in TypeScript over DataChannels/WebTransport earlier (note: that's before I saw this PR): https://github.com/backkem/go-lp2p/tree/main/osp-app#osp-app . It's just meant as a testing ground. If there is interest we could make it more rigorous. |
This PR partially addresses issues in the application protocol specification after the split from the network specification.
After the split there are two main areas to fix.
To decouple the application protocol from QUIC, this PR defines an OSP transport, OSP stream, and an OSP message. It lists some requirements to be an OSP transport and then rewrites other places in the spec to refer to these concepts instead of QUIC.